[PATCH v1 0/1] drm/amdgpu: Show IP discovery in sysfs
Luben Tuikov
luben.tuikov at amd.com
Wed Feb 9 22:51:43 UTC 2022
Version 1, this version, adds sysfs tear-down on rmmod.
Show IP discovery in sysfs. See the commit message for the layout
format.
For instance, on a Sienna Cichlid, the layout looks like this:
$tree /sys/class/drm/card0/device/ip_discovery/
/sys/class/drm/card0/device/ip_discovery/
└── die
└── 0
├── 1
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 108
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 11
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 12
│ ├── 0
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ └── 1
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 128
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 150
│ ├── 0
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 1
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 2
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 3
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 4
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 5
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 6
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ └── 7
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 170
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 200
│ ├── 0
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ └── 1
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 255
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 271
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 3
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 34
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 35
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 36
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 37
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 4
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 40
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 41
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 42
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 43
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 46
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 47
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 49
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 5
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 6
│ ├── 0
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 1
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 2
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 3
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 4
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 5
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 6
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 7
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 8
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ └── 9
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 66
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 68
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 69
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 70
│ └── 0
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── 80
│ ├── 0
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 1
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 2
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ ├── 3
│ │ ├── base_addr
│ │ ├── hw_id
│ │ ├── major
│ │ ├── minor
│ │ ├── num_base_addresses
│ │ ├── num_instance
│ │ └── revision
│ └── 4
│ ├── base_addr
│ ├── hw_id
│ ├── major
│ ├── minor
│ ├── num_base_addresses
│ ├── num_instance
│ └── revision
├── ATHUB -> 35
├── CLKA -> 6
├── CLKB -> 47
├── DBGU_NBIO -> 36
├── DF -> 46
├── DFX -> 37
├── DFX_DAP -> 49
├── DMU -> 271
├── FUSE -> 5
├── GC -> 11
├── HDP -> 41
├── MMHUB -> 34
├── MP0 -> 255
├── MP1 -> 1
├── NBIF -> 108
├── num_ips
├── OSSSYS -> 40
├── PCIE -> 70
├── PCS -> 80
├── SDMA0 -> 42
├── SDMA1 -> 43
├── SDMA2 -> 68
├── SDMA3 -> 69
├── SMUIO -> 4
├── SYSTEMHUB -> 128
├── THM -> 3
├── UMC -> 150
├── USB -> 170
├── UVD -> 12
├── WAFLC -> 66
└── XGMI -> 200
114 directories, 365 files
$_
"num_ips" shows the total number of IPs, as this count exists by the
same name in the binary data.
Typycal contents of IP attributes is,
$head /sys/class/drm/card0/device/ip_discovery/die/0/GC/0/*
==> /sys/class/drm/card0/device/ip_discovery/die/0/GC/0/base_addr <==
0x00001260
0x0000A000
0x0001C000
0x02402C00
==> /sys/class/drm/card0/device/ip_discovery/die/0/GC/0/hw_id <==
11
==> /sys/class/drm/card0/device/ip_discovery/die/0/GC/0/major <==
10
==> /sys/class/drm/card0/device/ip_discovery/die/0/GC/0/minor <==
3
==> /sys/class/drm/card0/device/ip_discovery/die/0/GC/0/num_base_addresses <==
4
==> /sys/class/drm/card0/device/ip_discovery/die/0/GC/0/num_instance <==
0
==> /sys/class/drm/card0/device/ip_discovery/die/0/GC/0/revision <==
0
$_
Luben Tuikov (1):
drm/amdgpu: Show IP discovery in sysfs
Cc: Alex Deucher <Alexander.Deucher at amd.com>
Cc: Tom StDenis <tom.stdenis at amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 +
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 486 ++++++++++++++++++
2 files changed, 490 insertions(+)
base-commit: ff7951de1a24615706ca2533e27170961ce11f27
--
2.35.0.3.gb23dac905b
More information about the amd-gfx
mailing list