Intel Arc SR-IOV "hack"?

Although I don’t use VDI, I am using GPU Passthrough, so all I need to do now is flash the vBIOS of the Flex 170 to the A770 16G, right?

Then it’s just a matter of waiting for the XE driver with SR-IOV support to be merged into the mainline? I really don’t want to use out-of-tree drivers.

1 Like

While the new Xe driver will have sr-iov it will be useless as it seems to lack
HUC firmware so no HW encoding:

They can fix that, not entirely useless for those of us who want to game in windows VMS, unless by hardware encoding you mean something other then the media engine?

Yup media engine cannot work without it.
It seems that they are not interested in implementing it tho. As the Xe driver will always be “beta” for DG1.

1 Like

I’ve been following the Linux devel side, and it unfortunately looks like DG2 is no longer interesting to Intel, they’ve basically excluded it from all their new Xe driver stuff, and it will stay stuck on the ancient i915 driver forever.

With that in mind, can we get some info about the hard mod to Flex 170 now? The initial hype wave seems to have receded, and it’s probably the only useful thing left to do with this A770.

4 Likes

If we cross-flash A770 to Flex 170 vBIOS, what driver would we use then?

Looks like we’re back in the “flash a GTX 780 into a Quadro” days xD

I believe wendell said it didnt need to be flashed was 100% config on the OS side. It also didnt work on all A770s he had access to for some reason.

1 Like

I believe so as well, but if it were the original Flex 170, what driver should be used to meet our needs? Should it be i915, the new Xe, or some other driver that is exclusive for datatcenter GPUs?

As far as I undersand, we want HW encoders and SR-IOV operational at the same time and on the same DG2-based device.
i915 driver supports HW encoders but does not really support SR-IOV for Arc GPUS.
Xe driver is designed with SR-IOV in mind, but barely supports Arc and does not enable HW enc/dec acceleration on Arcs.

So the questions as I see it are as follows:

  • if we had an original Flex 170 at our disposal, which has identical GPU chip to A770 and is obviously DG2, could we use both SR-IOV and HW encoders at the same time?
  • if so, what driver would we need? It is i915 I assume?

I think its the i915 as well.

Which means that there’s a check in the driver itself, some branch that checks e.g. DeviceId and either enables or disables virtualisation based on that check. Kinda like the check that gives off Error 43 in NVidia drivers in Windows. In that case OS config might not suffice, it might require some reverse engineering of driver to identify where the check is and if it can be, well, bypassed.

On the other hand in April @Forge wrote that out-of-tree driver didn’t appear to have Device Id check, but didn’t really work on more recent kernels. I wonder if that’s the same for Flex 170.

1 Like

thats awful
i had hope for this whole thing but with the driver development being… what it is
and intel themselves confirming they’re gonna be winding down arc…
man the one thing i thought intel had going for me seems like its gonna be gone

2 Likes

so there’s still a chance battlemage will get out of the box support for this? Or also not?

If Alchemist is any indication, I’d expect desktop Battlemage (B770?) to be segmented out of SR-IOV from server Battlemage the same way Flex 170 is segmented from A770.

Has anyone managed to test the B580 to see if SR-IOV is hiding under-the-hood?

9 Likes

It can’t do SR-IOV according to Wendell

1 Like

Noooo…

1 Like
root@pvet:~# sudo lspci -vv -s 03:00.0
03:00.0 VGA compatible controller: Intel Corporation Battlemage G21 [Arc B580] (prog-if 00 [VGA controller])
	Subsystem: Intel Corporation Device 1100
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin ? routed to IRQ 137
	IOMMU group: 13
	Region 0: Memory at 81000000 (64-bit, non-prefetchable) [size=16M]
	Region 2: Memory at 4000000000 (64-bit, prefetchable) [size=16G]
	Expansion ROM at 82000000 [disabled] [size=2M]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express (v2) Endpoint, IntMsgNum 0
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W TEE-IO-
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
			MaxPayload 256 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 L1 Enabled; RCB 64 bytes, LnkDisable- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1
			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-
			 AtomicOpsCtl: ReqEn-
			 IDOReq- IDOCompl- LTR+ EmergencyPowerReductionReq-
			 10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
		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 Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		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: 00000000fee00438  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: [110 v1] Null
	Capabilities: [200 v1] Address Translation Service (ATS)
		ATSCap:	Invalidate Queue Depth: 00
		ATSCtl:	Enable-, Smallest Translation Unit: 00
	Capabilities: [420 v1] Physical Resizable BAR
		BAR 2: current size: 16GB, supported: 256MB 512MB 1GB 2GB 4GB 8GB 16GB
	Capabilities: [400 v1] Latency Tolerance Reporting
		Max snoop latency: 15728640ns
		Max no snoop latency: 15728640ns
	Kernel driver in use: xe
	Kernel modules: xe


lspci no sr-iov found,

1 Like

Hey, it’s been a year, and the A770 as such seems quite a dead end. I’ve got an unused A770 and an SPI flasher here, can you point me to a nice Flex 170 dump, so I can ruin my card or make it useful again?

2 Likes

After watching the recent video, very little hope remains for SR-IOV on A770 - all the focus is around Battlemage Pro at this point.

And it looks like we’d have to buy a Flex 170 and make firmware dump ourselves. A group buy maybe? These things are still quite expensive.