• Prarit Bhargava's avatar
    PCI: Disable all BAR sizing for devices with non-compliant BARs · 36265cad
    Prarit Bhargava authored
    commit ad67b437 upstream.
    
    b84106b4 ("PCI: Disable IO/MEM decoding for devices with non-compliant
    BARs") disabled BAR sizing for BARs 0-5 of devices that don't comply with
    the PCI spec.  But it didn't do anything for expansion ROM BARs, so we
    still try to size them, resulting in warnings like this on Broadwell-EP:
    
      pci 0000:ff:12.0: BAR 6: failed to assign [mem size 0x00000001 pref]
    
    Move the non-compliant BAR check from __pci_read_base() up to
    pci_read_bases() so it applies to the expansion ROM BAR as well as
    to BARs 0-5.
    
    Note that direct callers of __pci_read_base(), like sriov_init(), will now
    bypass this check.  We haven't had reports of devices with broken SR-IOV
    BARs yet.
    
    [bhelgaas: changelog]
    Fixes: b84106b4 ("PCI: Disable IO/MEM decoding for devices with non-compliant BARs")
    Signed-off-by: default avatarPrarit Bhargava <prarit@redhat.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    CC: Thomas Gleixner <tglx@linutronix.de>
    CC: Ingo Molnar <mingo@redhat.com>
    CC: "H. Peter Anvin" <hpa@zytor.com>
    CC: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    36265cad
probe.c 53.3 KB