Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Intel Arc A750 #510

Open
geerlingguy opened this issue Feb 10, 2023 · 114 comments
Open

Add Intel Arc A750 #510

geerlingguy opened this issue Feb 10, 2023 · 114 comments

Comments

@geerlingguy
Copy link
Owner

geerlingguy commented Feb 10, 2023

I am testing an Intel Arc A750 8GB graphics card:

DSC00672

660240_513655_01_front_zoom

It requires external PCIe power, so needs to be used with a suitable power supply. Intel seems to only officially support Ubuntu 22.04, and by default only AMD64/x86_64... Here's the full Ubuntu installation guide for Arc drivers.

Not sure if I can get it to work at all on Debian, and I also haven't confirmed if aarch64/ARM64 support is at all existing, planned, or not planned. Would like to find out, because I'll soon have another ARM64 system to test this in with a bit more firepower.

See also: Intel Arc Graphics A750/A770 Performance Ahead Of Linux 6.2 + Mesa 23.0 — it may be possible if the Pi OS kernel is up to 6.2 (it was 6.1 last time I checked) to compile the driver and see what happens.

Current Status and setup instructions

Last updated: Jan 21, 2025

It looks like at least some of the Arc cards are functional if you compile the 6.12 kernel (the next LTS release, which is coming to the Pi soon), and apply one or two small changes.

Current steps to get this card working with Pi OS Bookworm

  1. Clone the Raspberry Pi Linux kernel patching the next Raspberry Pi 6.12.y kernel tree with my GPU-enablement patch (or just check out my branch directly).
  2. Before compiling the kernel (in the next step), run make menuconfig and select the options:
    1. Kernel Features > Page Size > 4 KB (for Box86 and general driver compatibility)
    2. Device Drivers > Graphics support > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) > Intel Xe Graphics
    3. Device Drivers > Graphics support > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) > Intel Xe Graphics > Force probe xe for selected Intel hardware IDs > * (enter * manually for the value)
  3. Recompile the kernel following Raspberry Pi's instructions
  4. Install updated Intel i915 firmware (see instruction below)
  5. Modify /boot/firmware/config.txt:
    1. Comment out the dtoverlay=vc4-kms-v3d line
    2. (Optional) Add the line dtparam=pciex1_gen=3 to the end
  6. Reboot the Pi with the card attached using an appropriate PCIe riser and external ATX power supply.

Install Firmware

# i915 firmware
sudo mkdir -p /usr/lib/firmware/i915 && cd /usr/lib/firmware/i915
sudo wget -o - -O dg2_guc_70.bin -q https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/dg2_guc_70.bin

Check if 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:

$ sudo apt install -y mesa-utils
$ DISPLAY=:0 glxinfo -B
name of display: :0
MESA: warning: Support for this platform is experimental with Xe KMD, bug reports may be ignored.
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel (0x8086)
    Device: Mesa Intel(R) Arc(tm) A750 Graphics (DG2) (0x56a1)
    Version: 24.3.2
    Accelerated: yes
    Video memory: 8128MB
...

(Prepend DISPLAY=:0 if running commands over SSH.)

Debugging / Troubleshooting

  • To get full debug output in dmesg, add drm.debug=0xe to /boot/firmware/cmdline.txt
  • Currently, I had to compile a newer version of Mesa to get the labwc desktop environment to load
  • With the newer Mesa (24.3.2), I am seeing many screen glitches / artifacts, but at least I can sorta use the system.

For the source and more details of the patch in progress, see:

@geerlingguy
Copy link
Owner Author

There's a good deal of coil whine on my card—when testing on the PC and it needs to render anything. At idle there isn't much, but when the fans stop spinning and the card is not displaying anything, or alternatively when the GPU is under heavy load, there's a lot of coil whine, enough to be pretty distracting.

@geerlingguy
Copy link
Owner Author

On Twitter someone mentioned this commit: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/gpu/drm/i915/Kconfig?h=next-20230210 — it looks like the i915 has some hardcoded x86 dependencies:

# SPDX-License-Identifier: GPL-2.0-only
config DRM_I915
	tristate "Intel 8xx/9xx/G3x/G4x/HD Graphics"
	depends on DRM
	depends on X86 && PCI
	depends on !PREEMPT_RT

@geerlingguy
Copy link
Owner Author

lspci output:

01:00.0 PCI bridge: Intel Corporation Device 4fa0 (rev 01) (prog-if 00 [Normal decode])
	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 255
	Region 0: Memory at 610000000 (64-bit, prefetchable) [disabled] [size=8M]
	Bus: primary=01, secondary=02, subordinate=04, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [disabled]
	Memory behind bridge: d8000000-d9bfffff [size=28M]
	Prefetchable memory behind bridge: 00000000c0000000-00000000cfffffff [size=256M]
	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: [40] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [70] Express (v2) Upstream Port, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ SlotPowerLimit 0.000W
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 16GT/s, Width x16, ASPM L1, Exit Latency L1 <64us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/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-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS+
			 AtomicOpsCap: Routing+ 32bit+ 64bit+ 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled,
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-16GT/s, Crosslink- Retimer+ 2Retimers+ DRS+
		LnkCtl2: Target Link Speed: 16GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: Upstream Port
	Capabilities: [100 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: [158 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [188 v1] Physical Layer 16.0 GT/s <?>
	Capabilities: [1b8 v1] Lane Margining at the Receiver <?>
	Capabilities: [20c v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [214 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=10us PortTPowerOnTime=14us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=29696ns
		L1SubCtl2: T_PwrOn=14us
	Capabilities: [230 v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
	Capabilities: [330 v1] Vendor Specific Information: ID=0001 Rev=1 Len=038 <?>
	Capabilities: [368 v1] Data Link Feature <?>

02:01.0 PCI bridge: Intel Corporation Device 4fa4 (prog-if 00 [Normal decode])
	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-
	Bus: primary=02, secondary=03, subordinate=03, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [disabled]
	Memory behind bridge: d8000000-d97fffff [size=24M]
	Prefetchable memory behind bridge: 00000000c0000000-00000000cfffffff [size=256M]
	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: [40] Express (v2) Downstream Port (Slot-), MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port raspberrypi/firmware#8, Speed 2.5GT/s, Width x1, ASPM L1, Exit Latency L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (ok), Width x1 (ok)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp+ 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- ARIFwd+
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled, ARIFwd+
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [a0] 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: [7c] Subsystem: Intel Corporation Device 4fa4
	Capabilities: [100 v1] 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: [148 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
		ACSCtl:	SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-

02:04.0 PCI bridge: Intel Corporation Device 4fa4 (prog-if 00 [Normal decode])
	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-
	Bus: primary=02, secondary=04, subordinate=04, sec-latency=0
	I/O behind bridge: 0000f000-00000fff [disabled]
	Memory behind bridge: d9800000-d98fffff [size=1M]
	Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled]
	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: [40] Express (v2) Downstream Port (Slot-), MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port raspberrypi/firmware#8, Speed 2.5GT/s, Width x1, ASPM L1, Exit Latency L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (ok), Width x1 (ok)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- ARIFwd+
			 AtomicOpsCap: Routing-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [a0] 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: [7c] Subsystem: Intel Corporation Device 0000
	Capabilities: [100 v1] 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: [148 v1] Access Control Services
		ACSCap:	SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
		ACSCtl:	SrcValid- TransBlk- ReqRedir- CmpltRedir- UpstreamFwd- EgressCtrl- DirectTrans-

03:00.0 VGA compatible controller: Intel Corporation Device 56a1 (rev 08) (prog-if 00 [VGA controller])
	Subsystem: Intel Corporation Device 1021
	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-
	Region 0: Memory at 618000000 (64-bit, non-prefetchable) [disabled] [size=16M]
	Region 2: Memory at 600000000 (64-bit, prefetchable) [disabled] [size=256M]
	Expansion ROM at 619000000 [virtual] [disabled] [size=2M]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (ok), Width x1 (ok)
			TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range B, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp- ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [ac] MSI: Enable- Count=1/1 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [d0] 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: [100 v1] Alternative Routing-ID Interpretation (ARI)
		ARICap:	MFVC- ACS-, Next Function: 0
		ARICtl:	MFVC- ACS-, Function Group: 0
	Capabilities: [420 v1] Physical Resizable BAR
		BAR 2: current size: 256MB, supported: 256MB 512MB 1GB 2GB 4GB 8GB
	Capabilities: [400 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns

04:00.0 Audio device: Intel Corporation Device 4f90
	Subsystem: Intel Corporation Device 1021
	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-
	Region 0: Memory at 619800000 (64-bit, non-prefetchable) [disabled] [size=16K]
	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: [60] MSI: Enable- Count=1/1 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [70] Express (v2) Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 <64us
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (ok), Width x1 (ok)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp- ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [100 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns

And dmesg:

[    1.192146] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[    1.192185] brcm-pcie fd500000.pcie:   No bus range found for /scb/pcie@7d500000, using [bus 00-ff]
[    1.192272] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x063fffffff -> 0x00c0000000
[    1.192355] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x01ffffffff -> 0x0400000000
[    1.239423] brcm-pcie fd500000.pcie: link up, 5.0 GT/s PCIe x1 (SSC)
[    1.239836] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[    1.239855] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.239873] pci_bus 0000:00: root bus resource [mem 0x600000000-0x63fffffff] (bus address [0xc0000000-0xffffffff])
[    1.239965] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
[    1.240217] pci 0000:00:00.0: PME# supported from D0 D3hot
[    1.244038] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.853502] pci 0000:01:00.0: [8086:4fa0] type 01 class 0x060400
[    1.853578] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff 64bit pref]
[    1.853955] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    1.854053] pci 0000:01:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x1 link at 0000:00:00.0 (capable of 252.048 Gb/s with 16.0 GT/s PCIe x16 link)
[    1.857802] pci 0000:01:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.858187] pci 0000:02:01.0: [8086:4fa4] type 01 class 0x060400
[    1.858358] pci 0000:02:01.0: enabling Extended Tags
[    1.858571] pci 0000:02:01.0: PME# supported from D0 D3hot D3cold
[    1.859197] pci 0000:02:04.0: [8086:4fa4] type 01 class 0x060400
[    1.859380] pci 0000:02:04.0: enabling Extended Tags
[    1.859604] pci 0000:02:04.0: PME# supported from D0 D3hot D3cold
[    1.862902] pci 0000:02:01.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.862942] pci 0000:02:04.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.863223] pci 0000:03:00.0: [8086:56a1] type 00 class 0x030000
[    1.863296] pci 0000:03:00.0: reg 0x10: [mem 0x00000000-0x00ffffff 64bit]
[    1.863348] pci 0000:03:00.0: reg 0x18: [mem 0x00000000-0x0fffffff 64bit pref]
[    1.863421] pci 0000:03:00.0: reg 0x30: [mem 0x00000000-0x001fffff pref]
[    1.863690] pci 0000:03:00.0: PME# supported from D0 D3hot
[    1.863954] pci 0000:03:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[    1.867451] pci_bus 0000:03: busn_res: [bus 03-ff] end is updated to 03
[    1.867742] pci 0000:04:00.0: [8086:4f90] type 00 class 0x040300
[    1.867822] pci 0000:04:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[    1.867975] pci 0000:04:00.0: enabling Extended Tags
[    1.868188] pci 0000:04:00.0: PME# supported from D3hot D3cold
[    1.871916] pci_bus 0000:04: busn_res: [bus 04-ff] end is updated to 04
[    1.871947] pci_bus 0000:02: busn_res: [bus 02-ff] end is updated to 04
[    1.871971] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 04
[    1.872036] pci 0000:00:00.0: BAR 9: assigned [mem 0x600000000-0x617ffffff 64bit pref]
[    1.872056] pci 0000:00:00.0: BAR 8: assigned [mem 0x618000000-0x619bfffff]
[    1.872082] pci 0000:01:00.0: BAR 9: assigned [mem 0x600000000-0x60fffffff 64bit pref]
[    1.872099] pci 0000:01:00.0: BAR 0: assigned [mem 0x610000000-0x6107fffff 64bit pref]
[    1.872143] pci 0000:01:00.0: BAR 8: assigned [mem 0x618000000-0x619bfffff]
[    1.872162] pci 0000:02:01.0: BAR 9: assigned [mem 0x600000000-0x60fffffff 64bit pref]
[    1.872179] pci 0000:02:01.0: BAR 8: assigned [mem 0x618000000-0x6197fffff]
[    1.872194] pci 0000:02:04.0: BAR 8: assigned [mem 0x619800000-0x6198fffff]
[    1.872213] pci 0000:03:00.0: BAR 2: assigned [mem 0x600000000-0x60fffffff 64bit pref]
[    1.872258] pci 0000:03:00.0: BAR 0: assigned [mem 0x618000000-0x618ffffff 64bit]
[    1.872301] pci 0000:03:00.0: BAR 6: assigned [mem 0x619000000-0x6191fffff pref]
[    1.872318] pci 0000:02:01.0: PCI bridge to [bus 03]
[    1.872344] pci 0000:02:01.0:   bridge window [mem 0x618000000-0x6197fffff]
[    1.872366] pci 0000:02:01.0:   bridge window [mem 0x600000000-0x60fffffff 64bit pref]
[    1.872399] pci 0000:04:00.0: BAR 0: assigned [mem 0x619800000-0x619803fff 64bit]
[    1.872445] pci 0000:02:04.0: PCI bridge to [bus 04]
[    1.872470] pci 0000:02:04.0:   bridge window [mem 0x619800000-0x6198fffff]
[    1.872508] pci 0000:01:00.0: PCI bridge to [bus 02-04]
[    1.872531] pci 0000:01:00.0:   bridge window [mem 0x618000000-0x619bfffff]
[    1.872552] pci 0000:01:00.0:   bridge window [mem 0x600000000-0x60fffffff 64bit pref]
[    1.872580] pci 0000:00:00.0: PCI bridge to [bus 01-04]
[    1.872600] pci 0000:00:00.0:   bridge window [mem 0x618000000-0x619bfffff]
[    1.872618] pci 0000:00:00.0:   bridge window [mem 0x600000000-0x617ffffff 64bit pref]

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 15, 2023

