On 24.05.17 18:22:19, Lorenzo Pieralisi wrote: > PCI core requires the NUMA node for the struct pci_host_bridge.dev to > be set by using the pcibus_to_node(struct pci_bus*) API, that on ARM64 > systems relies on the struct pci_host_bridge->bus.dev NUMA node. > > The struct pci_host_bridge.dev NUMA node is then propagated through > the PCI device hierarchy as PCI devices (and bridges) are enumerated > under it. > > Therefore, in order to set-up the PCI NUMA hierarchy appropriately, the > struct pci_host_bridge->bus.dev NUMA node must be set before core > code calls pcibus_to_node(struct pci_bus*) on it so that PCI core can > retrieve the NUMA node for the struct pci_host_bridge.dev device and can > propagate it through the PCI bus tree. > > On ARM64 ACPI based systems the struct pci_host_bridge->bus.dev NUMA > node can be set-up in pcibios_root_bridge_prepare() by parsing the root > bridge ACPI device firmware binding. > > Add code to the pcibios_root_bridge_prepare() that, when booting with > ACPI, parse the root bridge ACPI device companion NUMA binding and set > the corresponding struct pci_host_bridge->bus.dev NUMA node > appropriately. > > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> > Cc: Will Deacon <will.deacon@xxxxxxx> > Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> > Cc: Catalin Marinas <catalin.marinas@xxxxxxx> Looks good. Reviewed-by: Robert Richter <rrichter@xxxxxxxxxx> Tested-by: Robert Richter <rrichter@xxxxxxxxxx> Thanks, -Robert