From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Sinan Kaya <okaya@codeaurora.org>
Cc: linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] arm64: acpi: Support PCI devices numa_node property in ACPI mode
Date: Wed, 12 Apr 2017 18:04:33 +0100 [thread overview]
Message-ID: <20170412170433.GA7412@red-moon> (raw)
In-Reply-To: <0dada57f-4215-4ced-482d-88203857e06d@codeaurora.org>
On Sat, Apr 08, 2017 at 01:17:32PM -0400, Sinan Kaya wrote:
> On 12/31/1969 7:00 PM, linux-arm-kernel [mailto:linux-arm-kernel-bounces@lists.infradead.org] On Behalf Of Sergey Temerkhanov wrote:
> > int pcibus_to_node(struct pci_bus *bus) {
> > - return dev_to_node(&bus->dev);
> > + struct pci_config_window *cfg = bus->sysdata;
> > + struct acpi_device *adev = NULL;
> > + struct device *dev;
> > +
> > + if (!acpi_disabled)
> > + adev = to_acpi_device(cfg->parent);
> > +
>
> I see a problem here that NUMA node information is read from the
> parent device. PCI bus can have multiple levels of switches and
> bridges. The NUMA information is only present on the host bridge.
>
> This code only works if the endpoint is directly connected to the root
> port.
That's not what this code does. This code retrieves the struct device
backing the ACPI device representing the PNP0A08 host bridge and its
dev->numa_node value (that was set in pci_acpi_scan_root()).
I am not a big fan of this. I wonder if we could not make it DT/ACPI
agnostic by simply setting the numa_node in the pci_bus->dev field,
and propagate it downstream a PCI hierarcy (as we do with sysdata)
in pci_alloc_child_bus().
This way pcibus_to_node() would become straightforward (ie as it
is now - provided the above is doable):
dev_to_node(&bus->dev);
This is suspiciously similar to the domain number song and dance
except that the NUMA node now is in the struct pci_bus->dev->numa_node
instead of struct pci_bus->domain_nr.
Lorenzo
WARNING: multiple messages have this Message-ID (diff)
From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arm64: acpi: Support PCI devices numa_node property in ACPI mode
Date: Wed, 12 Apr 2017 18:04:33 +0100 [thread overview]
Message-ID: <20170412170433.GA7412@red-moon> (raw)
In-Reply-To: <0dada57f-4215-4ced-482d-88203857e06d@codeaurora.org>
On Sat, Apr 08, 2017 at 01:17:32PM -0400, Sinan Kaya wrote:
> On 12/31/1969 7:00 PM, linux-arm-kernel [mailto:linux-arm-kernel-bounces at lists.infradead.org] On Behalf Of Sergey Temerkhanov wrote:
> > int pcibus_to_node(struct pci_bus *bus) {
> > - return dev_to_node(&bus->dev);
> > + struct pci_config_window *cfg = bus->sysdata;
> > + struct acpi_device *adev = NULL;
> > + struct device *dev;
> > +
> > + if (!acpi_disabled)
> > + adev = to_acpi_device(cfg->parent);
> > +
>
> I see a problem here that NUMA node information is read from the
> parent device. PCI bus can have multiple levels of switches and
> bridges. The NUMA information is only present on the host bridge.
>
> This code only works if the endpoint is directly connected to the root
> port.
That's not what this code does. This code retrieves the struct device
backing the ACPI device representing the PNP0A08 host bridge and its
dev->numa_node value (that was set in pci_acpi_scan_root()).
I am not a big fan of this. I wonder if we could not make it DT/ACPI
agnostic by simply setting the numa_node in the pci_bus->dev field,
and propagate it downstream a PCI hierarcy (as we do with sysdata)
in pci_alloc_child_bus().
This way pcibus_to_node() would become straightforward (ie as it
is now - provided the above is doable):
dev_to_node(&bus->dev);
This is suspiciously similar to the domain number song and dance
except that the NUMA node now is in the struct pci_bus->dev->numa_node
instead of struct pci_bus->domain_nr.
Lorenzo
next prev parent reply other threads:[~2017-04-12 17:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-08 17:17 [PATCH] arm64: acpi: Support PCI devices numa_node property in ACPI mode Sinan Kaya
2017-04-12 17:04 ` Lorenzo Pieralisi [this message]
2017-04-12 17:04 ` Lorenzo Pieralisi
2017-04-12 17:27 ` Sinan Kaya
2017-04-12 17:27 ` Sinan Kaya
2017-04-12 17:48 ` Sinan Kaya
2017-04-12 17:48 ` Sinan Kaya
-- strict thread matches above, loose matches on Subject: below --
2017-04-06 11:47 Sergey Temerkhanov
2017-04-06 11:47 ` Sergey Temerkhanov
2017-04-07 17:18 ` Lorenzo Pieralisi
2017-04-07 17:18 ` Lorenzo Pieralisi
2017-04-07 18:31 ` Sergei Temerkhanov
2017-04-07 18:31 ` Sergei Temerkhanov
2017-04-21 17:17 ` Lorenzo Pieralisi
2017-04-21 17:17 ` Lorenzo Pieralisi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170412170433.GA7412@red-moon \
--to=lorenzo.pieralisi@arm.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=okaya@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.