[PATCH 4/6] drm/amdgpu: add AMDGPU_INFO_GB_ADDR_CONFIG query

Marek Olšák maraeo at gmail.com
Wed Jun 19 18:44:17 UTC 2024


The INFO ioctl was designed to allow increasing the sizes of all info
structures. GB_ADDR_CONFIG isn't that special to justify a separate
query.

Marek

On Wed, Jun 19, 2024 at 5:31 AM Christian König
<christian.koenig at amd.com> wrote:
>
> I would try to avoid that.
>
> Putting everything into amdgpu_info_device was a mistake only done
> because people assumed that IOCTLs on Linux are to expensive to query
> all information separately.
>
> We should rather have distinct IOCTLs for each value because that is way
> more flexible and we won't find later that we have to deprecate fields
> and work around issues because of legacy hw.
>
> Regards,
> Christian.
>
> Am 19.06.24 um 02:34 schrieb Marek Olšák:
> > I would put this into drm_amdgpu_info_device. That structure can grow in size.
> >
> > Marek
> >
> > On Tue, Jun 18, 2024 at 11:30 AM Pierre-Eric Pelloux-Prayer
> > <pierre-eric.pelloux-prayer at amd.com> wrote:
> >> libdrm_amdgpu uses AMDGPU_INFO_READ_MMR_REG to fill the dev->info.gb_addr_cfg
> >> value.
> >> Since this value is already known by the kernel, this commit implements a new
> >> query to return it.
> >>
> >> The libdrm MR to use this query is:
> >>     https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/368
> >>
> >> Signed-off-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
> >> ---
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 3 ++-
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 5 +++++
> >>   include/uapi/drm/amdgpu_drm.h           | 2 ++
> >>   3 files changed, 9 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> >> index f51f121d804e..403add7f05af 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> >> @@ -117,9 +117,10 @@
> >>    * - 3.56.0 - Update IB start address and size alignment for decode and encode
> >>    * - 3.57.0 - Compute tunneling on GFX10+
> >>    * - 3.58.0 - Add AMDGPU_IDS_FLAGS_MODE_PF, AMDGPU_IDS_FLAGS_MODE_VF & AMDGPU_IDS_FLAGS_MODE_PT
> >> + * - 3.59.0 - Add AMDGPU_INFO_GB_ADDR_CONFIG support
> >>    */
> >>   #define KMS_DRIVER_MAJOR       3
> >> -#define KMS_DRIVER_MINOR       58
> >> +#define KMS_DRIVER_MINOR       59
> >>   #define KMS_DRIVER_PATCHLEVEL  0
> >>
> >>   /*
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> >> index b32ff6e1baaf..dbb05d51682b 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> >> @@ -1256,6 +1256,10 @@ static int amdgpu_info(struct drm_device *dev, void *data, struct drm_file *filp
> >>                  return copy_to_user(out, &gpuvm_fault,
> >>                                      min((size_t)size, sizeof(gpuvm_fault))) ? -EFAULT : 0;
> >>          }
> >> +       case AMDGPU_INFO_GB_ADDR_CONFIG: {
> >> +               ui32 = adev->gfx.config.gb_addr_config;
> >> +               return copy_to_user(out, &ui32, min(size, 4u)) ? -EFAULT : 0;
> >> +       }
> >>          default:
> >>                  DRM_DEBUG_KMS("Invalid request %d\n", info->query);
> >>                  return -EINVAL;
> >> @@ -1310,6 +1314,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
> >>          case AMDGPU_INFO_VIDEO_CAPS:
> >>          case AMDGPU_INFO_MAX_IBS:
> >>          case AMDGPU_INFO_GPUVM_FAULT:
> >> +       case AMDGPU_INFO_GB_ADDR_CONFIG:
> >>                  need_runtime_pm = false;
> >>                  break;
> >>
> >> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
> >> index 3e488b0119eb..680492cd73d8 100644
> >> --- a/include/uapi/drm/amdgpu_drm.h
> >> +++ b/include/uapi/drm/amdgpu_drm.h
> >> @@ -933,6 +933,8 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow {
> >>   #define AMDGPU_INFO_MAX_IBS                    0x22
> >>   /* query last page fault info */
> >>   #define AMDGPU_INFO_GPUVM_FAULT                        0x23
> >> +/* Query GB_ADDR_CONFIG */
> >> +#define AMDGPU_INFO_GB_ADDR_CONFIG             0x24
> >>
> >>   #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
> >>   #define AMDGPU_INFO_MMR_SE_INDEX_MASK  0xff
> >> --
> >> 2.40.1
> >>
>


More information about the amd-gfx mailing list