Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/radeon: add a GPU reset counter queryable by userspace

Userspace will be able to tell whether a GPU reset occured by comparing
an old referece value of the counter with a new value.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Marek Olšák and committed by
Alex Deucher
72b9076b c6e7e4bb

+9 -1
+1
drivers/gpu/drm/radeon/radeon.h
··· 2435 2435 atomic64_t vram_usage; 2436 2436 atomic64_t gtt_usage; 2437 2437 atomic64_t num_bytes_moved; 2438 + atomic_t gpu_reset_counter; 2438 2439 /* ACPI interface */ 2439 2440 struct radeon_atif atif; 2440 2441 struct radeon_atcs atcs;
+2
drivers/gpu/drm/radeon/radeon_device.c
··· 1725 1725 return 0; 1726 1726 } 1727 1727 1728 + atomic_inc(&rdev->gpu_reset_counter); 1729 + 1728 1730 radeon_save_bios_scratch_regs(rdev); 1729 1731 /* block TTM */ 1730 1732 resched = ttm_bo_lock_delayed_workqueue(&rdev->mman.bdev);
+2 -1
drivers/gpu/drm/radeon/radeon_drv.c
··· 90 90 * CS to GPU on >= r600 91 91 * 2.41.0 - evergreen/cayman: Add SET_BASE/DRAW_INDIRECT command parsing support 92 92 * 2.42.0 - Add VCE/VUI (Video Usability Information) support 93 + * 2.43.0 - RADEON_INFO_GPU_RESET_COUNTER 93 94 */ 94 95 #define KMS_DRIVER_MAJOR 2 95 - #define KMS_DRIVER_MINOR 42 96 + #define KMS_DRIVER_MINOR 43 96 97 #define KMS_DRIVER_PATCHLEVEL 0 97 98 int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); 98 99 int radeon_driver_unload_kms(struct drm_device *dev);
+3
drivers/gpu/drm/radeon/radeon_kms.c
··· 576 576 if (radeon_get_allowed_info_register(rdev, *value, value)) 577 577 return -EINVAL; 578 578 break; 579 + case RADEON_INFO_GPU_RESET_COUNTER: 580 + *value = atomic_read(&rdev->gpu_reset_counter); 581 + break; 579 582 default: 580 583 DRM_DEBUG_KMS("Invalid request %d\n", info->request); 581 584 return -EINVAL;
+1
include/uapi/drm/radeon_drm.h
··· 1038 1038 #define RADEON_INFO_CURRENT_GPU_SCLK 0x22 1039 1039 #define RADEON_INFO_CURRENT_GPU_MCLK 0x23 1040 1040 #define RADEON_INFO_READ_REG 0x24 1041 + #define RADEON_INFO_GPU_RESET_COUNTER 0x25 1041 1042 1042 1043 struct drm_radeon_info { 1043 1044 uint32_t request;