Simon, For the pass-through device's INTx emulation, we follow the policy: if virtual function 0, use INTA#, otherwise use hardware value. However, this policy only apply when bind_pt_pci_irq to xen, and always use physical value when exporting to guest. This discrepancy cause different INTx, thus different GSI in xen and guest, so that interrupts never got injected to guest. E.g. when assigning a USB controller with non-zero function(00:1d.2) to guest as 00:4.0, xen will see INTA#, while guest see INTC#. This simple patch can fix it. Could you pls. review it? Thanks, -- best rgds, edwin