|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] XSA-59
Jan,
For XSA-59, I list some questions (coming from your patches and emails) and
consult Intel inside from different groups.
Below are the questions and replies (Q2 still not got answer):
Q1: is the PCI IDs list (0x3400 ...) of root port a complete list? Jan got it
from a disclosure that Intel made to him meanwhile well over-two-years-ago -->
Any update about the list?
[Asit]: There is not update to this list. This was provided in 2011 and
included the Ids prior to being fixed.
Q2: is the PCI IDs list (0x100 ...) of host bridge a complete list? it comes
from Yuriy but Jan need double confirm 'a complete list'.
Q3: the "... without AER capability?" warning triggers on Jan's systems --> is
it an issue? or, how to handle it properly?
[Asit] BIOS can have option to not expose AER capability. It will be good to
check the BIOS setup options. The error reporting should be masked so not
action needed.
[Yuriy] I expanded the answer to Q3 vs. what's in the attached email after we
found out that when root port is operating in DMI mode, AER ext. capability is
not in the chain of ext. capability headers. Please use this one instead.
Answer to Q3:
On Romley system (DID 0x3c00 ... 0x3c0b), for Host bridge BDF=00:00.0, when the
root port is operating as DMI, AER extended capability is defined in VSHDR
(Vendor Specific Header) configuration register (offset 0x148). It should have
value 0x0004.
After pci_find_ext_capability, if it didn't find AER capability, for
BDF=00:00.0 the patch would need to check if VSHDR register has value 0x0004 in
bits [15:0].
Below I've provided example fix for this case:
case 0x3c00 ... 0x3c0b:
pos = pci_find_ext_capability(seg, bus, pdev->devfn,
PCI_EXT_CAP_ID_ERR);
if ( !pos )
{
if ( 0 == bus && 0 == pdev->devfn )
{
dmi_aer_cap_id = pci_conf_read16(seg, 0, 0, 0, 0x148) // DMI
Specific AER Capability ID
if ( 0x0004 != dmi_aer_cap_id )
{
printk(XENLOG_WARNING "%04x:%02x:%02x.%u without AER
capability?\n", seg, bus, dev, func);
break;
}
}
else
{
printk(XENLOG_WARNING "%04x:%02x:%02x.%u without AER
capability?\n", seg, bus, dev, func);
break;
}
}
Q4: the patches have no way of handling future chipsets (yet we also have no
indication that future chipsets would not exhibit the same bad behavior) -->
thoughts?
[Jinsong] IMHO handle future chipset case by case.
Q5: please clarify whether masking the reporting of unsupported requests is
really an appropriate thing to do: After all, this masks not only maliciously
created instances of them, but also any ones possibly resulting from
malfunctioning hardware.
[Yuriy] Most of the client systems don't have SERR enabled (not recommended
configuration). For server systems, I don't know the answer to this question as
our team didn't work on the issue and workaround for it when it was defined.
You'd need to ask Rajesh.
BTW, some other infromation from Yuriy:
VT-d-mask-UR-host-bridge.patch:
1. The workaround is only applicable to the host bridge device 00:00.0 (DMIBAR
does not exist for other devices). The patch is written generically for any
PCIe device/bridge.
2. The workaround is only needed when SERR is enabled. As there will be only a
fraction of client systems with SERR enabled, it might be worthwhile to only
apply it when SERRE is 1.
val = pci_conf_read16(seg, bus, dev, func, PCI_COMMAND);
if ( val & PCI_COMMAND_SERR )
apply this workaround
Thank you all,
Jinsong--- Begin Message --- _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |