History

drm/amdgpu: add an INFO query for monitoring VRAM CPU page faults

v2: bump the DRM version

Marek Olšák committed 9 years ago

Commit 68e2c5f1 parent 9156e725 files · +9 −1Browse files

Unified · Split

5 files
  1. drivers/gpu/drm/amd/amdgpu/amdgpu.h +1 −0
  2. drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +2 −1
  3. drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +3 −0
  4. drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +1 −0
  5. include/uapi/drm/amdgpu_drm.h +2 −0
drivers/gpu/drm/amd/amdgpu/amdgpu.h+1−0
@@ -1529,6 +1529,7 @@ struct amdgpu_device { · 1528 unmodified lines
1529 atomic64_t gtt_usage;1529 atomic64_t gtt_usage;
1530 atomic64_t num_bytes_moved;1530 atomic64_t num_bytes_moved;
1531 atomic64_t num_evictions;1531 atomic64_t num_evictions;
1532 atomic64_t num_vram_cpu_page_faults;
1532 atomic_t gpu_reset_counter;1533 atomic_t gpu_reset_counter;
1533 atomic_t vram_lost_counter;1534 atomic_t vram_lost_counter;
1534 1535
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c+2−1
@@ -66,9 +66,10 @@ · 65 unmodified lines
66 * - 3.14.0 - Fix race in amdgpu_ctx_get_fence() and note new functionality66 * - 3.14.0 - Fix race in amdgpu_ctx_get_fence() and note new functionality
67 * - 3.15.0 - Export more gpu info for gfx967 * - 3.15.0 - Export more gpu info for gfx9
68 * - 3.16.0 - Add reserved vmid support68 * - 3.16.0 - Add reserved vmid support
69 * - 3.17.0 - Add AMDGPU_NUM_VRAM_CPU_PAGE_FAULTS.
69 */70 */
70#define KMS_DRIVER_MAJOR 371#define KMS_DRIVER_MAJOR 3
71#define KMS_DRIVER_MINOR 1672#define KMS_DRIVER_MINOR 17
72#define KMS_DRIVER_PATCHLEVEL 073#define KMS_DRIVER_PATCHLEVEL 0
73 74
74int amdgpu_vram_limit = 0;75int amdgpu_vram_limit = 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c+3−0
@@ -417,6 +417,9 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file · 416 unmodified lines
417 case AMDGPU_INFO_NUM_EVICTIONS:417 case AMDGPU_INFO_NUM_EVICTIONS:
418 ui64 = atomic64_read(&adev->num_evictions);418 ui64 = atomic64_read(&adev->num_evictions);
419 return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;419 return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
420 case AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS:
421 ui64 = atomic64_read(&adev->num_vram_cpu_page_faults);
422 return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
420 case AMDGPU_INFO_VRAM_USAGE:423 case AMDGPU_INFO_VRAM_USAGE:
421 ui64 = atomic64_read(&adev->vram_usage);424 ui64 = atomic64_read(&adev->vram_usage);
422 return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;425 return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c+1−0
@@ -960,6 +960,7 @@ int amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo) · 959 unmodified lines
960 return -EINVAL;960 return -EINVAL;
961 961
962 /* hurrah the memory is not visible ! */962 /* hurrah the memory is not visible ! */
963 atomic64_inc(&adev->num_vram_cpu_page_faults);
963 amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM);964 amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM);
964 lpfn = adev->mc.visible_vram_size >> PAGE_SHIFT;965 lpfn = adev->mc.visible_vram_size >> PAGE_SHIFT;
965 for (i = 0; i < abo->placement.num_placement; i++) {966 for (i = 0; i < abo->placement.num_placement; i++) {
include/uapi/drm/amdgpu_drm.h+2−0
@@ -603,6 +603,8 @@ struct drm_amdgpu_cs_chunk_data { · 602 unmodified lines
603 #define AMDGPU_INFO_SENSOR_VDDNB 0x6603 #define AMDGPU_INFO_SENSOR_VDDNB 0x6
604 /* Subquery id: Query graphics voltage */604 /* Subquery id: Query graphics voltage */
605 #define AMDGPU_INFO_SENSOR_VDDGFX 0x7605 #define AMDGPU_INFO_SENSOR_VDDGFX 0x7
606/* Number of VRAM page faults on CPU access. */
607#define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
606 608
607#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0609#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
608#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff610#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t