Browse Source

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>
Alex Deucher 11 năm trước cách đây
mục cha
commit
4535cb9cef
2 tập tin đã thay đổi với 9 bổ sung0 xóa
  1. 8 0
      drivers/gpu/drm/radeon/radeon_kms.c
  2. 1 0
      include/uapi/drm/radeon_drm.h

+ 8 - 0
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;

+ 1 - 0
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;