drm/radeon: add support for read reg query from radeon info ioctl
This allows us to query certain registers from userspace for profiling and harvest configuration. E.g., it can be used by the GALLIUM_HUD for profiling the status of various gfx blocks. Tested-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
353eec2ab2
commit
4535cb9cef
|
@ -568,6 +568,14 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file
|
||||||
else
|
else
|
||||||
*value = rdev->pm.current_mclk / 100;
|
*value = rdev->pm.current_mclk / 100;
|
||||||
break;
|
break;
|
||||||
|
case RADEON_INFO_READ_REG:
|
||||||
|
if (copy_from_user(value, value_ptr, sizeof(uint32_t))) {
|
||||||
|
DRM_ERROR("copy_from_user %s:%u\n", __func__, __LINE__);
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
if (radeon_get_allowed_info_register(rdev, *value, value))
|
||||||
|
return -EINVAL;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
DRM_DEBUG_KMS("Invalid request %d\n", info->request);
|
DRM_DEBUG_KMS("Invalid request %d\n", info->request);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -1037,6 +1037,7 @@ struct drm_radeon_cs {
|
||||||
#define RADEON_INFO_CURRENT_GPU_TEMP 0x21
|
#define RADEON_INFO_CURRENT_GPU_TEMP 0x21
|
||||||
#define RADEON_INFO_CURRENT_GPU_SCLK 0x22
|
#define RADEON_INFO_CURRENT_GPU_SCLK 0x22
|
||||||
#define RADEON_INFO_CURRENT_GPU_MCLK 0x23
|
#define RADEON_INFO_CURRENT_GPU_MCLK 0x23
|
||||||
|
#define RADEON_INFO_READ_REG 0x24
|
||||||
|
|
||||||
struct drm_radeon_info {
|
struct drm_radeon_info {
|
||||||
uint32_t request;
|
uint32_t request;
|
||||||
|
|
Loading…
Reference in New Issue