To test out Intel's open source kernel driver, I cloned the 6.2.y branch of Raspberry Pi's linux fork:

git clone -b rpi-6.2.y https://github.com/raspberrypi/linux.git && cd linux
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
  # Enable the i915 driver
  -> Device Drivers
    -> Graphics support
      -> Intel 8xx/9xx/G3x/G4x/HD Graphics
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 15, 2023

...except I can't select the Intel Graphics support using menuconfig, because of the dependencies:

Symbol: DRM_I915 [=n]                                                                                           │  
  │ Type  : tristate                                                                                                │  
  │ Defined at drivers/gpu/drm/i915/Kconfig:2                                                                       │  
  │   Prompt: Intel 8xx/9xx/G3x/G4x/HD Graphics                                                                     │  
  │   Depends on: HAS_IOMEM [=y] && DRM [=m] && X86 && PCI [=y] && !PREEMPT_RT [=n]                                 │  
  │   Location:                                                                                                     │  
  │     -> Device Drivers                                                                                           │  
  │ (1)   -> Graphics support                                                                                       │  
  │         -> Intel 8xx/9xx/G3x/G4x/HD Graphics (DRM_I915 [=n])                                                    │  
  │ Selects: INTEL_GTT [=n] && INTERVAL_TREE [=y] && SHMEM [=y] && TMPFS [=y] && DRM_DISPLAY_DP_HELPER [=n] && DRM_

I asked about arm/arm64/aarch64 support on Intel Arc/Xe on Twitter and got a few responses, mostly suggesting X86 drivers are the current focus, but they may rewrite the driver and work on getting rid of the X86-specific dependencies...

