[SeaBIOS] [Qemu-devel] [PATCH] hw/pci: reserve IO and mem for pci-2-pci bridges with no devices attached
kraxel at redhat.com
Mon Apr 7 14:44:06 CEST 2014
> > + u8 shpc_cap = pci_find_capability(s->bus_dev, PCI_CAP_ID_SHPC);
> One thing I'd do is maybe check that the relevant memory type is
> enabled in the bridge (probably just by writing fff to base and reading
> it back).
> This will give hypervisors an option to avoid wasting resources:
> e.g. it's uncommon for express devices to claim IO.
I don't think we'll need that for the SHPC bridge.
For express it indeed makes sense to avoid claiming IO address space.
I'd try to find something more automatic though, where you don't need
some kind of "disable io for this express port" config option.
For express ports which can only have a single device underneath we can
check whenever we have a device and if one is present already don't
bother claiming extra resources for hotplug.
> > + for (cap = pci_config_readb(pci->bdf, PCI_CAPABILITY_LIST); cap;
> > + cap = pci_config_readb(pci->bdf, cap + PCI_CAP_LIST_NEXT))
> > + if (pci_config_readb(pci->bdf, cap + PCI_CAP_LIST_ID) == cap_id)
> > + return cap;
> I would also limit this to 256 iterations, to make sure
> we dont' get into an infinite loop with a broken device.
More information about the SeaBIOS