• D
    pcie: Simplify pci_adjust_config_limit() · 2f57db8a
    David Gibson 提交于
    Since c2077e2c "pci: Adjust PCI config limit based on bus topology",
    pci_adjust_config_limit() has been used in the config space read and write
    paths to only permit access to extended config space on buses which permit
    it.  Specifically it prevents access on devices below a vanilla-PCI bus via
    some combination of bridges, even if both the host bridge and the device
    itself are PCI-E.
    
    It accomplishes this with a somewhat complex call up the chain of bridges
    to see if any of them prohibit extended config space access.  This is
    overly complex, since we can always know if the bus will support such
    access at the point it is constructed.
    
    This patch simplifies the test by using a flag in the PCIBus instance
    indicating whether extended configuration space is accessible.  It is
    false for vanilla PCI buses.  For PCI-E buses, it is true for root
    buses and equal to the parent bus's's capability otherwise.
    
    For the special case of sPAPR's paravirtualized PCI root bus, which
    acts mostly like vanilla PCI, but does allow extended config space
    access, we override the default value of the flag from the host bridge
    code.
    
    This should cause no behavioural change.
    Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
    Reviewed-by: NGreg Kurz <groug@kaod.org>
    Message-Id: <20190513061939.3464-4-david@gibson.dropbear.id.au>
    Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
    2f57db8a
pci_bus.h 1.7 KB