From: Hanjun Guo <hanjun.guo@linaro.org>
To: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
iommu@lists.linux-foundation.org
Cc: Tomasz Nowicki <tn@semihalf.com>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Marc Zyngier <marc.zyngier@arm.com>,
Will Deacon <will.deacon@arm.com>,
Robin Murphy <robin.murphy@arm.com>,
Joerg Roedel <joro@8bytes.org>, Jon Masters <jcm@redhat.com>,
Sinan Kaya <okaya@codeaurora.org>,
Nate Watterson <nwatters@codeaurora.org>,
Dennis Chen <dennis.chen@arm.com>,
linux-acpi@vger.kernel.org, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4 03/15] drivers: acpi: iort: introduce linker section for IORT entries probing
Date: Mon, 5 Sep 2016 19:42:05 +0800 [thread overview]
Message-ID: <300bbfa6-8a9a-25f6-1182-e220ed46397e@linaro.org> (raw)
In-Reply-To: <1471274620-20754-4-git-send-email-lorenzo.pieralisi@arm.com>
On 2016/8/15 23:23, Lorenzo Pieralisi wrote:
> Since commit e647b532275b ("ACPI: Add early device probing
> infrastructure") the kernel has gained the infrastructure that allows
> adding linker script section entries to execute ACPI driver callbacks
> (ie probe routines) for all subsystems that register a table entry
> in the respective kernel section (eg clocksource, irqchip).
>
> Since ARM IOMMU devices data is described through IORT tables when
> booting with ACPI, the ARM IOMMU drivers must be made able to hook ACPI
> callback routines that are called to probe IORT entries and initialize
> the respective IOMMU devices.
>
> To avoid adding driver specific hooks into IORT table initialization
> code (breaking therefore code modularity - ie ACPI IORT code must be made
> aware of ARM SMMU drivers ACPI init callbacks), this patch adds code
> that allows ARM SMMU drivers to take advantage of the ACPI early probing
> infrastructure, so that they can add linker script section entries
> containing drivers callback to be executed on IORT tables detection.
>
> Since IORT nodes are differentiated by a type, the callback routines
> can easily parse the IORT table entries, check the IORT nodes and
> carry out some actions whenever the IORT node type associated with
> the driver specific callback is matched.
>
> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
> Cc: Tomasz Nowicki <tn@semihalf.com>
> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
> Cc: Marc Zyngier <marc.zyngier@arm.com>
> ---
> drivers/acpi/arm64/iort.c | 2 ++
> include/asm-generic/vmlinux.lds.h | 1 +
> include/linux/iort.h | 3 +++
> 3 files changed, 6 insertions(+)
>
> diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
> index 2543f60..cad7d1d 100644
> --- a/drivers/acpi/arm64/iort.c
> +++ b/drivers/acpi/arm64/iort.c
> @@ -383,4 +383,6 @@ void __init iort_table_detect(void)
> const char *msg = acpi_format_exception(status);
> pr_err("Failed to get table, %s\n", msg);
> }
> +
> + acpi_probe_device_table(iort);
> }
> diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> index 2456397..7ee4e0c 100644
> --- a/include/asm-generic/vmlinux.lds.h
> +++ b/include/asm-generic/vmlinux.lds.h
> @@ -546,6 +546,7 @@
> IRQCHIP_OF_MATCH_TABLE() \
> ACPI_PROBE_TABLE(irqchip) \
> ACPI_PROBE_TABLE(clksrc) \
> + ACPI_PROBE_TABLE(iort) \
> EARLYCON_TABLE()
>
> #define INIT_TEXT \
> diff --git a/include/linux/iort.h b/include/linux/iort.h
> index d7daba1..9bb30c5 100644
> --- a/include/linux/iort.h
> +++ b/include/linux/iort.h
> @@ -38,4 +38,7 @@ static inline struct irq_domain *
> iort_get_device_domain(struct device *dev, u32 req_id) { return NULL; }
> #endif
>
> +#define IORT_ACPI_DECLARE(name, table_id, fn) \
> + ACPI_DECLARE_PROBE_ENTRY(iort, name, table_id, 0, NULL, 0, fn)
> +
> #endif /* __IORT_H__ */
Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>
Thanks
Hanjun
next prev parent reply other threads:[~2016-09-05 11:42 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-15 15:23 [PATCH v4 00/15] ACPI IORT ARM SMMU v3 support Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 01/15] drivers: iommu: add FWNODE_IOMMU fwnode type Lorenzo Pieralisi
2016-08-23 13:49 ` Lorenzo Pieralisi
2016-09-05 11:11 ` Hanjun Guo
2016-08-15 15:23 ` [PATCH v4 02/15] drivers: iommu: implement arch_{set/get}_iommu_fwspec API Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 03/15] drivers: acpi: iort: introduce linker section for IORT entries probing Lorenzo Pieralisi
2016-09-05 11:42 ` Hanjun Guo [this message]
2016-08-15 15:23 ` [PATCH v4 04/15] drivers: acpi: iort: add support for IOMMU fwnode registration Lorenzo Pieralisi
2016-09-05 13:00 ` Hanjun Guo
2016-08-15 15:23 ` [PATCH v4 05/15] drivers: platform: add fwnode base platform devices retrieval Lorenzo Pieralisi
2016-09-05 13:19 ` Hanjun Guo
2016-09-05 14:57 ` Lorenzo Pieralisi
2016-09-06 12:08 ` Hanjun Guo
2016-08-15 15:23 ` [PATCH v4 06/15] drivers: iommu: make iommu_fwspec OF agnostic Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 07/15] drivers: acpi: implement acpi_dma_configure Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 08/15] drivers: acpi: iort: add node match function Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 09/15] drivers: acpi: iort: add support for ARM SMMU platform devices creation Lorenzo Pieralisi
2016-08-18 10:50 ` Dennis Chen
2016-08-18 10:55 ` Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 10/15] drivers: iommu: arm-smmu-v3: split probe functions into DT/generic portions Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 11/15] drivers: iommu: arm-smmu-v3: enable ACPI driver initialization Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 12/15] drivers: iommu: arm-smmu-v3: add IORT configuration Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 13/15] drivers: acpi: iort: replace rid map type with type mask Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 14/15] drivers: acpi: iort: add single mapping function Lorenzo Pieralisi
2016-08-15 15:23 ` [PATCH v4 15/15] drivers: acpi: iort: introduce iort_iommu_configure Lorenzo Pieralisi
2016-09-05 9:41 ` [PATCH v4 00/15] ACPI IORT ARM SMMU v3 support Hanjun Guo
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=300bbfa6-8a9a-25f6-1182-e220ed46397e@linaro.org \
--to=hanjun.guo@linaro.org \
--cc=dennis.chen@arm.com \
--cc=iommu@lists.linux-foundation.org \
--cc=jcm@redhat.com \
--cc=joro@8bytes.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=lorenzo.pieralisi@arm.com \
--cc=marc.zyngier@arm.com \
--cc=nwatters@codeaurora.org \
--cc=okaya@codeaurora.org \
--cc=rjw@rjwysocki.net \
--cc=robin.murphy@arm.com \
--cc=tn@semihalf.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®