43 lines
1.3 KiB
Diff
43 lines
1.3 KiB
Diff
References: bnc#787169
|
|
|
|
# HG changeset patch
|
|
# User Jan Beulich <jbeulich@suse.com>
|
|
# Date 1357559812 -3600
|
|
# Node ID b514b7118958327605e33dd387944832bc8d734a
|
|
# Parent c9a01b396cb4eaedef30e9a6ed615115a9f8bfc5
|
|
VT-d: relax source qualifier for MSI of phantom functions
|
|
|
|
With ordinary requests allowed to come from phantom functions, the
|
|
remapping tables ought to be set up to allow for MSI triggers to come
|
|
from other than the "real" device too.
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
Acked-by: "Zhang, Xiantao" <xiantao.zhang@intel.com>
|
|
|
|
--- a/xen/drivers/passthrough/vtd/intremap.c
|
|
+++ b/xen/drivers/passthrough/vtd/intremap.c
|
|
@@ -438,13 +438,22 @@ static void set_msi_source_id(struct pci
|
|
devfn = pdev->devfn;
|
|
switch ( pdev->type )
|
|
{
|
|
+ unsigned int sq;
|
|
+
|
|
case DEV_TYPE_PCIe_BRIDGE:
|
|
case DEV_TYPE_PCIe2PCI_BRIDGE:
|
|
case DEV_TYPE_LEGACY_PCI_BRIDGE:
|
|
break;
|
|
|
|
case DEV_TYPE_PCIe_ENDPOINT:
|
|
- set_ire_sid(ire, SVT_VERIFY_SID_SQ, SQ_ALL_16, PCI_BDF2(bus, devfn));
|
|
+ switch ( pdev->phantom_stride )
|
|
+ {
|
|
+ case 1: sq = SQ_13_IGNORE_3; break;
|
|
+ case 2: sq = SQ_13_IGNORE_2; break;
|
|
+ case 4: sq = SQ_13_IGNORE_1; break;
|
|
+ default: sq = SQ_ALL_16; break;
|
|
+ }
|
|
+ set_ire_sid(ire, SVT_VERIFY_SID_SQ, sq, PCI_BDF2(bus, devfn));
|
|
break;
|
|
|
|
case DEV_TYPE_PCI:
|