From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Tomasz Nowicki <tn@semihalf.com>
Cc: bhelgaas@google.com, arnd@arndb.de, will.deacon@arm.com,
catalin.marinas@arm.com, rjw@rjwysocki.net,
hanjun.guo@linaro.org, okaya@codeaurora.org,
jiang.liu@linux.intel.com, Stefano.Stabellini@eu.citrix.com,
robert.richter@caviumnetworks.com, mw@semihalf.com,
Liviu.Dudau@arm.com, ddaney@caviumnetworks.com,
wangyijing@huawei.com, Suravee.Suthikulpanit@amd.com,
msalter@redhat.com, linux-pci@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-acpi@vger.kernel.org,
linux-kernel@vger.kernel.org, linaro-acpi@lists.linaro.org,
jchandra@broadcom.com, jcm@redhat.com
Subject: Re: [PATCH V4 11/23] pci, acpi: Move ACPI host bridge device companion assignment to core code.
Date: Tue, 9 Feb 2016 18:02:27 +0000 [thread overview]
Message-ID: <20160209180227.GC22868@red-moon> (raw)
In-Reply-To: <1454606941-9523-12-git-send-email-tn@semihalf.com>
On Thu, Feb 04, 2016 at 06:28:49PM +0100, Tomasz Nowicki wrote:
> Currently we have two platforms (x86 & ia64) capable of PCI ACPI host
> bridge initialization. They both use sysdata to pass down parent
> device reference and both rely on NULL parent in pci_create_root_bus()
> to validate sysdata content.
>
> It looks hacky and prevents us from getting some firmware specific
> info for PCI host controller e.g. PCI bus domain number.
> However, we overcome that blocker by passing down parent
> device via pci_create_root_bus parameter (as the ACPI device type)
> and using ACPI_COMPANION_SET in core code for ACPI boot method.
> ACPI_COMPANION_SET is safe to run for all cases DT, ACPI and DT&ACPI.
>
> Suggested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
> Tested-by: Duc Dang <dhdang@apm.com>
> Tested-by: Dongdong Liu <liudongdong3@huawei.com>
> Tested-by: Hanjun Guo <hanjun.guo@linaro.org>
> Tested-by: Graeme Gregory <graeme.gregory@linaro.org>
> Tested-by: Sinan Kaya <okaya@codeaurora.org>
> ---
> drivers/acpi/pci_root.c | 5 ++++-
> drivers/pci/probe.c | 2 ++
> 2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> index ae3fe4e..a65c8c2 100644
> --- a/drivers/acpi/pci_root.c
> +++ b/drivers/acpi/pci_root.c
> @@ -846,7 +846,10 @@ struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root,
>
> pci_acpi_root_add_resources(info);
> pci_add_resource(&info->resources, &root->secondary);
> - bus = pci_create_root_bus(NULL, busnum, ops->pci_ops,
> +
> + /* Root bridge device needs to be sure of parent ACPI type */
You can improve the comment.
"pci_create_root_bus() needs to detect the parent device type,
so initialize its companion data accordingly".
> + ACPI_COMPANION_SET(&device->dev, device);
> + bus = pci_create_root_bus(&device->dev, busnum, ops->pci_ops,
> sysdata, &info->resources);
> if (!bus)
> goto out_release_info;
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index 6d7ab9b..81dd3a2 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -2100,6 +2100,8 @@ struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
> bridge->dev.parent = parent;
> bridge->dev.release = pci_release_host_bridge_dev;
> dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(b), bus);
> + ACPI_COMPANION_SET(&bridge->dev,
> + parent ? to_acpi_device_node(parent->fwnode) : NULL);
if (parent)
ACPI_COMPANION_SET(&bridge->dev, ACPI_COMPANION(parent));
?
It seems fine to me, hopefully Rafael can have a look to countercheck.
Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> error = pcibios_root_bridge_prepare(bridge);
> if (error) {
> kfree(bridge);
> --
> 1.9.1
>
WARNING: multiple messages have this Message-ID (diff)
From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V4 11/23] pci, acpi: Move ACPI host bridge device companion assignment to core code.
Date: Tue, 9 Feb 2016 18:02:27 +0000 [thread overview]
Message-ID: <20160209180227.GC22868@red-moon> (raw)
In-Reply-To: <1454606941-9523-12-git-send-email-tn@semihalf.com>
On Thu, Feb 04, 2016 at 06:28:49PM +0100, Tomasz Nowicki wrote:
> Currently we have two platforms (x86 & ia64) capable of PCI ACPI host
> bridge initialization. They both use sysdata to pass down parent
> device reference and both rely on NULL parent in pci_create_root_bus()
> to validate sysdata content.
>
> It looks hacky and prevents us from getting some firmware specific
> info for PCI host controller e.g. PCI bus domain number.
> However, we overcome that blocker by passing down parent
> device via pci_create_root_bus parameter (as the ACPI device type)
> and using ACPI_COMPANION_SET in core code for ACPI boot method.
> ACPI_COMPANION_SET is safe to run for all cases DT, ACPI and DT&ACPI.
>
> Suggested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
> Tested-by: Duc Dang <dhdang@apm.com>
> Tested-by: Dongdong Liu <liudongdong3@huawei.com>
> Tested-by: Hanjun Guo <hanjun.guo@linaro.org>
> Tested-by: Graeme Gregory <graeme.gregory@linaro.org>
> Tested-by: Sinan Kaya <okaya@codeaurora.org>
> ---
> drivers/acpi/pci_root.c | 5 ++++-
> drivers/pci/probe.c | 2 ++
> 2 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> index ae3fe4e..a65c8c2 100644
> --- a/drivers/acpi/pci_root.c
> +++ b/drivers/acpi/pci_root.c
> @@ -846,7 +846,10 @@ struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root,
>
> pci_acpi_root_add_resources(info);
> pci_add_resource(&info->resources, &root->secondary);
> - bus = pci_create_root_bus(NULL, busnum, ops->pci_ops,
> +
> + /* Root bridge device needs to be sure of parent ACPI type */
You can improve the comment.
"pci_create_root_bus() needs to detect the parent device type,
so initialize its companion data accordingly".
> + ACPI_COMPANION_SET(&device->dev, device);
> + bus = pci_create_root_bus(&device->dev, busnum, ops->pci_ops,
> sysdata, &info->resources);
> if (!bus)
> goto out_release_info;
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index 6d7ab9b..81dd3a2 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -2100,6 +2100,8 @@ struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
> bridge->dev.parent = parent;
> bridge->dev.release = pci_release_host_bridge_dev;
> dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(b), bus);
> + ACPI_COMPANION_SET(&bridge->dev,
> + parent ? to_acpi_device_node(parent->fwnode) : NULL);
if (parent)
ACPI_COMPANION_SET(&bridge->dev, ACPI_COMPANION(parent));
?
It seems fine to me, hopefully Rafael can have a look to countercheck.
Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> error = pcibios_root_bridge_prepare(bridge);
> if (error) {
> kfree(bridge);
> --
> 1.9.1
>
next prev parent reply other threads:[~2016-02-09 18:00 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-04 17:28 [PATCH V4 00/23] MMCONFIG refactoring and support for ARM64 PCI hostbridge init based on ACPI Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 01/23] x86, pci: Reorder logic of pci_mmconfig_insert() function Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 02/23] x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code out of arch/x86/ directory Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 03/23] pci, acpi, mcfg: Provide generic implementation of MCFG code initialization Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 04/23] x86, pci: mmconfig_{32, 64}.c code refactoring - remove code duplication Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 04/23] x86, pci: mmconfig_{32,64}.c " Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 05/23] x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM driver Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 06/23] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 07/23] pci, acpi, mcfg: Provide default RAW ACPI PCI config space accessors Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 08/23] arm64, acpi: Use MCFG and empty PCI config space accessors from mcfg.c file Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 09/23] pci, acpi, ecam: Add flag to indicate whether ECAM region was hot added or not Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 10/23] x86, pci: Cleanup platform specific MCFG data by using ECAM hot_added flag Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 11/23] pci, acpi: Move ACPI host bridge device companion assignment to core code Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-09 18:02 ` Lorenzo Pieralisi [this message]
2016-02-09 18:02 ` Lorenzo Pieralisi
2016-02-10 21:09 ` Tomasz Nowicki
2016-02-10 21:09 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 12/23] x86, ia64, pci: Remove ACPI companion device from platform specific data Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-09 17:28 ` Lorenzo Pieralisi
2016-02-09 17:28 ` Lorenzo Pieralisi
2016-02-10 21:21 ` Tomasz Nowicki
2016-02-10 21:21 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 13/23] pci, acpi: Provide generic way to assign bus domain number Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 14/23] x86, ia64: Include acpi_pci_{add|remove}_bus to the default pcibios_{add|remove}_bus implementation Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 15/23] acpi, mcfg: Implement two calls that might be used to inject/remove MCFG region Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-10 14:06 ` Lorenzo Pieralisi
2016-02-10 14:06 ` Lorenzo Pieralisi
2016-02-12 8:56 ` Tomasz Nowicki
2016-02-12 8:56 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 16/23] x86, acpi, pci: Use equivalent function from mcfg.c driver Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 17/23] acpi, mcfg: Add default PCI config accessors implementation and initial support for related quirks Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-29 8:03 ` Jayachandran Chandrashekaran Nair
2016-02-29 8:03 ` Jayachandran Chandrashekaran Nair
2016-03-02 10:42 ` Lorenzo Pieralisi
2016-03-02 10:42 ` Lorenzo Pieralisi
2016-02-04 17:28 ` [PATCH V4 18/23] pci, of: Move the PCI I/O space management to PCI core code Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 19/23] drivers: pci: add generic code to claim bus resources Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 20/23] pci, acpi: Support for ACPI based generic PCI host controller init Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:28 ` [PATCH V4 21/23] pci, acpi: Match PCI config space accessors against platfrom specific quirks Tomasz Nowicki
2016-02-04 17:28 ` Tomasz Nowicki
2016-02-04 17:29 ` [PATCH V4 22/23] arm64, pci, acpi: Assign legacy IRQs once device is enable Tomasz Nowicki
2016-02-04 17:29 ` Tomasz Nowicki
2016-02-11 11:58 ` Lorenzo Pieralisi
2016-02-11 11:58 ` Lorenzo Pieralisi
2016-02-11 17:17 ` Lorenzo Pieralisi
2016-02-11 17:17 ` Lorenzo Pieralisi
2016-02-11 18:39 ` Tomasz Nowicki
2016-02-11 18:39 ` Tomasz Nowicki
2016-02-11 18:46 ` Tomasz Nowicki
2016-02-11 18:46 ` Tomasz Nowicki
2016-02-04 17:29 ` [PATCH V4 23/23] arm64, pci, acpi: Start using ACPI based PCI host bridge driver for ARM64 Tomasz Nowicki
2016-02-04 17:29 ` Tomasz Nowicki
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=20160209180227.GC22868@red-moon \
--to=lorenzo.pieralisi@arm.com \
--cc=Liviu.Dudau@arm.com \
--cc=Stefano.Stabellini@eu.citrix.com \
--cc=Suravee.Suthikulpanit@amd.com \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=ddaney@caviumnetworks.com \
--cc=hanjun.guo@linaro.org \
--cc=jchandra@broadcom.com \
--cc=jcm@redhat.com \
--cc=jiang.liu@linux.intel.com \
--cc=linaro-acpi@lists.linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=msalter@redhat.com \
--cc=mw@semihalf.com \
--cc=okaya@codeaurora.org \
--cc=rjw@rjwysocki.net \
--cc=robert.richter@caviumnetworks.com \
--cc=tn@semihalf.com \
--cc=wangyijing@huawei.com \
--cc=will.deacon@arm.com \
/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.