geerlingguy / raspberry-pi-pcie-devices

Raspberry Pi PCI Express device compatibility database
http://pipci.jeffgeerling.com
GNU General Public License v3.0
1.62k stars 145 forks source link

Add Intel Arc A750 #510

Open geerlingguy opened 1 year ago

geerlingguy commented 1 year ago

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.

geerlingguy commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 #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 #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 commented 1 year ago

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 commented 1 year ago

...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 commented 1 year ago

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 commented 7 months ago

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

DanaGoyette commented 6 months ago

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 commented 6 months ago

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 commented 6 months ago

@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 commented 1 week ago

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+ #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 commented 1 week ago

@martinx72 Excited to re-open this issue ;)

pimzand commented 1 week ago

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

martinx72 commented 1 week ago

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 commented 1 week ago

@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 commented 1 week ago

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 commented 1 week ago

@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 commented 1 week ago

@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 commented 3 days ago

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

FibreFoX commented 1 day ago

@martinx72 Can you add some steps, what you've done so far? Like what RaspiOS are you using, and are you trying X11 or Wayland? So far I understand you compiled the 6.11.y branch, selected Intel XE via menuconfig and added some firmware binaries to it. Did you, by any chance, create some small script to do all of that?

I have a spare 8GB Raspi5 with a spare Intel Arc 770 here for some experiments, maybe I can help, even tho I am very new to the kernel hacking game.

martinx72 commented 17 hours ago

@martinx72 Can you add some steps, what you've done so far? Like what RaspiOS are you using, and are you trying X11 or Wayland? So far I understand you compiled the 6.11.y branch, selected Intel XE via menuconfig and added some firmware binaries to it. Did you, by any chance, create some small script to do all of that?

I have a spare 8GB Raspi5 with a spare Intel Arc 770 here for some experiments, maybe I can help, even tho I am very new to the kernel hacking game.

Check the way to build kernel for Pi5 aarch64: https://www.raspberrypi.com/documentation/computers/linux_kernel.html just few commands to type, i believe you dont need any script just for building the kernel

And use make menuconfig to enable the intel Xe driver, and pagesize as 4K. that's all.

And you can also try 6.12.y, i tried both, all crashed there. and u can also try the intel xe driver source stream here: https://gitlab.freedesktop.org/drm/xe/kernel

pepijndevos commented 16 hours ago

There are a few more menuconfig entries in the AMD article that could be worth trying https://www.jeffgeerling.com/blog/2024/amd-radeon-pro-w7700-running-on-raspberry-pi

FibreFoX commented 8 hours ago

So far using a very naive approach does not bring me very far. I am using the current 6.12.y branch of the raspberry kernel and starting with a fresh installation of Raspberry Pi OS (64bit, desktop).

Some commands I am using as root user:

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

# 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

Then I select the following options (the ones from the AMD article are not there, because the kernel-fork introduces them):

# Kernel Features > Page Size > 4 KB
# Kernel Features > Virtual address space size > 48-bit (had to change this in a different project, so I hoped this would help too)
# Kernel Features > Kernel support for 32-bit EL0 > Fix up misaligned multi-word loads and stores in user space
# Device Drivers > Graphics support > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) > Intel Xe Graphics (is disabled by default)
# 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 > 56a0

The ID 56a0 matches my GPU from the list https://dgpu-docs.intel.com/devices/hardware-table.html

Then the boring compile stuff.

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

Out of the box I get hit by outdated firmware files:

