Subject: [Patch v5 4/6] PCI/ACPI: Consolidate common PCI host bridge code into ACPI core

From: [email-masked] (Bjorn Helgaas)
Date: Wed, 29 Jul 2015 15:54:17 -0500

On Wed, Jun 10, 2015 at 12:58:15AM +0800, Jiang Liu wrote:
> On 2015/6/10 0:12, Lorenzo Pieralisi wrote:
> > On Mon, Jun 08, 2015 at 05:20:46PM +0100, Jiang Liu wrote:

> >> +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 segment, int node)
> > 
> > I do not think you need to pass segment and node, they clutter the
> > function signature when you can retrieve them from root, I would
> > make them local variables and use root->segment and acpi_get_node
> > in the function body to retrieve them.
> On x86, node and segment may be overridden under certain conditions.
> For example, segment will always be 0 if 'pci_ignore_seg' is set.

I agree we should drop the segment and node parameters.  Having the
information in two places means we can make a mistake, and we can easily
avoid that possibility by only keeping it in one place.

I think it is a bug that we don't set root->segment to zero when we have
pci_ignore_seg.  Sorry, that's my fault from 1f09b09b4de0 ("x86/PCI: Ignore
_SEG on HP xw9300").

I don't understand the issue about overriding the node number.  Can you
explain it?