I also asked about it on Discord, but I noticed most of the active discussion (on Intel's official Arc/Xe community Discord) seems to center around where people can buy Nvidia graphics cards 🤣

Screen Shot 2023-02-15 at 10 39 44 AM

The only other mention on Twitter is from @ric96, and he also seems to notice there's no support for arm64...

@Mis012
Copy link

Mis012 commented Apr 14, 2023

Just FYI, the most likely reason x86 is listed as a dependency is that historically Intel only had iGPUs, and those can't exactly be plugged into an aarch64 system for obvious reasons. That being said, it seems quite likely that if those dependencies were removed (since they are for all we know completely bogus), chances are the driver would actually compile just fine. It seems quite unlikely that it uses assembly for anything, which is just about the only valid reason for it to not compile for aarch64

@pimzand
Copy link

pimzand commented Mar 31, 2024

It looks like you could try again with Xe drivers in kernel 6.8:
https://www.phoronix.com/review/intel-xe-benchmark

@DanaGoyette
Copy link

DanaGoyette commented May 1, 2024

If you do decide to test this with 6.8, note that Ubuntu's Mesa doesn't have the Intel drivers enabled, and even if you check out the experimental branch of the mesa packaging from debian's "salsa" repo, it doesn't enable the Intel drivers for armhf or arm64/aarch64. You'll want to edit debian/rules:

   # etnaviv, tegra, vc4 and v3d kernel support are only available on armhf and arm64
   ifneq (,$(filter $(DEB_HOST_ARCH), armhf arm64))
-       GALLIUM_DRIVERS += etnaviv panfrost svga tegra vc4 v3d
-       VULKAN_DRIVERS += broadcom freedreno
+       GALLIUM_DRIVERS += iris etnaviv panfrost svga tegra vc4 v3d
+       VULKAN_DRIVERS += intel broadcom freedreno
   endif

On my LX2160A, the kernel driver for my A770 loads once I add xe.force_probe=56a0. It complains about lack of resizable BAR, though. With a manually rebuilt Mesa, Weston works, but gdm3 and sddm both glitch out and freeze, and autologin doesn't give a working desktop either.

[ 4908.671096] xe 0004:03:00.0: [drm] Timedout job: seqno=4294967224, guc_id=7, flags=0x0
[ 4908.679401] xe 0004:03:00.0: [drm] Engine reset: guc_id=7

If you can get the driver to work without glitching out, you'll also run into these chirping crickets:
https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/234

(I actually bought the A770 to use with arm64, but now it's just sitting unused.)

@karatekid430
Copy link

Only slightly related but if anybody working for Intel is reading this, please note the new arm64 laptops all support USB4 / Thunderbolt and if Intel can release GPU drivers for these for arm64 Windows 11 and arm64 Linux then we would love that for eGPUs! Running a fast and efficient Snapdragon Elite X and then using eGPU for gaming or rendering would be amazing!

@geerlingguy
Copy link
Owner Author

@karatekid430 - Sadly, arm64 driver support on Windows for anything besides USB devices is pretty much nonexistent so far. I'm not sure if any graphics card (let alone NICs and other simpler devices) will support PCIe (especially through Thunderbolt/external enclosures) any time soon. Would love to be proven wrong on that!

@martinx72
Copy link

Some progress here with my Arc a750

[    4.093330] Registered IR keymap rc-cec
[    4.095023] rc rc0: vc4-hdmi-0 as /devices/platform/soc/107c701400.hdmi/rc/rc0
[    4.095088] input: vc4-hdmi-0 as /devices/platform/soc/107c701400.hdmi/rc/rc0/input8
[    4.160314] usbcore: registered new interface driver xpad
[    4.179470] xe 0000:03:00.0: enabling device (0000 -> 0002)
[    4.180283] xe 0000:03:00.0: [drm] Found DG2/G10 (device ID 56a1) display version 13.00
[    4.187393] Bluetooth: Core ver 2.22
[    4.187417] NET: Registered PF_BLUETOOTH protocol family
[    4.187419] Bluetooth: HCI device and connection manager initialized
[    4.187424] Bluetooth: HCI socket layer initialized
[    4.187427] Bluetooth: L2CAP socket layer initialized
[    4.187430] Bluetooth: SCO socket layer initialized
[    4.190074] xe 0000:03:00.0: [drm] Using GuC firmware from i915/dg2_guc_70.bin version 70.29.2
[    4.190221] ------------[ cut here ]------------
[    4.190223] kernel BUG at drivers/gpu/drm/drm_gem.c:155!
[    4.195556] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
[    4.202369] Modules linked in: sha1_ce bluetooth sha1_generic xe(+) snd_soc_rpi_simple_soundcard ecdh_generic raspberrypi_hwmon ecc binfmt_misc brcmfmac libaes i2c_algo_bit drm_buddy xpad brcmutil vc4(+) drm_suballoc_helper drm_gpuvm snd_soc_hdmi_codec ff_memless cec drm_exec rpivid_hevc(C) cfg80211 i2c_brcmstb drm_display_helper pisp_be drm_ttm_helper spi_bcm2835 ttm drm_dma_helper v4l2_mem2mem videobuf2_dma_contig videobuf2_memops designware_i2s hid_logitech_dj(+) v3d snd_soc_pcm5102a rfkill gpu_sched videobuf2_v4l2 videodev snd_soc_core snd_compress drm_shmem_helper gpio_keys videobuf2_common snd_pcm_dmaengine drm_kms_helper snd_pcm mc pwm_fan snd_timer snd raspberrypi_gpiomem rp1_adc nvmem_rmem uio_pdrv_genirq uio uinput drm i2c_dev fuse drm_panel_orientation_quirks backlight dm_mod ip_tables x_tables ipv6
[    4.274521] CPU: 1 UID: 0 PID: 327 Comm: (udev-worker) Tainted: G         C         6.11.7-v8-16k+ raspberrypi/firmware#1
[    4.283779] Tainted: [C]=CRAP
[    4.286749] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[    4.292600] pstate: 00400009 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    4.299587] pc : drm_gem_private_object_init+0xac/0xb8 [drm]
[    4.305309] lr : ___xe_bo_create_locked+0x10c/0x3c0 [xe]
[    4.310758] sp : ffffc00080b0b500
[    4.314077] x29: ffffc00080b0b510 x28: 0000000000000000 x27: ffff800007b61248
[    4.321240] x26: ffff800007b60000 x25: 0000000000012022 x24: 0000000000000001
[    4.328402] x23: 0000000000000000 x22: 0000000000000000 x21: 0000000000000000
[    4.335564] x20: 000000000001a000 x19: ffff80000a5e3000 x18: ffffffffffffffff
[    4.342727] x17: 622e30375f637567 x16: ffffd06fce74f7d8 x15: d50e1386eb679192
[    4.349889] x14: 984f45474329738b x13: d50e1386eb679192 x12: 984f45474329738b
[    4.357051] x11: 0000000000000000 x10: 0000000000000000 x9 : ffffd06f8ab89654
[    4.364213] x8 : ffff80000a5e3400 x7 : 0000000000000000 x6 : 000000000000003f
[    4.371375] x5 : 0000000000000040 x4 : 0000000000000400 x3 : ffff80000a5e3340
[    4.378537] x2 : 000000000001a000 x1 : ffff80000a5e3000 x0 : ffff800007b60000
[    4.385699] Call trace:
[    4.388146]  drm_gem_private_object_init+0xac/0xb8 [drm]
[    4.393511]  __xe_bo_create_locked+0x194/0x318 [xe]
[    4.398490]  xe_bo_create_pin_map_at+0x74/0x1d0 [xe]
[    4.403552]  xe_managed_bo_create_pin_map+0x34/0x110 [xe]
[    4.409050]  xe_guc_log_init+0x44/0xb0 [xe]
[    4.413326]  xe_guc_init+0x9c/0x260 [xe]
[    4.417339]  xe_uc_init+0x24/0xc8 [xe]
[    4.421179]  xe_gt_init_hwconfig+0x6c/0xd8 [xe]
[    4.425802]  xe_device_probe+0x20c/0x578 [xe]
[    4.430251]  xe_pci_probe+0x68c/0x9c0 [xe]
[    4.434438]  local_pci_probe+0x48/0xb8
[    4.438198]  pci_device_probe+0xac/0x1b8
[    4.442129]  really_probe+0xc4/0x2a8
[    4.445712]  __driver_probe_device+0x80/0x140
[    4.450080]  driver_probe_device+0x44/0x170
[    4.454273]  __driver_attach+0x9c/0x1b0
[    4.458117]  bus_for_each_dev+0x80/0xe8
[    4.461963]  driver_attach+0x2c/0x40
[    4.465546]  bus_add_driver+0xec/0x218
[    4.469302]  driver_register+0x68/0x138
[    4.473145]  __pci_register_driver+0x54/0x68
[    4.477426]  xe_register_pci_driver+0x30/0x48 [xe]

xe drivers built, updated firmware.
booted and it detected the card, need more time to trace into the root cause.

note:
i use the RPi 6.11.y , turn the intel xe on via make menuconfig,
and force it to probe the vid/pid (i manually add it in the .config)
and update the firmware manually (got it from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-20241110.tar.gz )

@geerlingguy geerlingguy reopened this Nov 12, 2024
@geerlingguy
Copy link
Owner Author

@martinx72 Excited to re-open this issue ;)

@pimzand
Copy link

pimzand commented Nov 13, 2024

Fedora 41 for aarch64 has xe kernel support out of the box.

@martinx72
Copy link

Fedora 41 for aarch64 has xe kernel support out of the box.

@pimzand Does this release support Pi 5?

And some more progress here, at least no crash in the driver

[    4.909408] Setting dangerous option force_probe - tainting kernel
[    4.910326] [drm] Initialized vc4 0.0.0 for axi:gpu on minor 1
[    4.912910] vc4-drm axi:gpu: [drm] Cannot find any crtc or sizes
[    4.916179] xe 0000:03:00.0: enabling device (0000 -> 0002)
[    4.916328] vc4-drm axi:gpu: [drm] Cannot find any crtc or sizes
[    4.919959] vc4-drm axi:gpu: [drm] Cannot find any crtc or sizes
[    4.921582] xe 0000:03:00.0: [drm] Found DG2/G10 (device ID 56a1) display version 13.00 stepping C0
[    4.965268] brcmfmac: brcmf_c_process_txcap_blob: no txcap_blob available (err=-2)
[    4.965517] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Aug 29 2023 01:47:08 version 7.45.265 (28bca26 CY) FWID 01-b677b91b
[    4.976072] input: Microsoft Xbox Series S|X Controller as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2:1.0/input/input6
[    4.976364] xe 0000:03:00.0: [drm] Using GuC firmware from i915/dg2_guc_70.bin version 70.29.2
[    4.977619] usbcore: registered new interface driver xpad
[    4.989267] xe 0000:03:00.0: [drm] *ERROR* GT0: GuC mmio request 0x4509: failure 0x306 hint 0x0
[    4.989276] xe 0000:03:00.0: [drm] *ERROR* GT0: Failed to enable GuC CT (-ENXIO)
[    5.021751] Bluetooth: Core ver 2.22
[    5.021783] NET: Registered PF_BLUETOOTH protocol family
[    5.021784] Bluetooth: HCI device and connection manager initialized
[    5.021790] Bluetooth: HCI socket layer initialized
[    5.021792] Bluetooth: L2CAP socket layer initialized

Page Size set as 4K, then it went to some error much easier for me to narrow down the crash issue, but, i think i probably have to stop here. As intel keep modifying their repo every single day here: https://gitlab.freedesktop.org/drm/xe/kernel

IMO, never can chase their steps by myself. :(

@pimzand
Copy link

pimzand commented Nov 13, 2024

@pimzand Does this release support Pi 5?

Not fully, apparently: https://discussion.fedoraproject.org/t/aarch64-support-for-raspberry-pi-5/134857

I tried an Arc 310 Eco in an Ampere Altra system while still Fedora 40.
Xe support was introduced with F40 kernel 6.11.
The driver loaded without errors, but the screen stayed black.

@martinx72
Copy link

Not fully, apparently: https://discussion.fedoraproject.org/t/aarch64-support-for-raspberry-pi-5/134857

I tried an Arc 310 Eco in an Ampere Altra system while still Fedora 40. Xe support was introduced with F40 kernel 6.11. The driver loaded without errors, but the screen stayed black.

Just check the link in the post, https://rpmfusion.org/Howto/RaspberryPi
It says 'using Raspberry Pi Foundation downstream kernel and components from Fedora userspace.'

Then it is 6.6,y, and it never can boot with xe drive at all.

@DanaGoyette
Copy link

@karatekid430 - Sadly, arm64 driver support on Windows for anything besides USB devices is pretty much nonexistent so far. I'm not sure if any graphics card (let alone NICs and other simpler devices) will support PCIe (especially through Thunderbolt/external enclosures) any time soon. Would love to be proven wrong on that!

Intel doesn't have any ARM64 Windows drivers for any of their NICs I've checked. NVIDIA/Mellanox, on the other hand, does have in-the-box ARM64 Windows drivers for ConnectX-4 and newer.

I've used a Mellanox ConnectX-4 Lx 10-/25-gigabit ethernet NIC with my Snapdragon X machine on Windows ARM64, via USB4 / Thunderbolt. It works, but oddly, one direction seems to give only 5 gigabits of throughput for some reason.

As far as I can tell, there are no discrete GPU drivers for Windows ARM64. On ARM64 machines with UEFI, such as LX2160A, the closest you can get is loading AMD's GOP driver in UEFI to run the framebuffer with Microsoft Basic Graphics Adapter.

@geerlingguy
Copy link
Owner Author

@DanaGoyette From what I've heard, Nvidia may have working drivers for Windows arm64, as they've worked on support for enterprise use in Azure... at least that's what I infer from tweets like this.

@pepijndevos
Copy link

I see some fairly similar but different issues to what @martinx72 was seeing in their issue tracker, maybe worth reporting?
https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/3074

@geerlingguy
Copy link
Owner Author

Also, regarding Resizable BAR support:

[   10.099135] xe 0000:03:00.0: [drm] Failed to resize BAR2 to 8192M (-ENOSPC). Consider enabling 'Resizable BAR' support in your BIOS

I open an issue in the Pi firmware repo: Enable Resizable BAR support on Pi 5. It can't hurt to ask ;)

@6by9
Copy link

6by9 commented Jan 21, 2025

@6by9 - I ran kmstest on the console, and it outputs press enter to exit but doesn't seem to do anything on the external display. Does it output only through the internal Pi GPU maybe? I didn't see any errors in dmesg when I ran it.

It outputs through the first available DRM card with connectors defined by default. Use --device=/dev/dri/card2 for example if your card has registered as card2
(ls /dev/dri to see the valid values, although you will have v3d in there which has no outputs).

You should get something like

Connector 0/@33: HDMI-A-1
  Crtc 2/@81: [email protected] 594.000 3840/176/88/296/+ 2160/8/10/72/- 60 (60.00) P|D 
  Plane 2/@73: 0,0-3840x2160
    Fb 251 3840x2160-XR24
press enter to exit

if it has found a connector to set up on that card.

@geerlingguy
Copy link
Owner Author

geerlingguy commented Jan 21, 2025

pi@pi5-pcie:~ $ ls /dev/dri
by-path  card0  card1  card2  renderD128  renderD129

And apparently it's card2, and if I use that, I get a test pattern with RGB, CMYWK in a grid with some border bars.

Connector 5/@280: DP-4
  Crtc 0/@82: [email protected] 533.250 3840/48/64/48/+ 2160/3/5/54/- 60 (60.00) P|D 
  Plane 0/@32: 0,0-3840x2160
    Fb 292 3840x2160-XR24
press enter to exit

@6by9
Copy link

6by9 commented Jan 21, 2025

Sounds good. That means the basic DRM rendering of a plane works, and it's likely to be the 3D that is throwing a wobbler.

You can always try kmscube as a simpler test than a desktop. Again it offers a --device=... option to choose which graphics card you want to use.

Trying labwc-pi is possibly a better bet than startx. Wayland handles multiple DRM devices far better than X, and I certainly had that going with the AMD GPUs. (I'm looking out for a cheap Intel card to play with now!)

@geerlingguy
Copy link
Owner Author

Trying labwc-pi, I get some 'bad parameter' errors and:

libEGL warning: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)

@FibreFoX
Copy link

Right now I am actually not sure anymore if I disabled the other GPU via /boot/firmware/config.txt by commenting the dtoverlay-line out:

# Enable DRM VC4 V3D driver
# dtoverlay=vc4-kms-v3d
max_framebuffers=2

Still building kernel and setting up the system

🤔

@lfelipe
Copy link

lfelipe commented Jan 21, 2025

@geerlingguy looks like Iris is not built by default on the Raspberry Pi:

$ dpkg-query -L libgl1-mesa-dri | grep iris

Nor is the vulkan driver from looking at the mesa-vulkan-drivers package. So would require either rebuilding the mesa package to include it, or building locally in a directory just to test as well.

@6by9
Copy link

6by9 commented Jan 21, 2025

Trying labwc-pi, I get some 'bad parameter' errors and:

libEGL warning: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)

I was about to say that iris_dri.so is unlikely to be built in the Raspberry Pi OS default Mesa.
I was hesitating as the system I happened to have in front of me did have it, but I suspect I must have built it myself at some point.

@FibreFoX
Copy link

FibreFoX commented Jan 21, 2025

I finally found it, all my steps were okay, but I missed that I disabled the GPU from the Pi itself. I disabled it to have less noise while debugging all the XE issues.

Inside the file /boot/firmware/config.txt I've disabled the dtoverlay:

# Enable DRM VC4 V3D driver
# dtoverlay=vc4-kms-v3d
max_framebuffers=2

With that disabled, I get the output via HDMI again.

Here my full list of steps:

# Starting with a PiOS Lite (no desktop), created via Raspberry Pi Imager with injected credentials/SSH auth key

# making sure to have up2date system
sudo su
apt-get update
apt upgrade

# for editing files later
apt install vim

# to not forget it later ;)
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/dg2_guc_70.bin
mv ./dg2_guc_70.bin /lib/firmware/i915/dg2_guc_70.bin

# installing some build dependencies (might contain unneeded stuff, copy-pasted a lot from several of my own projects)
apt-get install -y bc bison flex libssl-dev make git
apt-get install -y libncurses5-dev
apt-get install -y xz-utils kmod
apt-get install -y libelf-dev libssl-dev

# clone the raspberry kernel, at time of writing at commit 05678eba0b1fc51355b03b0d3f05f059068baf3e
cd /opt
git clone --depth=1 --branch rpi-6.12.y https://github.com/raspberrypi/linux
cd linux

# adjusting kernel compile configuration
make bcm2712_defconfig
make menuconfig

# Kernel Features > Page Size > 4 KB
# Device Drivers > Graphics support > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) > Intel Xe Graphics (is disabled by default) # enabled this one
# please check https://dgpu-docs.intel.com/devices/hardware-table.html for your device, using my A380 has the ID 56a5
# Device Drivers > Graphics support > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) > Intel Xe Graphics > Force probe xe for selected Intel hardware IDs > 56a5

# next the file patches (3 files)
# edited drivers/gpu/drm/i915/display/intel_vga.c
# edited drivers/gpu/drm/i915/display/intel_display.c
# edited drivers/gpu/drm/xe/xe_guc.c

make -j$(nproc) Image.gz modules dtbs
make modules_install
# installing the generated files
cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
cp arch/arm64/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/
cp arch/arm64/boot/Image.gz /boot/firmware/kernel8-xe.img

# selecting the new compiled kernel
echo "kernel=kernel8-xe.img" | tee -a /boot/firmware/config.txt

# adding " xe.force_probe=56a5 i915.force_probe=!56a5 drm.debug=0xe" to my /boot/firmware/cmdline.txt

# disabling the line "dtoverlay=vc4-kms-v3d" inside /boot/firmware/config.txt

reboot

# system reboots fine and shows me console on the "external display" (connected via HDMI to the Intel ARC A380)

sudo su
apt install lightdm xserver-xorg raspberrypi-ui-mods arandr

raspi-config
# changing to start the GUI
# 1 > System Options
#   S5 Boot / Auto Login
#        B4 Desktop Autologin
# Finish
# Yes (for reboot)

Please not that I have not changed other firmware binaries, except the one the xe driver was checking and nagging about.

My hardware setup:

  • Raspberry Pi 5 with 8GB RAM
  • some Samsung SD-card
  • Labists 1080p HDMI monitor powered via USB-C
  • Pineboards uPCIty Lite
  • a very old beQuiet PSU
  • a short HDMI cable
  • a proper Raspberry Pi 4 USB-C power brick
  • Asrock Intel Arc A380 Challenger ITX 6GB OC

Probably there is some configuration needed for lightDM to NOT pick up the builtin graphics card.

EDIT: I am glad I could reproduce it 🐱 I was worried to have lost the missing bit

EDIT 2: this works for my A380, haven't tested it with my A770 ;) because its "in use" right now, will check that card in a few days

EDIT 3: disabling the builtin GPU means that there are not multiple /dev/dri/card* entries, but only one /dev/dri/card0, which makes all the tools "defauling" to the Intel card

@geerlingguy
Copy link
Owner Author

geerlingguy commented Jan 21, 2025

Indeed! Commenting dtoverlay=vc4-kms-v3d got me startx working.

Testing again with a reboot straight into the desktop environment, though, at least with a full Pi OS install using lightdm, gets a blank screen on the monitor and no warnings in dmesg.

