Thread (65 messages) 65 messages, 6 authors, 2014-11-21

[RFC PATCH 01/16] PCI: Enhance pci_scan_root_bus() to support default IO/MEM resources

From: arnd@arndb.de (Arnd Bergmann)
Date: 2014-11-18 09:38:10
Also in: linux-pci, linuxppc-dev, lkml

On Tuesday 18 November 2014 15:44:23 Yijing Wang wrote:
On 2014/11/17 18:08, Arnd Bergmann wrote:
quoted
On Monday 17 November 2014 18:21:35 Yijing Wang wrote:
quoted
-       list_for_each_entry(window, resources, list)
-               if (window->res->flags & IORESOURCE_BUS) {
-                       found = true;
-                       break;
-               }
+       if (!resources) {
+               pci_add_resource(&default_res, &ioport_resource);
+               pci_add_resource(&default_res, &iomem_resource);
+               pci_add_resource(&default_res, &busn_resource);
+       } else {
Isn't it almost always wrong to do this? You are adding all of the
I/O ports and memory to the host bridge, which will prevent you from
adding another host bridge, and the iomem_resource normally
includes a lot of addresses that are not accessible by the PCI host.
Hi Arnd, pci host bridge windows are the ranges allow child devices to setup
from. Add all of IO/MEM here just a limit to child devices, no request for these
resources, so it won't hurt another host bridge. Some platforms have no dts or ACPI
report host bridge resources, in this case, we directly assign ioport/iomem_resources
as the root resources of PCI devices.
But it would be wrong to allow hosts to allocate a device BAR that is not
visible through the host bridge. I think we need to keep these separate
from the general case: if you call any of the modern interfaces you have
to provide the resources and a device. I notice that there is only one
caller of pci_scan_bus_parented(), we should probably change that over to
pci_scan_root_bus() or your new interface and remove the old one, but
keep pci_scan_bus() as the only entry point for all of the legacy users
that do not know about the resources.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help