From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomasz Nowicki Subject: Re: [Patch v7 4/7] PCI/ACPI: Add interface acpi_pci_root_create() Date: Wed, 21 Oct 2015 11:57:53 +0200 Message-ID: <562761A1.4020306@linaro.org> References: <1444804182-6596-1-git-send-email-jiang.liu@linux.intel.com> <1444804182-6596-5-git-send-email-jiang.liu@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1444804182-6596-5-git-send-email-jiang.liu@linux.intel.com> Sender: linux-pci-owner@vger.kernel.org To: Jiang Liu , Bjorn Helgaas , "Rafael J . Wysocki" , Lorenzo Pieralisi , Marc Zyngier , Hanjun Guo , Liviu Dudau Cc: linux-acpi@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org List-Id: linux-acpi@vger.kernel.org On 14.10.2015 08:29, Jiang Liu wrote: > Introduce common interface acpi_pci_root_create() and related data > structures to create PCI root bus for ACPI PCI host bridges. It will > be used to kill duplicated arch specific code for IA64 and x86. It may > also help ARM64 in future. > > Reviewed-by: Lorenzo Pieralisi > Tested-by: Tony Luck > Signed-off-by: Jiang Liu > Signed-off-by: Liu Jiang > --- > drivers/acpi/pci_root.c | 204 ++++++++++++++++++++++++++++++++++++++++++++++ > include/linux/pci-acpi.h | 24 ++++++ > 2 files changed, 228 insertions(+) > [...] > + > +struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root, > + struct acpi_pci_root_ops *ops, > + struct acpi_pci_root_info *info, > + void *sysdata) > +{ > + int ret, busnum = root->secondary.start; > + struct acpi_device *device = root->device; > + int node = acpi_get_node(device->handle); > + struct pci_bus *bus; > + > + info->root = root; > + info->bridge = device; > + info->ops = ops; > + INIT_LIST_HEAD(&info->resources); > + snprintf(info->name, sizeof(info->name), "PCI Bus %04x:%02x", > + root->segment, busnum); > + > + if (ops->init_info && ops->init_info(info)) > + goto out_release_info; > + if (ops->prepare_resources) > + ret = ops->prepare_resources(info); > + else > + ret = acpi_pci_probe_root_resources(info); > + if (ret < 0) > + goto out_release_info; > + > + pci_acpi_root_add_resources(info); > + pci_add_resource(&info->resources, &root->secondary); > + bus = pci_create_root_bus(NULL, busnum, ops->pci_ops, > + sysdata, &info->resources); Thank a lot for this cleanup!! I recall you already considered passing segment (domain nr) to pci_create_root_bus, right? Can you please remind me why we gave up on this? I am asking because currently I can not find the way to retrieve domain number from pci_bus_assign_domain_nr (for those platforms which choose PCI_DOMAINS_GENERIC and want to use segment nr from MCFG table) which is the part of pci_create_root_bus. Regards, Tomasz