On Wed, Dec 23, 2009 at 10:35:55PM +0200, Gleb Natapov wrote:
On Wed, Dec 23, 2009 at 03:26:55PM -0500, Kevin O'Connor wrote:
BTW, this is only intended for PCI bus zero entries, right? (In theory, one could map a card with a bridge into kvm..)
Mptable should have description for each PCI bus. Devices behind PCI bridge are still on the same bus.
I believe mptable should describe each root pci bus. However, foreachpci() can iterate over both root pci buses and secondary buses - so I think the code should check for (pci_bdf_to_bus(bdf) > 0) and break from the loop.
Though, admittedly, the code in pciinit.c doesn't handle secondary buses anyway.
I believe the intent of the irq routing in the mptable is to tell the OS what the pci pins are routed to so that it can change the irq to a different pin. If only one pin is described, the OS wont be able to switch to a different pin.
Each function hardwired to one pin only. It is impossible to change the pin. It is possible to route it to a different gsi though. Mptable maps pins of each device to gsis.
Oops - you are correct.
-Kevin