pi@pi5-pcie:~ $ sudo systemctl status lightdm
× lightdm.service - Light Display Manager
     Loaded: loaded (/lib/systemd/system/lightdm.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Tue 2025-01-21 14:46:04 CST; 43s ago
   Duration: 757ms
       Docs: man:lightdm(1)
    Process: 1444 ExecStart=/usr/sbin/lightdm (code=exited, status=1/FAILURE)
   Main PID: 1444 (code=exited, status=1/FAILURE)
        CPU: 40ms

Jan 21 14:46:04 pi5-pcie systemd[1]: lightdm.service: Scheduled restart job, restart counter is at 5.
Jan 21 14:46:04 pi5-pcie systemd[1]: Stopped lightdm.service - Light Display Manager.
Jan 21 14:46:04 pi5-pcie systemd[1]: lightdm.service: Start request repeated too quickly.
Jan 21 14:46:04 pi5-pcie systemd[1]: lightdm.service: Failed with result 'exit-code'.
Jan 21 14:46:04 pi5-pcie systemd[1]: Failed to start lightdm.service - Light Display Manager.
Jan 21 14:46:04 pi5-pcie systemd[1]: lightdm.service: Triggering OnFailure= dependencies.

If I boot back into console, console is fine. Not sure what might be different with apt install lightdm xserver-xorg raspberrypi-ui-mods arandr (setting it all up manually) versus the Pi install... Mesa/iris problems?

pi@pi5-pcie:~ $ cat mesa-output.txt 
pi@pi5-pcie:~ $ glxinfo -B
name of display: :0
libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: iris
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Mesa (0xffffffff)
    Device: llvmpipe (LLVM 15.0.6, 128 bits) (0xffffffff)
    Version: 23.2.1
    Accelerated: no
    Video memory: 16004MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 4.5
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 0 MB, largest block: 0 MB
    VBO free aux. memory - total: 15105 MB, largest block: 15105 MB
    Texture free memory - total: 0 MB, largest block: 0 MB
    Texture free aux. memory - total: 15105 MB, largest block: 15105 MB
    Renderbuffer free memory - total: 0 MB, largest block: 0 MB
    Renderbuffer free aux. memory - total: 15105 MB, largest block: 15105 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 4293418529 MB
    Total available memory: 4293434534 MB
    Currently available dedicated video memory: 0 MB
OpenGL vendor string: Mesa
OpenGL renderer string: llvmpipe (LLVM 15.0.6, 128 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 23.2.1-1~bpo12+rpt3
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.5 (Compatibility Profile) Mesa 23.2.1-1~bpo12+rpt3
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 23.2.1-1~bpo12+rpt3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

Any good guide for a quick Mesa compile?

@geerlingguy
Copy link
Owner Author

geerlingguy commented Jan 21, 2025

Thanks to the retropie subreddit and this forum post by @6by9 (you are everywhere!), Mesa compile steps:

  1. Uncomment the deb-src line inside /etc/apt/sources.list.d/raspi.list and save it
  2. Install build dependencies:
    1. sudo apt update && sudo apt build-dep mesa -y
    2. sudo apt install python3-pycparser
  3. Install later version of meson:
    1. sudo apt remove meson -y
    1. sudo pip3 install meson
  4. Clone mesa source: git clone --depth=1 --branch mesa-24.3.2 https://gitlab.freedesktop.org/mesa/mesa/
  5. Build and install Mesa:
    1. meson setup --prefix=/usr --libdir=/usr/lib/aarch64-linux-gnu build
    2. meson compile -C build
    3. sudo meson install -C build

Reboot, and check the mesa version with either glxinfo -B or vulkaninfo --summary

@geerlingguy
Copy link
Owner Author

Running labwc-pi now gives me:

labwc: ../src/intel/dev/intel_hwconfig.c:143: process_hwconfig_table: Assertion `next <= end' failed.
Aborted

@Srandista
Copy link

Indeed! Commenting dtoverlay=vc4-kms-v3d got me startx working.

New video incoming in 3, 2,... :)

@FibreFoX
Copy link

I could run vulkaninfo --summary after installing it via apt install vulkan-tools normally.

@geerlingguy
Copy link
Owner Author

geerlingguy commented Jan 21, 2025

With the latest Mesa, I do get output, but it is... quite interesting, and reminds me of how the radeon GPU driver was behaving early on when we were testing on the CM4. Lots of random lines here and there, then it seems like the rendering gets lazy, and things drop in and out, like memory is just not refreshing in certain areas until something nudges it along.

Image

Here's vulkaninfo output after installing Mesa 24.3.2:

pi@pi5-pcie:~ $ DISPLAY=:0 vulkaninfo --summary
WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Failed to CreateInstance in ICD 4.  Skipping ICD.
MESA: warning: Support for this platform is experimental with Xe KMD, bug reports may be ignored.
MESA: error: Use of VkSurfacePresentModeCompatibilityEXT without a VkSurfacePresentModeEXT set. This is an application bug.
MESA: error: Use of VkSurfacePresentModeCompatibilityEXT without a VkSurfacePresentModeEXT set. This is an application bug.
MESA: error: Use of VkSurfacePresentModeCompatibilityEXT without a VkSurfacePresentModeEXT set. This is an application bug.
MESA: error: Use of VkSurfacePresentModeCompatibilityEXT without a VkSurfacePresentModeEXT set. This is an application bug.
==========
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 5
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.296
	driverVersion      = 24.3.2
	vendorID           = 0x8086
	deviceID           = 0x56a1
	deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	deviceName         = Intel(R) Arc(tm) A750 Graphics (DG2)
	driverID           = DRIVER_ID_INTEL_OPEN_SOURCE_MESA
	driverName         = Intel open-source Mesa driver
	driverInfo         = Mesa 24.3.2 (git-e3b1a93aaa)
	conformanceVersion = 1.3.6.0
	deviceUUID         = 8680a156-0800-0000-0300-000000000000
	driverUUID         = 8ccc43a5-b93c-41a4-fc89-f07446b79dcd
GPU1:
	apiVersion         = 1.3.296
	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.3.2 (git-e3b1a93aaa) (LLVM 15.0.6)
	conformanceVersion = 1.3.1.1
	deviceUUID         = 6d657361-3234-2e33-2e32-000000000000
	driverUUID         = 6c6c766d-7069-7065-5555-494400000000

And glinfo:

pi@pi5-pcie:~ $ DISPLAY=:0 glxinfo -B
name of display: :0
MESA: warning: Support for this platform is experimental with Xe KMD, bug reports may be ignored.
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel (0x8086)
    Device: Mesa Intel(R) Arc(tm) A750 Graphics (DG2) (0x56a1)
    Version: 24.3.2
    Accelerated: yes
    Video memory: 8128MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 8128 MB, largest block: 8128 MB
    VBO free aux. memory - total: 8002 MB, largest block: 8002 MB
    Texture free memory - total: 8128 MB, largest block: 8128 MB
    Texture free aux. memory - total: 8002 MB, largest block: 8002 MB
    Renderbuffer free memory - total: 8128 MB, largest block: 8128 MB
    Renderbuffer free aux. memory - total: 8002 MB, largest block: 8002 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 8128 MB
    Total available memory: 16130 MB
    Currently available dedicated video memory: 8128 MB
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) Arc(tm) A750 Graphics (DG2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 24.3.2 (git-e3b1a93aaa)
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6 (Compatibility Profile) Mesa 24.3.2 (git-e3b1a93aaa)
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 24.3.2 (git-e3b1a93aaa)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

glmark2 won't give me any output. It tries opening the window (in kind of a rave mode with it flashing in and out of existence), and then bails immedaitely.

@geerlingguy
Copy link
Owner Author

@FibreFoX - do you get any glitchy output with your setup? Or is it stable? And if you try running any GL stuff, does it use llvmpipe or the Intel GPU?

@FibreFoX
Copy link

FibreFoX commented Jan 21, 2025

@geerlingguy Will have to check tomorrow ;) it's late here in germany already.

EDIT: But I've checked to run Firefox and opened Youtube, but it looked like software rendering. Not checked anything else so far.

@geerlingguy
Copy link
Owner Author

YouTube under Chromium on here:

intel-arc-a750-fine.mp4

Working great! (haha)

@FibreFoX
Copy link

FibreFoX commented Jan 22, 2025

I just installed "normal" packages, to check how they are performing.

sudo apt install mesa-utils vulkan-tools chromium mesa-utils glmark2

Chromium defaults to software rendering, had to enable "Override softwar rendering list" in the chrome://flags-settings. Wasnt really looking good, but had no glitches like in the video above.

GLMark2 was slow too, using llvmpipe:

pi@hydra:~ $ DISPLAY=:0 glmark2
libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/aarch64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: iris
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Mesa
    GL_RENDERER:    llvmpipe (LLVM 15.0.6, 128 bits)
    GL_VERSION:     4.5 (Compatibility Profile) Mesa 23.2.1-1~bpo12+rpt3
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=32 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[build] use-vbo=false: FPS: 109 FrameTime: 9.195 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[build] use-vbo=true: FPS: 110 FrameTime: 9.097 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[texture] texture-filter=nearest: FPS: 131 FrameTime: 7.657 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[texture] texture-filter=linear: FPS: 127 FrameTime: 7.883 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[texture] texture-filter=mipmap: FPS: 114 FrameTime: 8.809 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shading] shading=gouraud: FPS: 89 FrameTime: 11.269 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shading] shading=blinn-phong-inf: FPS: 85 FrameTime: 11.843 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shading] shading=phong: FPS: 80 FrameTime: 12.527 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shading] shading=cel: FPS: 80 FrameTime: 12.642 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[bump] bump-render=high-poly: FPS: 51 FrameTime: 19.894 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[bump] bump-render=normals: FPS: 130 FrameTime: 7.728 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[bump] bump-render=height: FPS: 129 FrameTime: 7.793 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 95 FrameTime: 10.609 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 80 FrameTime: 12.658 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[pulsar] light=false:quads=5:texture=false: FPS: 110 FrameTime: 9.142 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 33 FrameTime: 30.462 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[desktop] effect=shadow:windows=4: FPS: 58 FrameTime: 17.448 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 70 FrameTime: 14.303 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 71 FrameTime: 14.196 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 72 FrameTime: 14.084 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[ideas] speed=duration: FPS: 79 FrameTime: 12.707 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[jellyfish] <default>: FPS: 51 FrameTime: 19.740 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[terrain] <default>: FPS: 6 FrameTime: 198.948 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[shadow] <default>: FPS: 64 FrameTime: 15.715 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[refract] <default>: FPS: 12 FrameTime: 86.025 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 100 FrameTime: 10.066 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 96 FrameTime: 10.443 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 101 FrameTime: 9.947 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[function] fragment-complexity=low:fragment-steps=5: FPS: 99 FrameTime: 10.127 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[function] fragment-complexity=medium:fragment-steps=5: FPS: 93 FrameTime: 10.777 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 97 FrameTime: 10.321 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 98 FrameTime: 10.236 ms
** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!
** Failed to set swap interval. Results may be bounded above by refresh rate.
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 96 FrameTime: 10.493 ms
=======================================================
                                  glmark2 Score: 84
=======================================================

Changing to any wayland tool just did not work out of the box :) but that was expected, so nothing new, just confirming.

After some time my system just got unresponsive (it was VERY SLOW via SSH terminal, like half a minute per keystroke, even the power LED on the pi was not on anymore ... could be some other issue).

Regarding the error

labwc: ../src/intel/dev/intel_hwconfig.c:143: process_hwconfig_table: Assertion `next <= end' failed.

I looked at the source code and maybe these asserts can be skipped by setting NDEBUG via some meson argument (haven't checked it yet, but found some hints):
-Db_ndebug=true

That is documented in the options: https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/docs/meson.rst

-Db_ndebug
This option controls assertions in Meson projects. When set to
false (the default) assertions are enabled, when set to true they
are disabled. This is unrelated to the buildtype; setting the
latter to release will not turn off assertions.

I will try to find some more time to debug this more :)

EDIT: while the system is unreponsive, this was these were the processes, weird defunct entries

pi@hydra:~ $ ps faux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           2  0.6  0.0      0     0 ?        S    19:20   0:12 [kthreadd]
root           3  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [pool_workqueue_release]
root           4  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-rcu_gp]
root           5  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-sync_wq]
root           6  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-slub_flushwq]
root           7  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-netns]
root          12  0.4  0.0      0     0 ?        I<   19:20   0:09  \_ [kworker/R-mm_percpu_wq]
root          13  0.0  0.0      0     0 ?        I    19:20   0:00  \_ [rcu_tasks_kthread]
root          14  0.0  0.0      0     0 ?        I    19:20   0:00  \_ [rcu_tasks_rude_kthread]
root          15  0.0  0.0      0     0 ?        I    19:20   0:00  \_ [rcu_tasks_trace_kthread]
root          16  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [ksoftirqd/0]
root          17  0.4  0.0      0     0 ?        I    19:20   0:07  \_ [rcu_preempt]
root          18  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [rcu_exp_par_gp_kthread_worker/0]
root          19  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [rcu_exp_gp_kthread_worker]
root          20  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [migration/0]
root          21  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [cpuhp/0]
root          22  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [cpuhp/1]
root          23  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [migration/1]
root          24  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [ksoftirqd/1]
root          27  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [cpuhp/2]
root          28  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [migration/2]
root          29  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [ksoftirqd/2]
root          32  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [cpuhp/3]
root          33  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [migration/3]
root          34  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [ksoftirqd/3]
root          37  0.1  0.0      0     0 ?        I    19:20   0:03  \_ [kworker/u17:0-events_unbound]
root          38  1.4  0.0      0     0 ?        I    19:20   0:28  \_ [kworker/u18:0-events_unbound]
root          39  0.0  0.0      0     0 ?        I    19:20   0:01  \_ [kworker/u19:0-events_unbound]
root          40  0.3  0.0      0     0 ?        I    19:20   0:06  \_ [kworker/u20:0-events_unbound]
root          41  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kdevtmpfs]
root          42  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-inet_frag_wq]
root          43  0.0  0.0      0     0 ?        I    19:20   0:00  \_ [kworker/u17:1-events_unbound]
root          44  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kauditd]
root          45  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [khungtaskd]
root          46  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [oom_reaper]
root          47  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-writeback]
root          48  0.3  0.0      0     0 ?        R    19:20   0:06  \_ [kcompactd0]
root          49  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kcompactd1]
root          50  0.3  0.0      0     0 ?        R    19:20   0:07  \_ [kcompactd2]
root          51  0.0  0.0      0     0 ?        R    19:20   0:00  \_ [kcompactd3]
root          52  0.2  0.0      0     0 ?        S    19:20   0:05  \_ [kcompactd4]
root          53  0.0  0.0      0     0 ?        R    19:20   0:00  \_ [kcompactd5]
root          54  0.0  0.0      0     0 ?        S    19:20   0:01  \_ [kcompactd6]
root          55  0.0  0.0      0     0 ?        R    19:20   0:00  \_ [kcompactd7]
root          56  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-kintegrityd]
root          57  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-kblockd]
root          58  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-blkcg_punt_bio]
root          59  0.1  0.0      0     0 ?        I    19:20   0:02  \_ [kworker/u18:1-events_unbound]
root          61  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [watchdogd]
root          64  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-rpciod]
root          65  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-xprtiod]
root          66  0.0  0.0      0     0 ?        I    19:20   0:00  \_ [kworker/2:1-cgroup_destroy]
root          68  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kswapd0]
root          69  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kswapd1]
root          70  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kswapd2]
root          71  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kswapd3]
root          72  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kswapd4]
root          73  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kswapd5]
root          74  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kswapd6]
root          75  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [kswapd7]
root          76  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-nfsiod]
root          77  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-kthrotld]
root          79  0.0  0.0      0     0 ?        I    19:20   0:00  \_ [kworker/u19:1-events_unbound]
root          81  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [hwrng]
root          82  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-iscsi_conn_cleanup]
root          83  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-nvme-wq]
root          84  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-nvme-reset-wq]
root          85  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-nvme-delete-wq]
root          86  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-DWC Notification WorkQ]
root          87  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-uas]
root          88  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/u21:0-hci0]
root          89  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/u22:0]
root          91  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/u24:0-ttm]
root          92  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/u25:0-ttm]
root          93  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [irq/36-aerdrv]
root          94  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [irq/37-aerdrv]
root          99  0.2  0.0      0     0 ?        I    19:20   0:04  \_ [kworker/u17:2-events_unbound]
root         102  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-sdhci]
root         103  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [irq/160-mmc0]
root         105  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-sdhci]
root         106  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [irq/161-mmc1]
root         109  0.8  0.0      0     0 ?        R    19:20   0:15  \_ [kworker/3:3-mm_percpu_wq]
root         135  0.3  0.0      0     0 ?        I<   19:20   0:06  \_ [kworker/3:1H-kblockd]
root         137  1.2  0.0      0     0 ?        I    19:20   0:23  \_ [kworker/0:2-events_power_efficient]
root         165  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-mmc_complete]
root         169  0.0  0.0      0     0 ?        I<   19:20   0:01  \_ [kworker/2:2H-kblockd]
root         209  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/0:2H-kblockd]
root         220  0.0  0.0      0     0 ?        I    19:20   0:01  \_ [kworker/u19:2-writeback]
root         248  0.2  0.0      0     0 ?        D    19:20   0:04  \_ [jbd2/mmcblk0p2-8]
root         249  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-ext4-rsv-conversion]
root         268  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-mld]
root         269  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-ipv6_addrconf]
root         270  0.0  0.0      0     0 ?        I    19:20   0:00  \_ [kworker/u16:1-ipv6_addrconf]
root         331  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/1:2H-kblockd]
root         394  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [spi10]
root         465  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-cfg80211]
root         471  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [irq/165-1000800000.codec]
root         474  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-brcmf_wq/mmc1:0001:1]
root         481  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [brcmf_wdog/mmc1:0001:1]
root         545  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/u21:1-hci0]
root         562  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-ttm]
root         803  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [card0-crtc0]
root         804  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [card0-crtc1]
root         805  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [card0-crtc2]
root         806  0.0  0.0      0     0 ?        S    19:20   0:00  \_ [card0-crtc3]
root         807  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/R-]
root         889  0.0  0.0      0     0 ?        S<   19:20   0:00  \_ [krfcommd]
root         902  0.0  0.0      0     0 ?        I    19:20   0:00  \_ [kworker/u16:3]
root         944  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/u25:1]
root        1916  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/u23:1]
root        1917  0.0  0.0      0     0 ?        I<   19:20   0:00  \_ [kworker/u23:2]
root        2262  0.3  0.0      0     0 ?        I<   19:23   0:06  \_ [kworker/u24:1-sdhci]
root        2429  0.0  0.0      0     0 ?        I    19:25   0:00  \_ [kworker/u18:3]
root        2432  2.5  0.0      0     0 ?        I    19:25   0:41  \_ [kworker/1:2-events]
root        2433  0.0  0.0      0     0 ?        I<   19:25   0:00  \_ [kworker/0:0H-kblockd]
root        2434  0.0  0.0      0     0 ?        D    19:25   0:00  \_ [kworker/2:0+events_freezable]
root        2532  1.5  0.0      0     0 ?        I<   19:27   0:24  \_ [kworker/2:1H-kblockd]
root        2610  1.4  0.0      0     0 ?        I    19:31   0:18  \_ [kworker/u20:1-events_unbound]
root        2612  0.0  0.0      0     0 ?        I<   19:31   0:00  \_ [kworker/1:1H]
root        2614  0.5  0.0      0     0 ?        I    19:32   0:06  \_ [kworker/0:1-events]
root        2616  0.8  0.0      0     0 ?        R    19:33   0:09  \_ [kworker/0:3+events]
root        2619  1.5  0.0      0     0 ?        I    19:36   0:14  \_ [kworker/1:0-events]
root        2621  2.8  0.0      0     0 ?        I<   19:37   0:25  \_ [kworker/2:0H-kblockd]
root        2622  0.0  0.0      0     0 ?        I<   19:38   0:00  \_ [kworker/3:2H-kblockd]
root        2624  3.4  0.0      0     0 ?        R    19:43   0:19  \_ [kworker/1:1-events_power_efficient]
root        2625  0.0  0.0      0     0 ?        I    19:43   0:00  \_ [kworker/3:0]
root        2627  0.0  0.0      0     0 ?        I    19:44   0:00  \_ [kworker/2:3-events]
root        2628  2.6  0.0      0     0 ?        I    19:44   0:13  \_ [kworker/0:5-events_freezable_pwr_efficient]
root        2633  0.0  0.0      0     0 ?        I<   19:47   0:00  \_ [kworker/2:3H-kblockd]
root        2634  1.5  0.0      0     0 ?        I    19:48   0:03  \_ [kworker/u20:2-flush-179:0]
root        2635  0.0  0.0      0     0 ?        I    19:50   0:00  \_ [kworker/2:2-events_power_efficient]
root        2639  0.0  0.0      0     0 ?        I    19:52   0:00  \_ [kworker/3:1]
root           1 13.4  0.2 168728 11588 ?        Rs   19:20   4:20 /sbin/init
root         336  0.0  0.1  27328  7008 ?        Ss   19:20   0:00 /lib/systemd/systemd-udevd
systemd+     574  0.3  0.1  90712  6888 ?        Dsl  19:20   0:05 /lib/systemd/systemd-timesyncd
root         577  0.3  0.1 237860  6928 ?        Ssl  19:20   0:05 /usr/libexec/accounts-daemon
avahi        578  2.6  0.0   7744  3180 ?        Rs   19:20   0:50 avahi-daemon: running [hydra.local]
avahi        619  0.0  0.0   7184  1420 ?        S    19:20   0:00  \_ avahi-daemon: chroot helper
root         579  0.0  0.1  13324  5704 ?        Ss   19:20   0:00 /usr/libexec/bluetooth/bluetoothd
root         580  0.0  0.0   6696  2432 ?        Ss   19:20   0:00 /usr/sbin/cron -f
message+     581  1.4  0.1   9756  4368 ?        Rs   19:20   0:28 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
polkitd      589  0.0  0.2 310872  9044 ?        Ssl  19:20   0:00 /usr/lib/polkit-1/polkitd --no-debug
root         593  0.0  0.1  17300  7088 ?        Ss   19:20   0:01 /lib/systemd/systemd-logind
nobody       594  0.1  0.0   5832  2460 ?        Rs   19:20   0:02 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --deviceglob /dev/input/event*
root         595  0.0  0.3 396144 12368 ?        Ssl  19:20   0:01 /usr/libexec/udisks2/udisksd
root         696  3.2  0.4 262704 18880 ?        Ssl  19:20   1:02 /usr/sbin/NetworkManager --no-daemon
root         718  0.2  0.1  16452  6488 ?        Ss   19:20   0:04 /sbin/wpa_supplicant -u -s -O DIR=/run/wpa_supplicant GROUP=netdev
root         719  0.0  0.2 249660 11284 ?        Ssl  19:20   0:00 /usr/sbin/ModemManager
root         739  0.0  0.1  30700  8132 ?        Ss   19:20   0:00 /usr/sbin/cupsd -l
lp           748  0.0  0.1  17640  5992 ?        S    19:20   0:00  \_ /usr/lib/cups/notifier/dbus dbus://
root         749  0.0  0.2  16460  8552 ?        Ss   19:20   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root         808  0.0  0.2  19724  9812 ?        Ss   19:20   0:00  \_ sshd: pi [priv]
pi           836  1.1  0.1  19984  6632 ?        S    19:20   0:22      \_ sshd: pi@pts/1
pi           848  2.2  0.1   8108  4736 pts/1    Ss   19:20   0:44          \_ -bash
pi          2638 85.3  0.1  11272  4304 pts/1    R+   19:51   1:12              \_ ps faux
root         778  0.0  0.2 178808 12016 ?        Ssl  19:20   0:00 /usr/sbin/cups-browsed
pi           812  0.0  0.2  19848 10240 ?        Ss   19:20   0:00 /lib/systemd/systemd --user
pi           813  0.0  0.1 170352  4792 ?        S    19:20   0:00  \_ (sd-pam)
pi           828  0.0  0.3 180100 14004 ?        Ssl  19:20   0:00  \_ /usr/bin/pipewire
pi           829  0.0  0.1  87376  4976 ?        Ssl  19:20   0:00  \_ /usr/bin/pipewire -c filter-chain.conf
pi           830  0.0  0.5 573896 24396 ?        Ssl  19:20   0:00  \_ /usr/bin/wireplumber
pi           831  0.0  0.2 174348 10244 ?        Ssl  19:20   0:00  \_ /usr/bin/pipewire-pulse
pi           837  0.0  0.0   8740  3976 ?        Ss   19:20   0:00  \_ /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
pi          1016  0.0  0.1 238564  7292 ?        Ssl  19:20   0:00  \_ /usr/libexec/gvfsd
pi          1179  0.0  0.1 312832  8092 ?        Sl   19:20   0:00  |   \_ /usr/libexec/gvfsd-trash --spawner :1.12 /org/gtk/gvfs/exec_spaw/0
pi          1021  0.0  0.1 381260  6124 ?        Sl   19:20   0:00  \_ /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f
pi          1089  0.0  0.1 156804  4944 ?        Ssl  19:20   0:00  \_ /usr/libexec/dconf-service
pi          1125  0.0  0.2 353572 12180 ?        Ssl  19:20   0:00  \_ /usr/libexec/gvfs-udisks2-volume-monitor
pi          1130  0.0  0.1 234184  5968 ?        Ssl  19:20   0:00  \_ /usr/libexec/gvfs-mtp-volume-monitor
pi          1136  0.1  0.1 313508  7376 ?        Ssl  19:20   0:03  \_ /usr/libexec/gvfs-afc-volume-monitor
pi          1146  0.0  0.1 234308  5744 ?        Ssl  19:20   0:00  \_ /usr/libexec/gvfs-goa-volume-monitor
pi          1152  0.0  0.1 235620  6484 ?        Ssl  19:20   0:00  \_ /usr/libexec/gvfs-gphoto2-volume-monitor
pi          1789  0.0  0.3 804132 13540 ?        Ssl  19:20   0:00  \_ /usr/libexec/xdg-desktop-portal
pi          1795  0.0  0.1 536284  6864 ?        Ssl  19:20   0:00  \_ /usr/libexec/xdg-document-portal
root        1807  0.0  0.0   2232  1404 ?        Ss   19:20   0:00  |   \_ fusermount3 -o rw,nosuid,nodev,fsname=portal,auto_unmount,subtype=portal -- /run/user/1000/doc
pi          1801  0.0  0.1 238244  7056 ?        Ssl  19:20   0:00  \_ /usr/libexec/xdg-permission-store
pi          1813  0.0  0.6 416380 28236 ?        Ssl  19:20   0:00  \_ /usr/libexec/xdg-desktop-portal-gtk
pi          2015  0.0  0.1 240772  7956 ?        Sl   19:21   0:00  \_ /usr/bin/gnome-keyring-daemon --start --foreground --components=secrets
pi          2016  0.0  0.2 240920  8944 ?        Ssl  19:21   0:00  \_ /usr/bin/gnome-keyring-daemon --foreground --components=pkcs11,secrets --control-directory=/run/user/1000/keyring
rtkit        842  0.1  0.0  22796  2848 ?        SNsl 19:20   0:02 /usr/libexec/rtkit-daemon
root         913  0.0  0.1 307356  6400 ?        Ssl  19:20   0:00 /usr/sbin/lightdm
root         921 79.3  2.5 949400 105336 tty7    Rsl+ 19:20  25:26  \_ /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
root         960  0.0  0.1 162312  6936 ?        Sl   19:20   0:00  \_ lightdm --session-child 13 16
pi           964  0.0  0.3 252564 13644 ?        Ssl  19:20   0:00      \_ /usr/bin/lxsession -s LXDE-pi -e LXDE
pi          1009  0.0  0.0   7392  1928 ?        Ss   19:20   0:00          \_ /usr/bin/ssh-agent /usr/bin/startlxde-pi
pi          1031  0.0  0.4 222976 18980 ?        S    19:20   0:00          \_ openbox --config-file /home/pi/.config/openbox/lxde-pi-rc.xml
pi          1033  0.0  0.2 181180 12208 ?        Sl   19:20   0:00          \_ lxpolkit
pi          1037  0.3  2.5 888780 103836 ?       Sl   19:20   0:07          \_ lxpanel --profile LXDE-pi
pi          2400  0.0  0.8 386608 33868 ?        Sl   19:25   0:00          |   \_ lxterminal
pi          2406  0.0  0.1   8116  4740 pts/0    Ss+  19:25   0:00          |       \_ bash
pi          1038  0.0  3.1 716740 128228 ?       Sl   19:20   0:00          \_ pcmanfm --desktop --profile LXDE-pi
pi          1039  0.0  0.0   5192  2920 ?        S    19:20   0:00          \_ xscreensaver -no-splash
pi          1065  0.0  0.0   7944  3524 ?        S    19:20   0:00              \_ xscreensaver-systemd
root         922  0.0  0.0   7636  3248 tty1     Ss   19:20   0:00 /bin/login -f
pi           929  0.0  0.1   8116  4740 tty1     S+   19:20   0:00  \_ -bash
root         923  0.0  0.0   5256  2000 ?        Ss+  19:20   0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,57600,38400,9600 - vt220
pi          1047  0.0  0.0   7392  1928 ?        Ss   19:20   0:00 /usr/bin/ssh-agent -s
pi          1050  0.0  0.1 310268  6992 ?        Sl   19:20   0:00 /usr/libexec/at-spi-bus-launcher --launch-immediately
pi          1079  0.0  0.0   8240  3412 ?        S    19:20   0:00  \_ /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 12 --address=unix:path=/run/user/1000/at-spi/bus_0
pi          1059  0.0  0.1  16756  6060 ?        S    19:20   0:00 systemd-inhibit --what=handle-power-key gtk-nop
pi          1071  0.0  1.6 244712 68692 ?        S    19:20   0:00  \_ gtk-nop
pi          1088  0.0  0.1 163844  7296 ?        Sl   19:20   0:00 /usr/libexec/at-spi2-registryd --use-gnome-session
pi          1138  0.0  0.1 157536  5536 ?        Sl   19:20   0:00 /usr/lib/menu-cache/menu-cached /run/user/1000/menu-cached-:0
root        1885  0.0  0.1 234748  6384 ?        Ssl  19:20   0:00 /usr/libexec/upowerd
pi          2162  9.3  6.0 34257028 245660 ?     Sl   19:23   2:43 /usr/lib/chromium/chromium --disable-pings --enable-gpu-rasterization --enable-remote-extensions --force-renderer-accessibility --load-extension --media-router=0 --no-def
pi          2176  0.0  1.6 33937604 68112 ?      S    19:23   0:00  \_ /usr/lib/chromium/chromium --type=zygote --no-zygote-sandbox --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (book
pi          2207  5.2  0.0      0     0 ?        Z    19:23   1:32  |   \_ [chromium] <defunct>
pi          2177  0.0  1.6 33937728 68316 ?      S    19:23   0:00  \_ /usr/lib/chromium/chromium --type=zygote --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --change-stack
pi          2180  0.0  0.4 33937732 17144 ?      S    19:23   0:00  |   \_ /usr/lib/chromium/chromium --type=zygote --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --change-s
pi          2210  6.2  1.0 33988576 44808 ?      Sl   19:23   1:50  |       \_ /usr/lib/chromium/chromium --type=utility --utility-sub-type=storage.mojom.StorageService --lang=en-US --service-sandbox-type=utility --use-angle=gles --strin
pi          2228  0.0  2.3 205129964 97772 ?     Sl   19:23   0:00  |       \_ /usr/lib/chromium/chromium --type=renderer --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --ch
pi          2234  0.7  3.0 205142996 125284 ?    Sl   19:23   0:13  |       \_ /usr/lib/chromium/chromium --type=renderer --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --ex
pi          2257  0.2  3.5 205139336 143280 ?    Sl   19:23   0:04  |       \_ /usr/lib/chromium/chromium --type=renderer --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --ch
pi          2283  4.2  3.5 205139656 146892 ?    Rl   19:23   1:13  |       \_ /usr/lib/chromium/chromium --type=renderer --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --ch
pi          2284  0.8  3.7 205148624 154500 ?    Sl   19:23   0:15  |       \_ /usr/lib/chromium/chromium --type=renderer --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --ch
pi          2305  5.1  5.7 205168444 236072 ?    Sl   19:23   1:30  |       \_ /usr/lib/chromium/chromium --type=renderer --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --ch
pi          2367  0.2  1.5 205129708 63616 ?     Sl   19:24   0:04  |       \_ /usr/lib/chromium/chromium --type=renderer --string-annotations --crashpad-handler-pid=0 --enable-crash-reporter=,built on Debian GNU/Linux 12 (bookworm) --ch
pi          2209  9.5  2.3 33972212 95892 ?      Sl   19:23   2:47  \_ /usr/lib/chromium/chromium --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --use-angle=gles --string-annotatio
pi          2327  6.3  1.8 34028964 75116 ?      Rl   19:23   1:50  \_ /usr/lib/chromium/chromium --type=utility --utility-sub-type=audio.mojom.AudioService --lang=en-US --service-sandbox-type=none --use-angle=gles --string-annotations -
pi          2328  0.1  1.8 33980036 76276 ?      Sl   19:23   0:02  \_ /usr/lib/chromium/chromium --type=utility --utility-sub-type=video_capture.mojom.VideoCaptureService --lang=en-US --service-sandbox-type=none --use-angle=gles --messa
pi          2170  1.5  0.1 33569232 4300 ?       Sl   19:23   0:27 /usr/lib/chromium/chrome_crashpad_handler --monitor-self --monitor-self-annotation=ptype=crashpad-handler --database=/home/pi/.config/chromium/Crash Reports --annotation=
pi          2172  0.0  0.0 33560948 3740 ?       S    19:23   0:00 /usr/lib/chromium/chrome_crashpad_handler --no-periodic-tasks --monitor-self-annotation=ptype=crashpad-handler --database=/home/pi/.config/chromium/Crash Reports --annota
root        2637 72.5  0.0      0     0 ?        Zs   19:50   1:29 [(journald)] <defunct>

@6by9
Copy link

6by9 commented Jan 22, 2025

Most Wayland compositors using wlroots (eg Wayfire and labwc) will abort if they find software rendering.
You can try setting the environment variable WLR_RENDERER_ALLOW_SOFTWARE to 1 to avoid that, but I always found that blew up too.

You really need to get Mesa built for Iris. Jeff has posted the runes at #510 (comment)

@FibreFoX
Copy link

FibreFoX commented Jan 22, 2025

@6by9 Will try to compile mesa now :) just wanted to check how the state is with "default packages". That part of linux is new to me, normally I am just handling headless linux servers ;) but always fascinating

