AMD GPU not being used by Debian Buster with kernel 5.10
by PC-02 from LinuxQuestions.org on (#5K28T)
I'm running Debian 10 with kernel 5.10 via buster backports on baremetal. The installed driver for amd is amdgpu and the output of dmesg from my understanding tells me the driver is being recognized,
```
[ 2.774224] [drm] amdgpu kernel modesetting enabled.
[ 2.774409] amdgpu: Topology: Add CPU node
[ 2.774596] amdgpu 0000:03:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[ 2.792960] amdgpu 0000:03:00.0: amdgpu: Fetched VBIOS from ATRM
[ 2.792962] amdgpu: ATOM BIOS: BR64533.001
[ 2.811910] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_k_mc.bin
[ 2.811918] amdgpu 0000:03:00.0: amdgpu: VRAM: 2048M 0x000000F400000000 - 0x000000F47FFFFFFF (2048M used)
[ 2.811919] amdgpu 0000:03:00.0: amdgpu: GART: 256M 0x000000FF00000000 - 0x000000FF0FFFFFFF
[ 2.811996] [drm] amdgpu: 2048M of VRAM memory ready
[ 2.811997] [drm] amdgpu: 3072M of GTT memory ready.
[ 2.812695] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_pfp_2.bin
[ 2.812704] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_me_2.bin
[ 2.812712] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_ce_2.bin
[ 2.812721] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_rlc.bin
[ 2.812776] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_mec_2.bin
[ 2.812832] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_mec2_2.bin
[ 2.813340] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_sdma.bin
[ 2.813348] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_sdma1.bin
[ 2.813383] amdgpu: hwmgr_sw_init smu backed is polaris10_smu
[ 2.813465] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_uvd.bin
[ 2.814530] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_vce.bin
[ 2.815130] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_k_smc.bin
[ 3.051566] amdgpu 0000:03:00.0: amdgpu: SE 2, SH per SE 1, CU per SH 5, active_cu_number 10
[ 3.055642] [drm] Initialized amdgpu 3.40.0 20150101 for 0000:03:00.0 on minor 1
```
and lshw -c video shows both the integrated and dedicated GPU
```
*-display
description: VGA compatible controller
product: Intel Corporation
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 02
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:130 memory:c1000000-c1ffffff memory:a0000000-afffffff ioport:4000(size=64) memory:c0000-dffff
*-display
description: Display controller
product: Advanced Micro Devices, Inc. [AMD/ATI]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0
bus info: pci@0000:03:00.0
version: c0
width: 64 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list rom
configuration: driver=amdgpu latency=0
resources: irq:131 memory:b0000000-bfffffff memory:c0000000-c01fffff ioport:3000(size=256) memory:c2300000-c233ffff memory:c2340000-c235ffff
```
However when I run glxinfo -B or DRI_PRIME=1 glxinfo -B the output is
```
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: VMware, Inc. (0xffffffff)
Device: llvmpipe (LLVM 7.0, 256 bits) (0xffffffff)
Version: 18.3.6
Accelerated: no
Video memory: 15817MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 3.3
Max compat profile version: 3.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 7.0, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.3.6
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.1 Mesa 18.3.6
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
```
I have tried running programs that could use the GPU as well but they seem to keep using the VMWare llvmpipe gpu, the output of radeontop always shows up as 0%. How do I get my machine to use amdgpu?
```
[ 2.774224] [drm] amdgpu kernel modesetting enabled.
[ 2.774409] amdgpu: Topology: Add CPU node
[ 2.774596] amdgpu 0000:03:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[ 2.792960] amdgpu 0000:03:00.0: amdgpu: Fetched VBIOS from ATRM
[ 2.792962] amdgpu: ATOM BIOS: BR64533.001
[ 2.811910] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_k_mc.bin
[ 2.811918] amdgpu 0000:03:00.0: amdgpu: VRAM: 2048M 0x000000F400000000 - 0x000000F47FFFFFFF (2048M used)
[ 2.811919] amdgpu 0000:03:00.0: amdgpu: GART: 256M 0x000000FF00000000 - 0x000000FF0FFFFFFF
[ 2.811996] [drm] amdgpu: 2048M of VRAM memory ready
[ 2.811997] [drm] amdgpu: 3072M of GTT memory ready.
[ 2.812695] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_pfp_2.bin
[ 2.812704] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_me_2.bin
[ 2.812712] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_ce_2.bin
[ 2.812721] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_rlc.bin
[ 2.812776] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_mec_2.bin
[ 2.812832] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_mec2_2.bin
[ 2.813340] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_sdma.bin
[ 2.813348] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_sdma1.bin
[ 2.813383] amdgpu: hwmgr_sw_init smu backed is polaris10_smu
[ 2.813465] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_uvd.bin
[ 2.814530] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_vce.bin
[ 2.815130] amdgpu 0000:03:00.0: firmware: direct-loading firmware amdgpu/polaris12_k_smc.bin
[ 3.051566] amdgpu 0000:03:00.0: amdgpu: SE 2, SH per SE 1, CU per SH 5, active_cu_number 10
[ 3.055642] [drm] Initialized amdgpu 3.40.0 20150101 for 0000:03:00.0 on minor 1
```
and lshw -c video shows both the integrated and dedicated GPU
```
*-display
description: VGA compatible controller
product: Intel Corporation
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 02
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:130 memory:c1000000-c1ffffff memory:a0000000-afffffff ioport:4000(size=64) memory:c0000-dffff
*-display
description: Display controller
product: Advanced Micro Devices, Inc. [AMD/ATI]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0
bus info: pci@0000:03:00.0
version: c0
width: 64 bits
clock: 33MHz
capabilities: pm pciexpress msi bus_master cap_list rom
configuration: driver=amdgpu latency=0
resources: irq:131 memory:b0000000-bfffffff memory:c0000000-c01fffff ioport:3000(size=256) memory:c2300000-c233ffff memory:c2340000-c235ffff
```
However when I run glxinfo -B or DRI_PRIME=1 glxinfo -B the output is
```
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: VMware, Inc. (0xffffffff)
Device: llvmpipe (LLVM 7.0, 256 bits) (0xffffffff)
Version: 18.3.6
Accelerated: no
Video memory: 15817MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 3.3
Max compat profile version: 3.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 7.0, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.3.6
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.1 Mesa 18.3.6
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
```
I have tried running programs that could use the GPU as well but they seem to keep using the VMWare llvmpipe gpu, the output of radeontop always shows up as 0%. How do I get my machine to use amdgpu?