From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751439AbdAQKIy (ORCPT ); Tue, 17 Jan 2017 05:08:54 -0500 Received: from smtp.nue.novell.com ([195.135.221.5]:53869 "EHLO smtp.nue.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750900AbdAQKIL (ORCPT ); Tue, 17 Jan 2017 05:08:11 -0500 Subject: Re: [PATCH v7 07/15] irqchip: gicv3-its: platform-msi: scan MADT to create platform msi domain To: Hanjun Guo , Marc Zyngier , "Rafael J. Wysocki" , Lorenzo Pieralisi References: <1484147199-4267-1-git-send-email-hanjun.guo@linaro.org> <1484147199-4267-8-git-send-email-hanjun.guo@linaro.org> Cc: linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxarm@huawei.com, Thomas Gleixner , Greg KH , Tomasz Nowicki , Ma Jun , Kefeng Wang , Agustin Vega-Frias , Sinan Kaya , huxinwei@huawei.com, yimin@huawei.com, Jon Masters , Xinwei Kong From: Matthias Brugger Message-ID: <575e0341-2a2c-4498-8b01-550ad7732390@suse.com> Date: Tue, 17 Jan 2017 10:25:14 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <1484147199-4267-8-git-send-email-hanjun.guo@linaro.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/01/17 16:06, Hanjun Guo wrote: > With the introduction of its_pmsi_init_one(), we can add some code > on top for ACPI support of platform MSI. > > We are scanning the MADT table to get the ITS entry(ies), then use > the information to create the platform msi domain for devices connect > to it, just like the PCI MSI for ITS did. > > Signed-off-by: Hanjun Guo > Cc: Marc Zyngier > Cc: Sinan Kaya > Cc: Tomasz Nowicki > Cc: Thomas Gleixner > --- > drivers/irqchip/irq-gic-v3-its-platform-msi.c | 36 +++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > Reviewed-by: Matthias Brugger > diff --git a/drivers/irqchip/irq-gic-v3-its-platform-msi.c b/drivers/irqchip/irq-gic-v3-its-platform-msi.c > index 3d9efd1..ebe933e 100644 > --- a/drivers/irqchip/irq-gic-v3-its-platform-msi.c > +++ b/drivers/irqchip/irq-gic-v3-its-platform-msi.c > @@ -103,6 +103,41 @@ static int __init its_pmsi_init_one(struct fwnode_handle *fwnode, > return 0; > } > > +#ifdef CONFIG_ACPI > +static int __init > +its_pmsi_parse_madt(struct acpi_subtable_header *header, > + const unsigned long end) > +{ > + struct acpi_madt_generic_translator *its_entry; > + struct fwnode_handle *domain_handle; > + const char *node_name; > + int err = -ENXIO; > + > + its_entry = (struct acpi_madt_generic_translator *)header; > + node_name = kasprintf(GFP_KERNEL, "ITS@0x%lx", > + (long)its_entry->base_address); > + domain_handle = iort_find_domain_token(its_entry->translation_id); > + if (!domain_handle) { > + pr_err("%s: Unable to locate ITS domain handle\n", node_name); > + goto out; > + } > + > + err = its_pmsi_init_one(domain_handle, node_name); > + > +out: > + kfree(node_name); > + return err; > +} > + > +static void __init its_pmsi_acpi_init(void) > +{ > + acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR, > + its_pmsi_parse_madt, 0); > +} > +#else > +static inline void its_pmsi_acpi_init(void) { } > +#endif > + > static void __init its_pmsi_of_init(void) > { > struct device_node *np; > @@ -119,6 +154,7 @@ static void __init its_pmsi_of_init(void) > static int __init its_pmsi_init(void) > { > its_pmsi_of_init(); > + its_pmsi_acpi_init(); > return 0; > } > early_initcall(its_pmsi_init); >