[SeaBIOS] [Qemu-devel] [PATCH] hw/pci: reserve IO and mem for pci-2-pci bridges with no devices attached

Marcel Apfelbaum marcel.a at redhat.com
Mon Apr 7 14:51:56 CEST 2014


On Mon, 2014-04-07 at 14:44 +0200, Gerd Hoffmann wrote:
>   Hi,
> 
> > > +        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.
I agree. This is why I chose to check shpc capability, because
PCIe ports do not use it (as far as I know). 
> 
> 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.
> 
> Good point.
Yes, thanks! sending v2.
Marcel
> 
> cheers,
>   Gerd
> 
> 






More information about the SeaBIOS mailing list