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

drm/amdgpu: use the ring name for debugfs (v2)

Instead of hard coding just another name in the ring code.

v2: squash in Tom's rebase fix

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Christian König and committed by
Alex Deucher
771c8ec1 b38d99c4

+26 -36
+24 -34
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
··· 368 368 struct drm_info_node *node = (struct drm_info_node *) m->private; 369 369 struct drm_device *dev = node->minor->dev; 370 370 struct amdgpu_device *adev = dev->dev_private; 371 - int roffset = *(int*)node->info_ent->data; 371 + int roffset = (unsigned long)node->info_ent->data; 372 372 struct amdgpu_ring *ring = (void *)(((uint8_t*)adev) + roffset); 373 - 374 373 uint32_t rptr, wptr, rptr_next; 375 374 unsigned i; 376 375 ··· 412 413 return 0; 413 414 } 414 415 415 - /* TODO: clean this up !*/ 416 - static int amdgpu_gfx_index = offsetof(struct amdgpu_device, gfx.gfx_ring[0]); 417 - static int cayman_cp1_index = offsetof(struct amdgpu_device, gfx.compute_ring[0]); 418 - static int cayman_cp2_index = offsetof(struct amdgpu_device, gfx.compute_ring[1]); 419 - static int amdgpu_dma1_index = offsetof(struct amdgpu_device, sdma.instance[0].ring); 420 - static int amdgpu_dma2_index = offsetof(struct amdgpu_device, sdma.instance[1].ring); 421 - static int r600_uvd_index = offsetof(struct amdgpu_device, uvd.ring); 422 - static int si_vce1_index = offsetof(struct amdgpu_device, vce.ring[0]); 423 - static int si_vce2_index = offsetof(struct amdgpu_device, vce.ring[1]); 424 - 425 - static const struct drm_info_list amdgpu_debugfs_ring_info_list[] = { 426 - {"amdgpu_ring_gfx", amdgpu_debugfs_ring_info, 0, &amdgpu_gfx_index}, 427 - {"amdgpu_ring_cp1", amdgpu_debugfs_ring_info, 0, &cayman_cp1_index}, 428 - {"amdgpu_ring_cp2", amdgpu_debugfs_ring_info, 0, &cayman_cp2_index}, 429 - {"amdgpu_ring_dma1", amdgpu_debugfs_ring_info, 0, &amdgpu_dma1_index}, 430 - {"amdgpu_ring_dma2", amdgpu_debugfs_ring_info, 0, &amdgpu_dma2_index}, 431 - {"amdgpu_ring_uvd", amdgpu_debugfs_ring_info, 0, &r600_uvd_index}, 432 - {"amdgpu_ring_vce1", amdgpu_debugfs_ring_info, 0, &si_vce1_index}, 433 - {"amdgpu_ring_vce2", amdgpu_debugfs_ring_info, 0, &si_vce2_index}, 434 - }; 416 + static struct drm_info_list amdgpu_debugfs_ring_info_list[AMDGPU_MAX_RINGS]; 417 + static char amdgpu_debugfs_ring_names[AMDGPU_MAX_RINGS][32]; 435 418 436 419 #endif 437 420 438 - static int amdgpu_debugfs_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring) 421 + static int amdgpu_debugfs_ring_init(struct amdgpu_device *adev, 422 + struct amdgpu_ring *ring) 439 423 { 440 424 #if defined(CONFIG_DEBUG_FS) 425 + unsigned offset = (uint8_t*)ring - (uint8_t*)adev; 441 426 unsigned i; 427 + struct drm_info_list *info; 428 + char *name; 429 + 442 430 for (i = 0; i < ARRAY_SIZE(amdgpu_debugfs_ring_info_list); ++i) { 443 - const struct drm_info_list *info = &amdgpu_debugfs_ring_info_list[i]; 444 - int roffset = *(int*)amdgpu_debugfs_ring_info_list[i].data; 445 - struct amdgpu_ring *other = (void *)(((uint8_t*)adev) + roffset); 446 - unsigned r; 447 - 448 - if (other != ring) 449 - continue; 450 - 451 - r = amdgpu_debugfs_add_files(adev, info, 1); 452 - if (r) 453 - return r; 431 + info = &amdgpu_debugfs_ring_info_list[i]; 432 + if (!info->data) 433 + break; 454 434 } 435 + 436 + if (i == ARRAY_SIZE(amdgpu_debugfs_ring_info_list)) 437 + return -ENOSPC; 438 + 439 + name = &amdgpu_debugfs_ring_names[i][0]; 440 + sprintf(name, "amdgpu_ring_%s", ring->name); 441 + info->name = name; 442 + info->show = amdgpu_debugfs_ring_info; 443 + info->driver_features = 0; 444 + info->data = (void*)(uintptr_t)offset; 445 + 446 + return amdgpu_debugfs_add_files(adev, info, 1); 455 447 #endif 456 448 return 0; 457 449 }
+1 -1
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
··· 4438 4438 ring->me = 1; /* first MEC */ 4439 4439 ring->pipe = i / 8; 4440 4440 ring->queue = i % 8; 4441 - sprintf(ring->name, "comp %d.%d.%d", ring->me, ring->pipe, ring->queue); 4441 + sprintf(ring->name, "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue); 4442 4442 irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ring->pipe; 4443 4443 /* type-2 packets are deprecated on MEC, use type-3 instead */ 4444 4444 r = amdgpu_ring_init(adev, ring, 1024,
+1 -1
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
··· 1594 1594 ring->me = 1; /* first MEC */ 1595 1595 ring->pipe = i / 8; 1596 1596 ring->queue = i % 8; 1597 - sprintf(ring->name, "comp %d.%d.%d", ring->me, ring->pipe, ring->queue); 1597 + sprintf(ring->name, "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue); 1598 1598 irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ring->pipe; 1599 1599 /* type-2 packets are deprecated on MEC, use type-3 instead */ 1600 1600 r = amdgpu_ring_init(adev, ring, 1024,