x86, mrst: Don't blindly access extended config space
Do not blindly access extended configuration space unless we actively know we're on a Moorestown platform. The fixed-size BAR capability lives in the extended configuration space, and thus is not applicable if the configuration space isn't appropriately sized. This fixes booting certain VMware configurations with CONFIG_MRST=y. Moorestown will add a fake PCI-X 266 capability to advertise the presence of extended configuration space. Reported-and-tested-by: Petr Vandrovec <petr@vandrovec.name> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Acked-by: Jacob Pan <jacob.jun.pan@intel.com> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> LKML-Reference: <AANLkTiltKUa3TrKR1M51eGw8FLNoQJSLT0k0_K5X3-OJ@mail.gmail.com>
This commit is contained in:
parent
7f284d3cc9
commit
e9b1d5d0ff
1 changed files with 4 additions and 0 deletions
|
@ -247,6 +247,10 @@ static void __devinit pci_fixed_bar_fixup(struct pci_dev *dev)
|
|||
u32 size;
|
||||
int i;
|
||||
|
||||
/* Must have extended configuration space */
|
||||
if (dev->cfg_size < PCIE_CAP_OFFSET + 4)
|
||||
return;
|
||||
|
||||
/* Fixup the BAR sizes for fixed BAR devices and make them unmoveable */
|
||||
offset = fixed_bar_cap(dev->bus, dev->devfn);
|
||||
if (!offset || PCI_DEVFN(2, 0) == dev->devfn ||
|
||||
|
|
Loading…
Reference in a new issue