hi Andrew, It's a pci device that does not support legacy intx mode, but it accidently reports PCI_INTERRUPT_PIN as 1, which should be 0 instead. So, in dom0, the machine irq is 0, which will cause later xc_physdev_map_pirq() fail and passthrough failure.
Therefore, we treat this case as PCI_INTERRUPT_PIN is 0 and report to guest the right value (0) of PCI_INTERRUPT_PIN. Then in guest, it's able to use msi mode and function normally. On Mon, Dec 03, 2018 at 02:12:58PM +0000, Andrew Cooper wrote: > On 03/12/2018 05:04, Zhao Yan wrote: > > For some pci device, even its PCI_INTERRUPT_PIN is not 0, it actually > > doesn't support INTx mode, so its machine irq read from host sysfs is 0. > > In that case, report PCI_INTERRUPT_PIN as 0 to guest and let passthrough > > continue. > > What causes this problem? It it a non-PCI compliant device? Is it a > device which has legacy lines prohibited? > > ~Andrew