[    3.619110] vc4-drm axi:gpu: bcm2712_iommu_attach_dev: MMU 1000005200.iommu
[    3.622657] xe 0000:03:00.0: enabling device (0000 -> 0002)
[    3.622702] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    3.623992] Registered IR keymap rc-cec
[    3.624050] rc rc0: vc4-hdmi-0 as /devices/platform/soc@107c000000/107c701400.hdmi/rc/rc0
[    3.624104] input: vc4-hdmi-0 as /devices/platform/soc@107c000000/107c701400.hdmi/rc/rc0/input5
[    3.626312] input: vc4-hdmi-0 HDMI Jack as /devices/platform/soc@107c000000/107c701400.hdmi/sound/card0/input6
[    3.626939] xe 0000:03:00.0: [drm] Found DG2/G10 (device ID 56a0) display version 13.00 stepping C0
[    3.627343] vc4-drm axi:gpu: bound 107c701400.hdmi (ops vc4_hdmi_ops [vc4])
[    3.629688] Registered IR keymap rc-cec
[    3.629744] rc rc1: vc4-hdmi-1 as /devices/platform/soc@107c000000/107c706400.hdmi/rc/rc1
[    3.629785] input: vc4-hdmi-1 as /devices/platform/soc@107c000000/107c706400.hdmi/rc/rc1/input7
[    3.631235] input: vc4-hdmi-1 HDMI Jack as /devices/platform/soc@107c000000/107c706400.hdmi/sound/card1/input8
[    3.633675] vc4-drm axi:gpu: bound 107c706400.hdmi (ops vc4_hdmi_ops [vc4])
[    3.633871] vc4-drm axi:gpu: bound 107c500000.mop (ops vc4_txp_ops [vc4])
[    3.633950] vc4-drm axi:gpu: bound 107c501000.moplet (ops vc4_txp_ops [vc4])
[    3.634013] vc4-drm axi:gpu: bound 107c410000.pixelvalve (ops vc4_crtc_ops [vc4])
[    3.634100] vc4-drm axi:gpu: bound 107c411000.pixelvalve (ops vc4_crtc_ops [vc4])
[    3.635524] [drm] Initialized vc4 0.0.0 for axi:gpu on minor 1
[    3.638166] vc4-drm axi:gpu: [drm] Cannot find any crtc or sizes
[    3.641823] vc4-drm axi:gpu: [drm] Cannot find any crtc or sizes
[    3.645304] vc4-drm axi:gpu: [drm] Cannot find any crtc or sizes
[    3.646083] xe 0000:03:00.0: [drm] *ERROR* GT0: Unsupported GuC v70.5.1! v70.29.2 or newer is required
[    3.646089] xe 0000:03:00.0: [drm] GuC firmware i915/dg2_guc_70.bin: fetch failed with error -22
[    3.646091] xe 0000:03:00.0: [drm] GuC firmware(s) can be downloaded from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
[    3.646113] xe 0000:03:00.0: [drm] *ERROR* GT0: GuC init failed with -EINVAL
[    3.646116] xe 0000:03:00.0: [drm] *ERROR* GT0: Failed to initialize uC (-EINVAL)
[    3.646135] xe 0000:03:00.0: probe with driver xe failed with error -22

This I can resolve thanks to the already mentioned linux-firmware snapshot file https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/510#issuecomment-2471597895 .

wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-20241110.tar.gz
tar -xvf linux-firmware-20241110.tar.gz
cp /opt/linux-firmware-20241110/i915/* /lib/firmware/i915/
cp -a /opt/linux-firmware-20241110/xe /lib/firmware/

After downloading and extracting the files (as shown above) and a reboot, I get a different error:

[    3.800478] xe 0000:03:00.0: [drm] Found DG2/G10 (device ID 56a0) display version 13.00 stepping C0
[    3.808409] xe 0000:03:00.0: [drm] Using GuC firmware from i915/dg2_guc_70.bin version 70.36.0
[    3.818126] xe 0000:03:00.0: [drm] *ERROR* GT0: GuC mmio request 0x4509: failure 0x306 hint 0x0
[    3.818134] xe 0000:03:00.0: [drm] *ERROR* GT0: Failed to enable GuC CT (-ENXIO)

As I am too new to the kernel hacking game, I've read about the need of running update-initramfs -u, after that I get greeted by the following error:


[    3.970361] xe 0000:03:00.0: [drm] Using GuC firmware from i915/dg2_guc_70.bin version 70.36.0
[    3.976725] xe 0000:03:00.0: [drm] *ERROR* GT0: load failed: status = 0x400000A0, time = 3ms, freq = 2400MHz (req 2400MHz), done = -1
[    3.976735] xe 0000:03:00.0: [drm] *ERROR* GT0: load failed: status: Reset = 0, BootROM = 0x50, UKernel = 0x00, MIA = 0x00, Auth = 0x01
[    3.976738] xe 0000:03:00.0: [drm] *ERROR* GT0: firmware signature verification failed
[    3.976744] 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
[    3.976756] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
[    3.985581] Mem abort info:
[    3.988377]   ESR = 0x0000000096000004
[    3.992133]   EC = 0x25: DABT (current EL), IL = 32 bits
[    3.997461]   SET = 0, FnV = 0
[    4.000518]   EA = 0, S1PTW = 0
[    4.003662]   FSC = 0x04: level 0 translation fault
[    4.008553] Data abort info:
[    4.011436]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
[    4.016938]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[    4.022003]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[    4.027330] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000101897000
[    4.033792] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000
[    4.040607] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
[    4.046896] Modules linked in: xe(+) hid_logitech_hidpp(+) vc4 i2c_algo_bit snd_soc_hdmi_codec joydev aes_ce_blk brcmfmac_wcc binfmt_misc spidev aes_ce_cipher ghash_ce gf128mul cec hci_uart sha2_ce drm_dma_helper btbcm sha256_arm64 brcmfmac drm_buddy drm_suballoc_helper rpivid_hevc(C) sha1_ce drm_gpuvm bluetooth drm_exec brcmutil sha1_generic v4l2_mem2mem snd_soc_core pisp_be drm_display_helper ecdh_generic raspberrypi_hwmon videobuf2_dma_contig cfg80211 snd_compress ecc videobuf2_memops hid_logitech_dj drm_ttm_helper snd_pcm_dmaengine libaes snd_pcm videobuf2_v4l2 ttm v3d snd_timer rfkill videodev spi_bcm2835 i2c_brcmstb snd gpu_sched videobuf2_common gpio_keys drm_shmem_helper rp1_pio mc drm_kms_helper pwm_fan rp1 raspberrypi_gpiomem rp1_adc rp1_mailbox nvmem_rmem uio_pdrv_genirq uio i2c_dev drm ledtrig_pattern fuse drm_panel_orientation_quirks dm_mod backlight ip_tables x_tables ipv6
[    4.125874] CPU: 3 UID: 0 PID: 329 Comm: (udev-worker) Tainted: G         C         6.12.1-v8-16k+ #1

[    4.135131] Tainted: [C]=CRAP
[    4.138102] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
[    4.143953] pstate: 804000c9 (Nzcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    4.150940] pc : xe_gt_tlb_invalidation_reset+0x68/0xf0 [xe]
[    4.156740] lr : xe_gt_tlb_invalidation_reset+0x4c/0xf0 [xe]
[    4.162507] sp : ffff80008095b5b0
[    4.165826] x29: ffff80008095b5b0 x28: 0000000000000000 x27: 431bde82d7b634db
[    4.172989] x26: 00000000001b0001 x25: ffff000107c34328 x24: ffff000107c34e08
[    4.180151] x23: 00000000ffffffff x22: ffff000107c35770 x21: ffff000107c34318
[    4.187313] x20: ffff000107c34080 x19: ffff000107c34080 x18: ffffffffffffffff
[    4.194475] x17: 7461636966697265 x16: ffffa07c4e4c4af8 x15: 2f3a737074746820
[    4.201637] x14: 74612074726f7065 x13: 2e62616c7469672f x12: 2f3a737074746820
[    4.208799] x11: 77656e2f73657573 x10: 0000000000000000 x9 : ffffa07c4e4c4a00
[    4.215960] x8 : 0000000000000000 x7 : ffffffffffffffff x6 : ffff80008095b550
[    4.223122] x5 : 0000000000000010 x4 : ffff80008095b550 x3 : 0000000000000000
[    4.230284] x2 : 00000000000fffff x1 : 0000000000000000 x0 : 00000000ffffffff
[    4.237447] Call trace:
[    4.239894]  xe_gt_tlb_invalidation_reset+0x68/0xf0 [xe]
[    4.245309]  xe_gt_declare_wedged+0x2c/0x48 [xe]
[    4.250023]  xe_device_declare_wedged+0xec/0x160 [xe]
[    4.255173]  __xe_guc_upload+0x48c/0x650 [xe]
[    4.259625]  xe_guc_min_load_for_hwconfig+0x4c/0xd8 [xe]
[    4.265036]  xe_uc_init_hwconfig+0x34/0x48 [xe]
[    4.269663]  xe_gt_init_hwconfig+0x7c/0xd8 [xe]
[    4.274288]  xe_device_probe+0x204/0x570 [xe]
[    4.278739]  xe_pci_probe+0x69c/0xa20 [xe]
[    4.282928]  local_pci_probe+0x48/0xb8
[    4.286688]  pci_device_probe+0xc0/0x1c0
[    4.290620]  really_probe+0xc4/0x2a8
[    4.294205]  __driver_probe_device+0x80/0x140
[    4.298574]  driver_probe_device+0x44/0x170
[    4.302768]  __driver_attach+0x9c/0x1b0
[    4.306613]  bus_for_each_dev+0x80/0xe8
[    4.310458]  driver_attach+0x2c/0x40
[    4.314041]  bus_add_driver+0xec/0x218
[    4.317799]  driver_register+0x68/0x138
[    4.321642]  __pci_register_driver+0x54/0x68
[    4.325923]  xe_register_pci_driver+0x30/0x48 [xe]
[    4.330810]  xe_init+0x3c/0xb8 [xe]
[    4.334388]  do_one_initcall+0x60/0x2a0
[    4.338235]  do_init_module+0x68/0x250
[    4.341993]  load_module+0x1fe0/0x20c8
[    4.345749]  __do_sys_init_module+0x180/0x1f0

Not sure if this helps someone, just wanted to post this here so others can find this issue.

My goal was running my A770 on a Pi5 for video transcoding feature of my home Jellyfin server