EDIT: after compilation ... as Jeff already described, kinda unusable, glitches all over the place, but it launches with wayland at least ... just not pretty

I will try to debug the xe driver a bit more, maybe I can find the root cause, maybe my other workaround is responsible for this

@FibreFoX
Copy link

FibreFoX commented Jan 22, 2025

I think I now understand the difference between "Full Desktop OS" and "Lite OS". I've checked the /etc/lightdm/lightdm.conf for differences, and the default for the "Full Desktop" uses pi-greeter-labwc while the one I installed on the "Lite OS" uses pi-greeter.

Image

It is easily possible to switch to X11 via raspi-config (sudo raspi-config nonint do_wayland W1) and it should have some output (not yet tested, but will add it to my checklist).

The configuration for the image seems to be set here: https://github.com/RPi-Distro/pi-gen/blob/e071d0de36561a13039bf4d561f5204a7ecd8e34/stage4/06-enable-wayland/00-run.sh#L4
(did not know about the non-interactive mode before, so I learned something new today 😺 )

@martincerven
Copy link

Late to the party, is using Ubuntu somehow different to using Raspbian with these cards? Would love to get one that works with Box86/64 to try more games than CS 1.6 that you can play with integrated GPU on RPi5.

@FibreFoX
Copy link

FibreFoX commented Jan 23, 2025

@martincerven Haven't checked Ubuntu yet, but I somehow doubt that it'll help. They are using an older kernel (6.8 so far for LTS and 6.11 for their newer Ubuntu 24) according to https://ubuntu.com/kernel/lifecycle They might have a newer MESA version, but I tried using bookworm-backports an hour ago, did not help, even made it worse/more unstable (but probably because I just messed up my system by doing so).

EDIT: and looking at the changelogs, they are quite some time behind https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/log/drivers/gpu/drm/xe or https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/log/drivers/gpu/drm/xe?h=master-next

Right now there are many parts that need to be fixed before the XE driver is Raspberry Pi ready (like the 4K page size alignment on the Pi 5), let alone gaming.

But hopefully just a matter of time (depends on Intel engineers getting time to work on this edge case userbase).

@FibreFoX
Copy link

Just want to add this detail: my A380 and A770 behave the same, no difference (and still they both work with the found workarounds to get to the console).

@geerlingguy
Copy link
Owner Author

I should have a B580 in my hands tomorrow — I will retry everything with it once it is here... but that progress I may document in #695

@geerlingguy
Copy link
Owner Author

I just tested the B580 and got a wedged message:

[   10.539353] xe 0000:03:00.0: [drm] *ERROR* GT1: load failed: status = 0x80007134, time = 8ms, freq = 1500MHz (req 1500MHz), done = -1
[   10.539359] xe 0000:03:00.0: [drm] *ERROR* GT1: load failed: status: Reset = 0, BootROM = 0x1A, UKernel = 0x71, MIA = 0x00, Auth = 0x02
[   10.539363] xe 0000:03:00.0: [drm] *ERROR* CRITICAL: Xe has declared device 0000:03:00.0 as wedged.
               IOCTLs and executions are blocked. Only a rebind may clear the failure
               Please file a _new_ bug report at https://gitlab.freedesktop.org/drm/xe/kernel/issues/new
[   11.109548] xe 0000:03:00.0: [drm] *ERROR* GT1: GuC mmio request 0x508: no reply 0x508
[   11.109553] xe 0000:03:00.0: [drm] *ERROR* GT1: Failed to enable GuC CT (-ETIMEDOUT)
[   11.109561] xe 0000:03:00.0: probe with driver xe failed with error -110

See the full messages over in the B580 issue #695 - #695 (comment)

@pimzand
Copy link

pimzand commented Jan 30, 2025

just make sure to grab the intel_display.c patch too, otherwise the display stays black.

@FibreFoX , when you say "stays black" do you mean a steady black screen with sync, or black because there is no signal, turning the monitor to sleep?

I am experiencing the latter, with a B580 in an Ampere Altra system, using vanilla kernel 6.13 with your patches,
even though the driver loads without errors. I even see the name of my display in the dmesg output.

@FibreFoX
Copy link

FibreFoX commented Jan 31, 2025

@pimzand If I recall correctly, I had to patch intel_vga.c and xe_guc.c to get the terminal output, but when changing to X11 (not wayland!) the kernel did crash without the patch of the intel_display.c file. So my workaround was to add that #if makro. I think the monitor just lost the signal .

@pimzand
Copy link

pimzand commented Jan 31, 2025

Thanks @FibreFoX . I have patched all three, and tried both X11 and Wayland. No crashes or errors with either, but no display either. I tried both HDMI and Displayport.

I do see a short flash on the monitor every time I systemctl restart gdm.service So there may have been signal for a very short while.

When I enable drm debugging, I get so many (continuous) output from dmesg, that I do not know where to look for. Nothing with "error" in it, though.

I have not applied the Ampere Altra specific patches, that work around the PCIE alignment errata in this CPU. These patches do not apply yet, because of this issue.

Perhaps I should wait for this to be fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests