Test AMD RX 9070 XT 16GB
I just bought a PowerColor AMD RX 9070 XT Reaper, with 16GB of GDDR6 RAM.
I am testing it with yanghaku's 15 line DRM patch to see if it works 'out of the box' as the other AMD GPUs have—it may need some updated firmware that's not already in the firmware-amd-graphics package on Debian.
Current steps to get this card working with Pi OS Bookworm
Last updated: 2025-10-01
- Clone the Raspberry Pi Linux kernel patching the default Raspberry Pi
rpi-6.17.ykernel tree with this patch. - Before compiling the kernel, run
make menuconfigand select the options: 1. Kernel Features > Page Size > 4 KB (for Box86 compatibility) 2. Device Drivers > Graphics support > AMD GPU (optionally SI/CIK support too) - Recompile the kernel following Raspberry Pi's instructions
- Install the AMD firmware:
sudo apt install -y firmware-amd-graphics - Install additional firmware for this card (see 'Install Additional Firmware')
- ONLY if running Bookworm (Pi OS 12): Update Mesa to the latest version (version 25+)
- Reboot the Pi with the card attached using an appropriate PCIe riser and external ATX power supply.
Install Additional Firmware
cd /usr/lib/firmware/amdgpu && \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/psp_14_0_3_sos.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/psp_14_0_3_ta.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/smu_14_0_3.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/dcn_4_0_1_dmcub.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_pfp.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_me.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_mec.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_rlc.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_imu.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/sdma_7_0_1.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/vcn_5_0_0.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_uni_mes.bin
Confirm everything's working
Confirm everything is working by plugging a monitor into the graphics card; then confirm the card's GPU is in use by running glxinfo -B (part of the mesa-utils package), for example:
$ DISPLAY=:0 glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD Radeon Graphics (radeonsi, gfx1201, ACO, DRM 3.63, 6.15.11-v8-4k-gpu+) (0x7550)
Version: 25.0.7
Accelerated: yes
Video memory: 16384MB
...
lspci output:
0001:01:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch (rev 24) (prog-if 00 [Normal decode])
Subsystem: Tul Corporation / PowerColor Navi 10 XL Upstream Port of PCI Express Switch
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 38
Region 0: Memory at 1b80100000 (32-bit, non-prefetchable) [size=16K]
Bus: primary=01, secondary=02, subordinate=03, sec-latency=0
I/O behind bridge: 0000f000-00000fff [disabled] [32-bit]
Memory behind bridge: 80000000-800fffff [size=1M] [32-bit]
Prefetchable memory behind bridge: 1800000000-1817ffffff [size=384M] [32-bit]
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Upstream Port, MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ SlotPowerLimit 0W
DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
LnkCap: Port #0, Speed 32GT/s, Width x16, ASPM L1, Exit Latency L1 <64us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM L1 Enabled; Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 8GT/s (downgraded), Width x1 (downgraded)
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 4
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS-
AtomicOpsCap: Routing+ 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
AtomicOpsCtl: EgressBlck-
LnkCap2: Supported Link Speeds: 2.5-32GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
LnkCtl2: Target Link Speed: 32GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+
EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
Retimer- 2Retimers- CrosslinkRes: unsupported
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [c0] Subsystem: Tul Corporation / PowerColor Navi 10 XL Upstream Port of PCI Express Switch
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [150 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [270 v1] Secondary PCI Express
LnkCtl3: LnkEquIntrruptEn- PerformEqu-
LaneErrStat: 0
Capabilities: [320 v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Capabilities: [370 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=0us PortTPowerOnTime=50us
L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
T_CommonMode=0us LTR1.2_Threshold=0ns
L1SubCtl2: T_PwrOn=10us
Capabilities: [400 v1] Data Link Feature <?>
Capabilities: [410 v1] Physical Layer 16.0 GT/s <?>
Capabilities: [440 v1] Lane Margining at the Receiver <?>
Capabilities: [500 v1] Extended Capability ID 0x2a
Kernel driver in use: pcieport
0001:02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch (rev 24) (prog-if 00 [Normal decode])
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 39
Bus: primary=02, secondary=03, subordinate=03, sec-latency=0
I/O behind bridge: 0000f000-00000fff [disabled] [32-bit]
Memory behind bridge: 80000000-800fffff [size=1M] [32-bit]
Prefetchable memory behind bridge: 1800000000-1817ffffff [size=384M] [32-bit]
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Downstream Port (Slot-), MSI 00
DevCap: MaxPayload 512 bytes, PhantFunc 0
ExtTag+ RBE+
DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
LnkCap: Port #0, Speed 32GT/s, Width x16, ASPM L1, Exit Latency L1 <1us
ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
LnkCtl: ASPM L1 Enabled; Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt+ AutBWInt+
LnkSta: Speed 32GT/s, Width x16
TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 4
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS- ARIFwd-
AtomicOpsCap: Routing+
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled, ARIFwd-
AtomicOpsCtl: EgressBlck-
LnkCap2: Supported Link Speeds: 2.5-32GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
LnkCtl2: Target Link Speed: 32GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -3.5dB
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
Retimer- 2Retimers- CrosslinkRes: unsupported
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 000000fffffff000 Data: 0008
Capabilities: [c0] Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [150 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [270 v1] Secondary PCI Express
LnkCtl3: LnkEquIntrruptEn- PerformEqu-
LaneErrStat: 0
Capabilities: [2a0 v1] Access Control Services
ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
Capabilities: [400 v1] Data Link Feature <?>
Capabilities: [410 v1] Physical Layer 16.0 GT/s <?>
Capabilities: [450 v1] Lane Margining at the Receiver <?>
Capabilities: [500 v1] Extended Capability ID 0x2a
Kernel driver in use: pcieport
0001:03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 48 [RX 9070/9070 XT] (rev c0) (prog-if 00 [VGA controller])
Subsystem: Tul Corporation / PowerColor Navi 48 [RX 9070/9070 XT]
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 38
Region 0: Memory at 1800000000 (64-bit, prefetchable) [size=256M]
Region 2: Memory at 1810000000 (64-bit, prefetchable) [size=2M]
Region 5: Memory at 1b80000000 (32-bit, non-prefetchable) [size=512K]
Expansion ROM at 1b80080000 [disabled] [size=128K]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [64] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
LnkCap: Port #0, Speed 32GT/s, Width x16, ASPM L1, Exit Latency L1 <1us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 32GT/s, Width x16
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 1
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS-
AtomicOpsCap: 32bit+ 64bit+ 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
AtomicOpsCtl: ReqEn-
LnkCap2: Supported Link Speeds: 2.5-32GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
LnkCtl2: Target Link Speed: 32GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
Retimer- 2Retimers- CrosslinkRes: unsupported
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [150 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [200 v1] Physical Resizable BAR
BAR 0: current size: 256MB, supported: 256MB 512MB 1GB 2GB 4GB 8GB 16GB
BAR 2: current size: 2MB, supported: 2MB 4MB 8MB 16MB 32MB 64MB 128MB 256MB
Capabilities: [240 v1] Power Budgeting <?>
Capabilities: [270 v1] Secondary PCI Express
LnkCtl3: LnkEquIntrruptEn- PerformEqu-
LaneErrStat: 0
Capabilities: [2a0 v1] Access Control Services
ACSCap: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
Capabilities: [2d0 v1] Process Address Space ID (PASID)
PASIDCap: Exec+ Priv+, Max PASID Width: 10
PASIDCtl: Enable- Exec- Priv-
Capabilities: [320 v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Capabilities: [410 v1] Physical Layer 16.0 GT/s <?>
Capabilities: [450 v1] Lane Margining at the Receiver <?>
Capabilities: [500 v1] Extended Capability ID 0x2a
Kernel modules: amdgpu
0001:03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Device ab40
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device ab40
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin B routed to IRQ 255
Region 0: Memory at 1b800a0000 (32-bit, non-prefetchable) [disabled] [size=16K]
Capabilities: [48] Vendor Specific Information: Len=08 <?>
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [64] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
LnkCap: Port #0, Speed 32GT/s, Width x16, ASPM L1, Exit Latency L1 <1us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 32GT/s, Width x16
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 1
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS-
AtomicOpsCap: 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
AtomicOpsCtl: ReqEn-
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
Retimer- 2Retimers- CrosslinkRes: unsupported
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [150 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [2a0 v1] Access Control Services
ACSCap: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
ACSCtl: SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-
As expected, needs newer firmware than what's in the Pi OS Debian 12 Bookworm package:
$ dmesg | grep amdgpu
[ 5.061554] [drm] amdgpu kernel modesetting enabled.
[ 5.061778] amdgpu 0001:03:00.0: enabling device (0000 -> 0002)
[ 5.066961] amdgpu 0001:03:00.0: amdgpu: detected ip block number 0 <soc24_common>
[ 5.066971] amdgpu 0001:03:00.0: amdgpu: detected ip block number 1 <gmc_v12_0>
[ 5.066974] amdgpu 0001:03:00.0: amdgpu: detected ip block number 2 <ih_v7_0>
[ 5.066999] amdgpu 0001:03:00.0: amdgpu: detected ip block number 3 <psp>
[ 5.067002] amdgpu 0001:03:00.0: amdgpu: detected ip block number 4 <smu>
[ 5.067006] amdgpu 0001:03:00.0: amdgpu: detected ip block number 5 <dm>
[ 5.067009] amdgpu 0001:03:00.0: amdgpu: detected ip block number 6 <gfx_v12_0>
[ 5.067012] amdgpu 0001:03:00.0: amdgpu: detected ip block number 7 <sdma_v7_0>
[ 5.067015] amdgpu 0001:03:00.0: amdgpu: detected ip block number 8 <vcn_v5_0_0>
[ 5.067018] amdgpu 0001:03:00.0: amdgpu: detected ip block number 9 <jpeg_v5_0_0>
[ 5.067021] amdgpu 0001:03:00.0: amdgpu: detected ip block number 10 <mes_v12_0>
[ 5.075417] amdgpu 0001:03:00.0: amdgpu: Fetched VBIOS from ROM BAR
[ 5.075425] amdgpu: ATOM BIOS: 113-EXT112333-100
[ 5.076487] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/psp_14_0_3_sos.bin failed with error -2
[ 5.076497] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <psp> failed -19
[ 5.077068] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/smu_14_0_3.bin failed with error -2
[ 5.077076] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <smu> failed -19
[ 5.077389] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/dcn_4_0_1_dmcub.bin failed with error -2
[ 5.077394] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <dm> failed -19
[ 5.077859] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/gc_12_0_1_pfp.bin failed with error -2
[ 5.077865] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <gfx_v12_0> failed -19
[ 5.078434] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/sdma_7_0_1.bin failed with error -2
[ 5.078444] [drm:sdma_v7_0_early_init [amdgpu]] *ERROR* Failed to init sdma firmware!
[ 5.078747] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <sdma_v7_0> failed -19
[ 5.079242] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/vcn_5_0_0.bin failed with error -2
[ 5.079253] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <vcn_v5_0_0> failed -19
[ 5.079619] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/gc_12_0_1_uni_mes.bin failed with error -2
[ 5.079627] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <mes_v12_0> failed -19
[ 5.079953] amdgpu 0001:03:00.0: amdgpu: Fatal error during GPU init
[ 5.079960] amdgpu 0001:03:00.0: amdgpu: amdgpu: finishing device.
...
# After a reboot with initial set of firmware, also got:
[ 4.863947] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/psp_14_0_3_ta.bin failed with error -2
[ 4.863959] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <psp> failed -19
[ 4.870032] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/gc_12_0_1_me.bin failed with error -2
[ 4.870051] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <gfx_v12_0> failed -19
[ 4.981344] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/gc_12_0_1_rlc.bin failed with error -2
[ 4.981375] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <gfx_v12_0> failed -19
[ 4.876904] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/gc_12_0_1_mec.bin failed with error -2
[ 4.876934] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <gfx_v12_0> failed -19
[ 5.050765] amdgpu 0001:03:00.0: Direct firmware load for amdgpu/gc_12_0_1_imu.bin failed with error -2
[ 5.050776] amdgpu 0001:03:00.0: amdgpu: gfx12: Failed to load firmware "gc_12_0_1_imu.bin"
[ 5.050779] amdgpu 0001:03:00.0: amdgpu: Failed to load imu firmware!
[ 5.050813] [drm:amdgpu_device_init [amdgpu]] *ERROR* early_init of IP block <gfx_v12_0> failed -19
[ 4.876774] amdgpu 0001:03:00.0: amdgpu: Fatal error during GPU init
[ 4.876787] amdgpu 0001:03:00.0: amdgpu: amdgpu: finishing device.
Downloading all the firmware with:
cd /usr/lib/firmware/amdgpu
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/psp_14_0_3_sos.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/psp_14_0_3_ta.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/smu_14_0_3.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/dcn_4_0_1_dmcub.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_pfp.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_me.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_mec.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_rlc.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_imu.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/sdma_7_0_1.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/vcn_5_0_0.bin & \
sudo wget -q -o -nc https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/amdgpu/gc_12_0_1_uni_mes.bin
Then rebooted. After reboot, I got a blank screen, but no errors:
[ 5.056573] [drm] amdgpu kernel modesetting enabled.
[ 5.056785] amdgpu 0001:03:00.0: enabling device (0000 -> 0002)
[ 5.056799] [drm] initializing kernel modesetting (IP DISCOVERY 0x1002:0x7550 0x148C:0x2435 0xC0).
[ 5.056828] [drm] register mmio base: 0x80000000
[ 5.056832] [drm] register mmio size: 524288
[ 5.060880] amdgpu 0001:03:00.0: amdgpu: detected ip block number 0 <soc24_common>
[ 5.060888] amdgpu 0001:03:00.0: amdgpu: detected ip block number 1 <gmc_v12_0>
[ 5.060893] amdgpu 0001:03:00.0: amdgpu: detected ip block number 2 <ih_v7_0>
[ 5.060898] amdgpu 0001:03:00.0: amdgpu: detected ip block number 3 <psp>
[ 5.060902] amdgpu 0001:03:00.0: amdgpu: detected ip block number 4 <smu>
[ 5.060906] amdgpu 0001:03:00.0: amdgpu: detected ip block number 5 <dm>
[ 5.060910] amdgpu 0001:03:00.0: amdgpu: detected ip block number 6 <gfx_v12_0>
[ 5.060914] amdgpu 0001:03:00.0: amdgpu: detected ip block number 7 <sdma_v7_0>
[ 5.060919] amdgpu 0001:03:00.0: amdgpu: detected ip block number 8 <vcn_v5_0_0>
[ 5.060923] amdgpu 0001:03:00.0: amdgpu: detected ip block number 9 <jpeg_v5_0_0>
[ 5.060926] amdgpu 0001:03:00.0: amdgpu: detected ip block number 10 <mes_v12_0>
[ 5.069276] amdgpu 0001:03:00.0: amdgpu: Fetched VBIOS from ROM BAR
[ 5.069283] amdgpu: ATOM BIOS: 113-EXT112333-100
[ 5.090183] amdgpu 0001:03:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[ 5.090209] amdgpu 0001:03:00.0: amdgpu: PCIE atomic ops is not supported
[ 5.090219] [drm] GPU posting now...
[ 5.090259] amdgpu 0001:03:00.0: amdgpu: MEM ECC is not presented.
[ 5.090264] amdgpu 0001:03:00.0: amdgpu: SRAM ECC is not presented.
[ 5.090282] [drm] vm size is 262144 GB, 4 levels, block size is 9-bit, fragment size is 9-bit
[ 5.090307] amdgpu 0001:03:00.0: BAR 2 [mem 0x1810000000-0x18101fffff 64bit pref]: releasing
[ 5.090314] amdgpu 0001:03:00.0: BAR 0 [mem 0x1800000000-0x180fffffff 64bit pref]: releasing
[ 5.090330] pcieport 0001:02:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]: releasing
[ 5.090335] pcieport 0001:01:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]: releasing
[ 5.090339] pcieport 0001:00:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]: releasing
[ 5.090351] pcieport 0001:00:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.090355] pcieport 0001:00:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.090360] pcieport 0001:00:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.090364] pcieport 0001:00:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.090369] pcieport 0001:01:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.090373] pcieport 0001:01:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.090377] pcieport 0001:01:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.090381] pcieport 0001:01:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.090386] pcieport 0001:02:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.090389] pcieport 0001:02:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.090394] pcieport 0001:02:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.090398] pcieport 0001:02:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.090402] amdgpu 0001:03:00.0: BAR 0 [mem size 0x400000000 64bit pref]: can't assign; no space
[ 5.090406] amdgpu 0001:03:00.0: BAR 0 [mem size 0x400000000 64bit pref]: failed to assign
[ 5.090411] amdgpu 0001:03:00.0: BAR 2 [mem size 0x00200000 64bit pref]: can't assign; no space
[ 5.090414] amdgpu 0001:03:00.0: BAR 2 [mem size 0x00200000 64bit pref]: failed to assign
[ 5.090419] amdgpu 0001:03:00.0: BAR 0 [mem size 0x400000000 64bit pref]: can't assign; no space
[ 5.090423] amdgpu 0001:03:00.0: BAR 0 [mem size 0x400000000 64bit pref]: failed to assign
[ 5.090427] amdgpu 0001:03:00.0: BAR 2 [mem size 0x00200000 64bit pref]: can't assign; no space
[ 5.090431] amdgpu 0001:03:00.0: BAR 2 [mem size 0x00200000 64bit pref]: failed to assign
[ 5.090435] pcieport 0001:00:00.0: PCI bridge to [bus 01-03]
[ 5.090440] pcieport 0001:00:00.0: bridge window [mem 0x1b80000000-0x1b801fffff]
[ 5.090445] pcieport 0001:00:00.0: PCI bridge to [bus 01-03]
[ 5.090449] pcieport 0001:00:00.0: bridge window [mem 0x1b80000000-0x1b801fffff]
[ 5.090454] pcieport 0001:00:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]
[ 5.090458] pcieport 0001:01:00.0: PCI bridge to [bus 02-03]
[ 5.090464] pcieport 0001:01:00.0: bridge window [mem 0x1b80000000-0x1b800fffff]
[ 5.090469] pcieport 0001:01:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]
[ 5.090477] pcieport 0001:02:00.0: PCI bridge to [bus 03]
[ 5.090483] pcieport 0001:02:00.0: bridge window [mem 0x1b80000000-0x1b800fffff]
[ 5.090489] pcieport 0001:02:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]
[ 5.090500] [drm] Not enough PCI address space for a large BAR.
[ 5.090504] amdgpu 0001:03:00.0: BAR 0 [mem 0x1800000000-0x180fffffff 64bit pref]: assigned
[ 5.090517] amdgpu 0001:03:00.0: BAR 2 [mem 0x1810000000-0x18101fffff 64bit pref]: assigned
[ 5.090530] amdgpu 0001:03:00.0: amdgpu: VRAM: 16304M 0x0000008000000000 - 0x00000083FAFFFFFF (16304M used)
[ 5.090535] amdgpu 0001:03:00.0: amdgpu: GART: 512M 0x0000000000000000 - 0x000000001FFFFFFF
[ 5.090540] [drm] Detected VRAM RAM=16304M, BAR=256M
[ 5.090543] [drm] RAM width 256bits GDDR6
[ 5.090668] [drm] amdgpu: 16304M of VRAM memory ready
[ 5.090675] [drm] amdgpu: 8001M of GTT memory ready.
[ 5.090703] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 5.090775] amdgpu 0001:03:00.0: amdgpu: PCIE GART of 512M enabled (table at 0x0000008000000000).
[ 5.094190] [drm] Loading DMUB firmware via PSP: version=0x0A000400
[ 5.105888] Bluetooth: hci0: BCM: chip id 107
[ 5.106088] Bluetooth: hci0: BCM: features 0x2f
[ 5.107158] Bluetooth: hci0: BCM4345C0
[ 5.107162] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0000
[ 5.107718] Bluetooth: hci0: BCM4345C0 'brcm/BCM4345C0.hcd' Patch
[ 5.154851] amdgpu 0001:03:00.0: amdgpu: Found VCN firmware Version ENC: 1.9 DEC: 9 VEP: 0 Revision: 38
[ 5.376590] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 5.376773] Bluetooth: BNEP filters: protocol multicast
[ 5.376788] Bluetooth: BNEP socket layer initialized
[ 5.400274] Adding 524284k swap on /var/swap. Priority:-2 extents:3 across:5185536k SS
[ 5.406657] amdgpu 0001:03:00.0: amdgpu: RAP: optional rap ta ucode is not available
[ 5.406677] amdgpu 0001:03:00.0: amdgpu: SECUREDISPLAY: securedisplay ta ucode is not available
[ 5.406717] amdgpu 0001:03:00.0: amdgpu: smu driver if version = 0x0000002e, smu fw if version = 0x00000032, smu fw program = 0, smu fw version = 0x00684a00 (104.74.0)
[ 5.406876] amdgpu 0001:03:00.0: amdgpu: SMU driver if version not matched
[ 5.434235] amdgpu 0001:03:00.0: amdgpu: SMU is initialized successfully!
[ 5.436734] [drm] Display Core v3.2.325 initialized on DCN 4.0.1
[ 5.436763] [drm] DP-HDMI FRL PCON supported
[ 5.441501] [drm] DMUB hardware initialized: version=0x0A000400
[ 5.495696] amdgpu 0001:03:00.0: amdgpu: program CP_MES_CNTL : 0x4000000
[ 5.495714] amdgpu 0001:03:00.0: amdgpu: program CP_MES_CNTL : 0xc000000
[ 5.505368] amdgpu 0001:03:00.0: amdgpu: SE 4, SH per SE 2, CU per SH 8, active_cu_number 64
[ 5.505383] amdgpu 0001:03:00.0: amdgpu: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
[ 5.505390] amdgpu 0001:03:00.0: amdgpu: ring comp_1.0.0 uses VM inv eng 1 on hub 0
[ 5.505394] amdgpu 0001:03:00.0: amdgpu: ring comp_1.1.0 uses VM inv eng 4 on hub 0
[ 5.505398] amdgpu 0001:03:00.0: amdgpu: ring comp_1.0.1 uses VM inv eng 6 on hub 0
[ 5.505402] amdgpu 0001:03:00.0: amdgpu: ring comp_1.1.1 uses VM inv eng 7 on hub 0
[ 5.505406] amdgpu 0001:03:00.0: amdgpu: ring sdma0 uses VM inv eng 8 on hub 0
[ 5.505409] amdgpu 0001:03:00.0: amdgpu: ring sdma1 uses VM inv eng 9 on hub 0
[ 5.505413] amdgpu 0001:03:00.0: amdgpu: ring vcn_unified_0 uses VM inv eng 0 on hub 8
[ 5.505417] amdgpu 0001:03:00.0: amdgpu: ring jpeg_dec uses VM inv eng 1 on hub 8
[ 5.509554] [drm] ring gfx_32768.1.1 was added
[ 5.509781] [drm] ring compute_32768.2.2 was added
[ 5.509998] [drm] ring sdma_32768.3.3 was added
[ 5.510050] [drm] ring gfx_32768.1.1 ib test pass
[ 5.510112] [drm] ring compute_32768.2.2 ib test pass
[ 5.510163] [drm] ring sdma_32768.3.3 ib test pass
[ 5.512801] amdgpu 0001:03:00.0: amdgpu: Using BACO for runtime pm
[ 5.513611] [drm] Initialized amdgpu 3.63.0 for 0001:03:00.0 on minor 2
[ 5.658951] macb 1f00100000.ethernet eth0: PHY [1f00100000.ethernet-ffffffff:01] driver [Broadcom BCM54213PE] (irq=POLL)
[ 5.659388] macb 1f00100000.ethernet eth0: configuring for phy/rgmii-id link mode
[ 5.662726] macb 1f00100000.ethernet: gem-ptp-timer ptp clock registered.
[ 5.672893] [drm] pre_validate_dsc:1627 MST_DSC dsc precompute is not needed
[ 5.698288] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled
[ 5.733414] Console: switching to colour frame buffer device 480x135
[ 5.754934] amdgpu 0001:03:00.0: [drm] fb0: amdgpudrmfb frame buffer device
I wonder if the blank screen is because I had built both radeon and amdgpu into my latest kernel build, for testing older AMD cards? I've re-built the kernel again without it enabled (also removing nouveau) to see if there's some issue there.
Ah, looking more closely, there is a blinking cursor up in the top left. So... maybe I need to disable the built-in iGPU like on Intel Arc cards? Testing that now, by editing /boot/firmware/config.txt and commenting dtoverlay=vc4-kms-v3d, then rebooting.
That didn't help, though. Still the blinking cursor on the blank screen. Also tried a DisplayPort output into my monitor instead of HDMI. Exact same thing.
If I hit Alt + F2 I get to text mode and can log in.
Then startx, and it starts the GUI. Why is it not doing it automatically??? (That works but is not the labwc environment.)
When I try running labwc, I get:
'gfx1201' is not a recognized processor for this target (ignoring processor)
'gfx1201' is not a recognized processor for this target (ignoring processor)
amd: LLVM doesn't support gfx1201, bailing out...
libEGL warning: egl: failed to create dri2 screen
00:00:00.045 [ERROR] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "DRI2: failed to create screen"
'gfx1201' is not a recognized processor for this target (ignoring processor)
'gfx1201' is not a recognized processor for this target (ignoring processor)
amd: LLVM doesn't support gfx1201, bailing out...
libEGL warning: egl: failed to create dri2 screen
00:00:00.051 [ERROR] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "DRI2: failed to create screen"
_amdgpu_device_initialize: amdgpu_query_info(ACCEL_WORKING) failed (-13)
amdgpu: amdgpu_device_initialize failed.
libEGL warning: egl: failed to create dri2 screen
00:00:00.056 [ERROR] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "DRI2: failed to create screen"
00:00:00.056 [ERROR] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "eglInitialize"
00:00:00.056 [ERROR] [render/egl.c:268] Failed to initialize EGL
00:00:00.056 [ERROR] [render/egl.c:571] Failed to initialize EGL context
00:00:00.056 [ERROR] [render/gles2/renderer.c:487] Could not initialize EGL
00:00:00.056 [ERROR] [render/wlr_renderer.c:296] Could not initialize renderer
00:00:00.056 [ERROR] [../src/server.c:507] unable to create renderer
And Vulkan sees the device (vulkaninfo --summary > vulkan.txt):
==========
VULKANINFO
==========
Vulkan Instance Version: 1.3.239
Instance Extensions: count = 23
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_headless_surface : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 4
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
Instance Layers: count = 2
--------------------------
VK_LAYER_MESA_device_select Linux device selection layer 1.3.211 version 1
VK_LAYER_MESA_overlay Mesa Overlay layer 1.3.211 version 1
Devices:
========
GPU0:
apiVersion = 1.3.289
driverVersion = 24.2.8
vendorID = 0x1002
deviceID = 0x7550
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = AMD Radeon Graphics (RADV GFX1201)
driverID = DRIVER_ID_MESA_RADV
driverName = radv
driverInfo = Mesa 24.2.8-1~bpo12+rpt4
conformanceVersion = 1.3.0.0
deviceUUID = 01000000-0300-0000-0000-000000000000
driverUUID = 414d442d-4d45-5341-2d44-525600000000
GPU1:
apiVersion = 1.3.289
driverVersion = 0.0.1
vendorID = 0x10005
deviceID = 0x0000
deviceType = PHYSICAL_DEVICE_TYPE_CPU
deviceName = llvmpipe (LLVM 15.0.6, 128 bits)
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 24.2.8-1~bpo12+rpt4 (LLVM 15.0.6)
conformanceVersion = 1.3.1.1
deviceUUID = 6d657361-3234-2e32-2e38-2d317e627000
driverUUID = 6c6c766d-7069-7065-5555-494400000000
Card is on the site here, btw: https://pipci.jeffgeerling.com/cards_gpu/amd-radeon-rx-9070-xt.html
Mesa version default in Bookworm:
$ vulkaninfo | grep "Mesa"
'DISPLAY' environment variable not set... skipping surface info
VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.3.211, layer version 1:
driverInfo = Mesa 24.2.8-1~bpo12+rpt4
driverInfo = Mesa 24.2.8-1~bpo12+rpt4
driverInfo = Mesa 24.2.8-1~bpo12+rpt4 (LLVM 15.0.6)
driverInfo = Mesa 24.2.8-1~bpo12+rpt4 (LLVM 15.0.6)
I'm upgrading Mesa, to see if that helps.
Add the following lines inside /etc/apt/sources.list:
deb https://deb.debian.org/debian/ bookworm-backports main contrib non-free
deb-src https://deb.debian.org/debian/ bookworm-backports main contrib non-free
Run sudo apt update, then install the updated mesa version:
sudo apt install -t bookworm-backports mesa-vulkan-drivers
After a reboot, the new Mesa version is:
$ vulkaninfo | grep "Mesa"
VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.4.303, layer version 1:
driverInfo = Mesa 25.0.7-2~bpo12+1
driverInfo = Mesa 25.0.7-2~bpo12+1
driverInfo = Mesa 25.0.7-2~bpo12+1 (LLVM 15.0.6)
driverInfo = Mesa 25.0.7-2~bpo12+1 (LLVM 15.0.6)
And what's better... it works!
Running glmark2-es2-wayland gives tons of errors like:
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;:'gfx1201' is not a recognized processor for this target (ignoring processor)
'gfx1201' is not a recognized processor for this target (ignoring processor)
amd: LLVM doesn't support gfx1201, bailing out...
FPS: 10299 FrameTime: 0.097 ms
But it does run.
Total system power draw while running GravityMark is around 266W, not bad (idle power around 15W, also pretty good compared to many other older graphics cards I've tested):
Result:
Re-testing on kernel rpi-6.17.y with the nightly Debian Trixie image, I got everything going pretty quickly.
dmesg output:
[ 5.425018] [drm] amdgpu kernel modesetting enabled.
[ 5.425284] amdgpu 0001:03:00.0: enabling device (0000 -> 0002)
[ 5.425302] amdgpu 0001:03:00.0: amdgpu: initializing kernel modesetting (IP DISCOVERY 0x1002:0x7550 0x148C:0x2435 0xC0).
[ 5.425334] amdgpu 0001:03:00.0: amdgpu: register mmio base: 0x80000000
[ 5.425338] amdgpu 0001:03:00.0: amdgpu: register mmio size: 524288
[ 5.438879] amdgpu 0001:03:00.0: amdgpu: detected ip block number 0 <soc24_common>
[ 5.438899] amdgpu 0001:03:00.0: amdgpu: detected ip block number 1 <gmc_v12_0>
[ 5.438933] amdgpu 0001:03:00.0: amdgpu: detected ip block number 2 <ih_v7_0>
[ 5.438947] amdgpu 0001:03:00.0: amdgpu: detected ip block number 3 <psp>
[ 5.438958] amdgpu 0001:03:00.0: amdgpu: detected ip block number 4 <smu>
[ 5.438970] amdgpu 0001:03:00.0: amdgpu: detected ip block number 5 <dm>
[ 5.438981] amdgpu 0001:03:00.0: amdgpu: detected ip block number 6 <gfx_v12_0>
[ 5.438991] amdgpu 0001:03:00.0: amdgpu: detected ip block number 7 <sdma_v7_0>
[ 5.439003] amdgpu 0001:03:00.0: amdgpu: detected ip block number 8 <vcn_v5_0_0>
[ 5.439015] amdgpu 0001:03:00.0: amdgpu: detected ip block number 9 <jpeg_v5_0_0>
[ 5.439025] amdgpu 0001:03:00.0: amdgpu: detected ip block number 10 <mes_v12_0>
[ 5.445052] Bluetooth: hci0: BCM: chip id 107
[ 5.446401] Bluetooth: hci0: BCM: features 0x2f
[ 5.448012] Bluetooth: hci0: BCM4345C0
[ 5.448021] Bluetooth: hci0: BCM4345C0 (003.001.025) build 0000
[ 5.449294] Bluetooth: hci0: BCM4345C0 'brcm/BCM4345C0.raspberrypi,500.hcd' Patch
[ 5.449475] amdgpu 0001:03:00.0: amdgpu: Fetched VBIOS from ROM BAR
[ 5.449488] amdgpu: ATOM BIOS: 113-EXT112333-100
[ 5.476405] amdgpu 0001:03:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[ 5.476439] amdgpu 0001:03:00.0: amdgpu: PCIE atomic ops is not supported
[ 5.476904] amdgpu 0001:03:00.0: amdgpu: GPU posting now...
[ 5.477629] amdgpu 0001:03:00.0: amdgpu: MEM ECC is not presented.
[ 5.478251] amdgpu 0001:03:00.0: amdgpu: SRAM ECC is not presented.
[ 5.478576] amdgpu 0001:03:00.0: amdgpu: vm size is 262144 GB, 4 levels, block size is 9-bit, fragment size is 9-bit
[ 5.479054] amdgpu 0001:03:00.0: BAR 2 [mem 0x1810000000-0x18101fffff 64bit pref]: releasing
[ 5.479300] amdgpu 0001:03:00.0: BAR 0 [mem 0x1800000000-0x180fffffff 64bit pref]: releasing
[ 5.479529] pcieport 0001:02:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]: releasing
[ 5.479742] pcieport 0001:01:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]: releasing
[ 5.479953] pcieport 0001:00:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]: releasing
[ 5.480165] pcieport 0001:00:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.480365] pcieport 0001:00:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.480376] pcieport 0001:00:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.480379] pcieport 0001:00:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.480383] pcieport 0001:01:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.480386] pcieport 0001:01:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.480388] pcieport 0001:01:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.480391] pcieport 0001:01:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.480394] pcieport 0001:02:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.480397] pcieport 0001:02:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.480399] pcieport 0001:02:00.0: bridge window [mem size 0x600000000 64bit pref]: can't assign; no space
[ 5.480402] pcieport 0001:02:00.0: bridge window [mem size 0x600000000 64bit pref]: failed to assign
[ 5.480406] amdgpu 0001:03:00.0: BAR 0 [mem size 0x400000000 64bit pref]: can't assign; no space
[ 5.480408] amdgpu 0001:03:00.0: BAR 0 [mem size 0x400000000 64bit pref]: failed to assign
[ 5.480412] amdgpu 0001:03:00.0: BAR 2 [mem size 0x00200000 64bit pref]: can't assign; no space
[ 5.480414] amdgpu 0001:03:00.0: BAR 2 [mem size 0x00200000 64bit pref]: failed to assign
[ 5.480417] amdgpu 0001:03:00.0: BAR 0 [mem size 0x400000000 64bit pref]: can't assign; no space
[ 5.480420] amdgpu 0001:03:00.0: BAR 0 [mem size 0x400000000 64bit pref]: failed to assign
[ 5.480422] amdgpu 0001:03:00.0: BAR 2 [mem size 0x00200000 64bit pref]: can't assign; no space
[ 5.480424] amdgpu 0001:03:00.0: BAR 2 [mem size 0x00200000 64bit pref]: failed to assign
[ 5.480428] pcieport 0001:00:00.0: PCI bridge to [bus 01-03]
[ 5.480434] pcieport 0001:00:00.0: bridge window [mem 0x1b80000000-0x1b801fffff]
[ 5.480439] pcieport 0001:00:00.0: PCI bridge to [bus 01-03]
[ 5.480458] pcieport 0001:00:00.0: bridge window [mem 0x1b80000000-0x1b801fffff]
[ 5.480462] pcieport 0001:00:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]
[ 5.480465] pcieport 0001:01:00.0: PCI bridge to [bus 02-03]
[ 5.480474] pcieport 0001:01:00.0: bridge window [mem 0x1b80000000-0x1b800fffff]
[ 5.480479] pcieport 0001:01:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]
[ 5.480486] pcieport 0001:02:00.0: PCI bridge to [bus 03]
[ 5.480491] pcieport 0001:02:00.0: bridge window [mem 0x1b80000000-0x1b800fffff]
[ 5.480496] pcieport 0001:02:00.0: bridge window [mem 0x1800000000-0x1817ffffff 64bit pref]
[ 5.480507] amdgpu 0001:03:00.0: amdgpu: Not enough PCI address space for a large BAR.
[ 5.480512] amdgpu 0001:03:00.0: BAR 0 [mem 0x1800000000-0x180fffffff 64bit pref]: assigned
[ 5.480523] amdgpu 0001:03:00.0: BAR 2 [mem 0x1810000000-0x18101fffff 64bit pref]: assigned
[ 5.480538] amdgpu 0001:03:00.0: amdgpu: VRAM: 16304M 0x0000008000000000 - 0x00000083FAFFFFFF (16304M used)
[ 5.480542] amdgpu 0001:03:00.0: amdgpu: GART: 512M 0x0000000000000000 - 0x000000001FFFFFFF
[ 5.480546] [drm] Detected VRAM RAM=16304M, BAR=256M
[ 5.480548] [drm] RAM width 256bits GDDR6
[ 5.482720] amdgpu 0001:03:00.0: amdgpu: amdgpu: 16304M of VRAM memory ready
[ 5.482732] amdgpu 0001:03:00.0: amdgpu: amdgpu: 8001M of GTT memory ready.
[ 5.482770] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 5.482861] amdgpu 0001:03:00.0: amdgpu: PCIE GART of 512M enabled (table at 0x0000008000000000).
[ 5.487942] amdgpu 0001:03:00.0: amdgpu: [drm] Loading DMUB firmware via PSP: version=0x0000F501
[ 5.553151] amdgpu 0001:03:00.0: amdgpu: Found VCN firmware Version ENC: 1.4 DEC: 9 VEP: 0 Revision: 1
[ 5.781080] amdgpu 0001:03:00.0: amdgpu: RAS: optional ras ta ucode is not available
[ 5.784584] amdgpu 0001:03:00.0: amdgpu: RAP: optional rap ta ucode is not available
[ 5.784588] amdgpu 0001:03:00.0: amdgpu: SECUREDISPLAY: optional securedisplay ta ucode is not available
[ 5.784623] amdgpu 0001:03:00.0: amdgpu: smu driver if version = 0x0000002e, smu fw if version = 0x00000031, smu fw program = 0, smu fw version = 0x00683900 (104.57.0)
[ 5.784628] amdgpu 0001:03:00.0: amdgpu: SMU driver if version not matched
[ 5.814124] amdgpu 0001:03:00.0: amdgpu: SMU is initialized successfully!
[ 5.816241] amdgpu 0001:03:00.0: amdgpu: [drm] Display Core v3.2.340 initialized on DCN 4.0.1
[ 5.816255] amdgpu 0001:03:00.0: amdgpu: [drm] DP-HDMI FRL PCON supported
[ 5.820496] amdgpu 0001:03:00.0: amdgpu: [drm] DMUB hardware initialized: version=0x0000F501
[ 6.023573] amdgpu 0001:03:00.0: amdgpu: [drm] PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 6.023721] amdgpu 0001:03:00.0: amdgpu: [drm] PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 6.023845] amdgpu 0001:03:00.0: amdgpu: [drm] PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 6.023914] amdgpu 0001:03:00.0: amdgpu: [drm] PSR support 0, DC PSR ver -1, sink PSR ver 0 DPCD caps 0x0 su_y_granularity 0
[ 6.024333] amdgpu 0001:03:00.0: amdgpu: program CP_MES_CNTL : 0x4000000
[ 6.024339] amdgpu 0001:03:00.0: amdgpu: program CP_MES_CNTL : 0xc000000
[ 6.032968] amdgpu 0001:03:00.0: amdgpu: SE 4, SH per SE 2, CU per SH 8, active_cu_number 64
[ 6.032974] amdgpu 0001:03:00.0: amdgpu: ring gfx_0.0.0 uses VM inv eng 0 on hub 0
[ 6.032978] amdgpu 0001:03:00.0: amdgpu: ring comp_1.0.0 uses VM inv eng 1 on hub 0
[ 6.032981] amdgpu 0001:03:00.0: amdgpu: ring comp_1.1.0 uses VM inv eng 4 on hub 0
[ 6.032984] amdgpu 0001:03:00.0: amdgpu: ring comp_1.0.1 uses VM inv eng 6 on hub 0
[ 6.032986] amdgpu 0001:03:00.0: amdgpu: ring comp_1.1.1 uses VM inv eng 7 on hub 0
[ 6.032988] amdgpu 0001:03:00.0: amdgpu: ring sdma0 uses VM inv eng 8 on hub 0
[ 6.032991] amdgpu 0001:03:00.0: amdgpu: ring sdma1 uses VM inv eng 9 on hub 0
[ 6.032994] amdgpu 0001:03:00.0: amdgpu: ring vcn_unified_0 uses VM inv eng 0 on hub 8
[ 6.032997] amdgpu 0001:03:00.0: amdgpu: ring jpeg_dec uses VM inv eng 1 on hub 8
[ 6.036673] amdgpu 0001:03:00.0: amdgpu: Using BACO for runtime pm
[ 6.037103] [drm] Initialized amdgpu 3.64.0 for 0001:03:00.0 on minor 2
[ 6.108625] Console: switching to colour frame buffer device 480x135
[ 6.108658] amdgpu 0001:03:00.0: [drm] fb0: amdgpudrmfb frame buffer device
I also did not need to install a later version of Mesa, so I'm going to update the instructions in the top post to note that change.
$ DISPLAY=:0 glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD Radeon Graphics (radeonsi, gfx1201, ACO, DRM 3.64, 6.17.0-v8-4k-gpu+) (0x7550)
Version: 25.0.7
Accelerated: yes
Video memory: 16384MB
Unified memory: no
What's odd is I only got a score of 41,193 (re-tested 3x) with this Trixie setup, compared to 56,944 under Bookworm with Mesa compiled from source. That seems like a pretty hefty performance delta!
Also re-testing LLM performance with llama 3.2:3B, I am getting slightly reduced performance (see original benchmarks):
| model | size | params | backend | ngl | test | t/s |
|---|---|---|---|---|---|---|
| llama 3B Q4_K - Medium | 1.87 GiB | 3.21 B | Vulkan | 99 | pp512 | 1967.33 ± 4.02 |
| llama 3B Q4_K - Medium | 1.87 GiB | 3.21 B | Vulkan | 99 | pp4096 | 1679.32 ± 2.86 |
| llama 3B Q4_K - Medium | 1.87 GiB | 3.21 B | Vulkan | 99 | tg128 | 76.49 ± 0.27 |
| llama 3B Q4_K - Medium | 1.87 GiB | 3.21 B | Vulkan | 99 | pp4096+tg128 | 916.63 ± 2.49 |
So maybe some improvements that are in the latest version of Mesa that aren't in the version shipping with Trixie? I don't think so, as I was running the backports version, which I just confirmed is the same major/minor release.
I also triple-checked to ensure dtparam=pciex1_gen=3 is set in /boot/firmware/config.txt; just another variable I wanted to ensure was consistent.