[SeaBIOS] [PATCH] Don't overallocate mptable
Kevin O'Connor
kevin at koconnor.net
Thu Dec 24 18:22:12 CET 2009
On Thu, Dec 24, 2009 at 06:54:55PM +0200, Gleb Natapov wrote:
> On Thu, Dec 24, 2009 at 11:38:45AM -0500, Kevin O'Connor wrote:
> > foreachpci(bdf, max) {
> > + if (pci_bdf_to_bus(bdf) > 0)
> > + break;
> mptable routing info should be created for each pci bus.
My read of the spec is that independent PCI buses need to be added to
the MPTable, but a bus created due to a PCI-to-PCI bridge (eg, on an
add-on card) need not go into the table.
> See example here:
> http://people.freebsd.org/~fsmp/SMP/mptable/t30
In that example, it looks like the machine has two independent buses -
note how bus 1 has more than four irqs - so it can't be an add-on
card.
> Hmm. It looks like we need to create io_bus entries dynamically
> for each newly discovered PCI bus.
Right now, the pciinit.c code handles neither PCI-to-PCI bridges nor
independent PCI bridges. I think it would be useful to support
bridges (for mapping in add-on cards that have them), but I don't know
why an emulator would want to have independent buses. Note that it's
difficult to detect an independent bus - some sideband mechanism is
needed (eg, see CONFIG_PCI_ROOT1 in src/config.h).
-Kevin
More information about the SeaBIOS
mailing list