On Mon, Apr 12, 2021 at 8:15 AM Roy Sun <Roy.Sun@xxxxxxx> wrote: > > Add interface to get the mm clock, temperature and memory load > > Signed-off-by: Roy Sun <Roy.Sun@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 50 +++++++++++++++++++++++++ > include/uapi/drm/amdgpu_drm.h | 12 ++++++ > 2 files changed, 62 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > index b2e774aeab45..e5b16e0819ce 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > @@ -971,6 +971,56 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) > } > ui32 /= 100; > break; > + case AMDGPU_INFO_SENSOR_UVD_VCLK: > + /* get mm vclk in Mhz */ > + if (amdgpu_dpm_read_sensor(adev, > + AMDGPU_PP_SENSOR_UVD_VCLK, > + (void *)&ui32, &ui32_size)) { > + return -EINVAL; > + } > + ui32 /= 100; > + break; > + case AMDGPU_INFO_SENSOR_UVD_DCLK: > + /* get mm dclk in Mhz */ > + if (amdgpu_dpm_read_sensor(adev, > + AMDGPU_PP_SENSOR_UVD_DCLK, > + (void *)&ui32, &ui32_size)) { > + return -EINVAL; > + } > + ui32 /= 100; > + break; > + case AMDGPU_INFO_SENSOR_HOTSPOT_TEMP: > + /* get junction temperature */ > + if (amdgpu_dpm_read_sensor(adev, > + AMDGPU_PP_SENSOR_HOTSPOT_TEMP, > + (void *)&ui32, &ui32_size)) { > + return -EINVAL; > + } > + break; > + case AMDGPU_INFO_SENSOR_EDGE_TEMP: > + /* get current edge temperature */ > + if (amdgpu_dpm_read_sensor(adev, > + AMDGPU_PP_SENSOR_EDGE_TEMP, > + (void *)&ui32, &ui32_size)) { > + return -EINVAL; > + } > + break; > + case AMDGPU_INFO_SENSOR_MEM_TEMP: > + /* get current memory temperature */ > + if (amdgpu_dpm_read_sensor(adev, > + AMDGPU_PP_SENSOR_MEM_TEMP, > + (void *)&ui32, &ui32_size)) { > + return -EINVAL; > + } > + break; > + case AMDGPU_INFO_SENSOR_MEM_LOAD: > + /* get memory load */ > + if (amdgpu_dpm_read_sensor(adev, > + AMDGPU_PP_SENSOR_MEM_LOAD, > + (void *)&ui32, &ui32_size)) { > + return -EINVAL; > + } > + break; > default: > DRM_DEBUG_KMS("Invalid request %d\n", > info->sensor_info.type); > diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h > index 8b832f7458f2..484c72e17c72 100644 > --- a/include/uapi/drm/amdgpu_drm.h > +++ b/include/uapi/drm/amdgpu_drm.h > @@ -780,6 +780,18 @@ struct drm_amdgpu_cs_chunk_data { > #define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_SCLK 0x8 > /* Subquery id: Query GPU stable pstate memory clock */ > #define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_MCLK 0x9 > + /* Subquery id: Query GPU mm vclk */ > + #define AMDGPU_INFO_SENSOR_UVD_VCLK 0xa > + /* Subquery id: Query GPU mm dclk */ > + #define AMDGPU_INFO_SENSOR_UVD_DCLK 0xb > + /* Subquery id: Query junction temperature */ > + #define AMDGPU_INFO_SENSOR_HOTSPOT_TEMP 0xc > + /* Subquery id: Query edge temperature */ > + #define AMDGPU_INFO_SENSOR_EDGE_TEMP 0xd > + /* Subquery id: Query memory temperature */ > + #define AMDGPU_INFO_SENSOR_MEM_TEMP 0xe > + /* Subquery id: Query Memory load */ > + #define AMDGPU_INFO_SENSOR_MEM_LOAD 0xf + Tom Please provide a link to patches for some userspace tool which uses these new queries. Something like umr would be a logical choice. Once you have that, the patch itself looks good to me. Alex > /* Number of VRAM page faults on CPU access. */ > #define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E > #define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F > -- > 2.31.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx