mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 14:41:22 -05:00
PCI: Set up bridge resources earlier
Bridge windows are read twice from PCI Config Space, the first time from pci_read_bridge_windows(), which does not set up the device's resources. This causes problems down the road as child resources of the bridge cannot check whether they reside within the bridge window or not. Set up the bridge windows already in pci_read_bridge_windows(). Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Link: https://patch.msgid.link/20250924134228.1663-2-ilpo.jarvinen@linux.intel.com
This commit is contained in:
committed by
Bjorn Helgaas
parent
15c5867b0a
commit
a43ac325c7
@@ -537,10 +537,14 @@ static void pci_read_bridge_windows(struct pci_dev *bridge)
|
||||
}
|
||||
if (io) {
|
||||
bridge->io_window = 1;
|
||||
pci_read_bridge_io(bridge, &res, true);
|
||||
pci_read_bridge_io(bridge,
|
||||
pci_resource_n(bridge, PCI_BRIDGE_IO_WINDOW),
|
||||
true);
|
||||
}
|
||||
|
||||
pci_read_bridge_mmio(bridge, &res, true);
|
||||
pci_read_bridge_mmio(bridge,
|
||||
pci_resource_n(bridge, PCI_BRIDGE_MEM_WINDOW),
|
||||
true);
|
||||
|
||||
/*
|
||||
* DECchip 21050 pass 2 errata: the bridge may miss an address
|
||||
@@ -578,7 +582,10 @@ static void pci_read_bridge_windows(struct pci_dev *bridge)
|
||||
bridge->pref_64_window = 1;
|
||||
}
|
||||
|
||||
pci_read_bridge_mmio_pref(bridge, &res, true);
|
||||
pci_read_bridge_mmio_pref(bridge,
|
||||
pci_resource_n(bridge,
|
||||
PCI_BRIDGE_PREF_MEM_WINDOW),
|
||||
true);
|
||||
}
|
||||
|
||||
void pci_read_bridge_bases(struct pci_bus *child)
|
||||
|
||||
Reference in New Issue
Block a user