[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Is: pci=assign-busses blows up Xen 4.4 Was:Re: [PATCH] x86/msi: Validate the guest-identified PCI devices in pci_prepare_msix()

> But I am not sure if that is the right way of doing it. Anyhow there
> was another assumption made in which 'assign-busses' crippled Xen
> (see second attachment).
> 3). Trap on PCI_SECONDARY_BUS and PCI_SUBORDINATE_BUS writes and
>     fixup the structures.
>     I hadn't attempted that but that could also be done. That way Xen
>     is aware of those changes and can update its PCI structures.

4). Make Xen do the bus re-assignment.

The attached patch is an interesting "solution" to the BIOS
not doing the right bus-extending with SR-IOV devices.

Paid good money for this motherboard and it has bugs <sigh>.
(To be fair, I also saw this issue on two other Intel
SandyBridge motherboard).

Anyhow, with this patch I can finally use SR-IOV cards on this
motherboard and it basically does what Linux 'assign-buses' does.
aka I don't get this:

SR-IOV: bus number out of range.

Because it is all done during bootup it only runs during boot-time.

It does not fix the issue if 'pci=assign-buses' is provide on the
Linux kernel, but it makes the need for that parameter obsolete.
A next step would have to actually delete that from the Linux line,
but that seems evil.

If there is interest in making this upstream in Xen I can do
that- but if we want to do that I think we need to make the Xen's
view of PCI devices be similar to what this patch does. That is have
a 'struct pci_bus' and 'struct pci_dev' and proper linking
between them. Otherwise it is quite hard to keep all of this

The patches have some serious case of #ifdef and skanky code,
but ugh - they work for me.

Attachment: 0005-xen-pci-assign-buses-Renumber-the-bus-if-there-is-a-.patch
Description: Text document

Attachment: 0006-pci-assign-buses-Suspend-resume-the-console-device-a.patch
Description: Text document

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.