summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2014-10-01 11:26:50 -0400
committerAlex Deucher <alexander.deucher@amd.com>2015-03-19 12:26:42 -0400
commit4535cb9cefbc736b47bc1e7f8628065aba5ca0d7 (patch)
tree61ac646bcce16d863c023e05510200e735036ec7
parent353eec2ab229867d59a12375a48fc65e2d749e8b (diff)
downloadop-kernel-dev-4535cb9cefbc736b47bc1e7f8628065aba5ca0d7.zip
op-kernel-dev-4535cb9cefbc736b47bc1e7f8628065aba5ca0d7.tar.gz
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>
-rw-r--r--drivers/gpu/drm/radeon/radeon_kms.c8
-rw-r--r--include/uapi/drm/radeon_drm.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index cf7e54e..7b2a733 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -568,6 +568,14 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file
else
*value = rdev->pm.current_mclk / 100;
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:
DRM_DEBUG_KMS("Invalid request %d\n", info->request);
return -EINVAL;
diff --git a/include/uapi/drm/radeon_drm.h b/include/uapi/drm/radeon_drm.h
index de7ee21..871e73f 100644
--- a/include/uapi/drm/radeon_drm.h
+++ b/include/uapi/drm/radeon_drm.h
@@ -1037,6 +1037,7 @@ struct drm_radeon_cs {
#define RADEON_INFO_CURRENT_GPU_TEMP 0x21
#define RADEON_INFO_CURRENT_GPU_SCLK 0x22
#define RADEON_INFO_CURRENT_GPU_MCLK 0x23
+#define RADEON_INFO_READ_REG 0x24
struct drm_radeon_info {
uint32_t request;
OpenPOWER on IntegriCloud