From: tip-bot for Marc Zyngier <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tomasz.nowicki@linaro.org, Suravee.Suthikulpanit@amd.com,
lorenzo.pieralisi@arm.com, hpa@zytor.com,
jiang.liu@linux.intel.com, rjw@rjwysocki.net,
jakeo@microsoft.com, jason@lakedaemon.net,
linux-kernel@vger.kernel.org, mingo@kernel.org,
linux-arm-kernel@lists.infradead.org, marc.zyngier@arm.com,
hanjun.guo@linaro.org, tglx@linutronix.de, graeme@xora.org.uk
Subject: [tip:irq/core] irqchip/gic: Switch ACPI support to stacked domains
Date: Tue, 13 Oct 2015 10:58:26 -0700 [thread overview]
Message-ID: <tip-891ae7694f862c3605d037066e15ca128faa95d5@git.kernel.org> (raw)
In-Reply-To: <1444737105-31573-13-git-send-email-marc.zyngier@arm.com>
Commit-ID: 891ae7694f862c3605d037066e15ca128faa95d5
Gitweb: http://git.kernel.org/tip/891ae7694f862c3605d037066e15ca128faa95d5
Author: Marc Zyngier <marc.zyngier@arm.com>
AuthorDate: Tue, 13 Oct 2015 12:51:40 +0100
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Tue, 13 Oct 2015 19:01:24 +0200
irqchip/gic: Switch ACPI support to stacked domains
Now that the basic ACPI GSI code is irq domain aware, make sure
that the ACPI support in the GIC doesn't pointlessly deviate from
the DT path.
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-and-tested-by: Hanjun Guo <hanjun.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Cc: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Cc: Graeme Gregory <graeme@xora.org.uk>
Cc: Jake Oshins <jakeo@microsoft.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Link: http://lkml.kernel.org/r/1444737105-31573-13-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/irqchip/irq-gic.c | 44 ++++++++++++++++++++++++++++++--------------
1 file changed, 30 insertions(+), 14 deletions(-)
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 12b2973..491eacb 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -963,6 +963,15 @@ static int gic_irq_domain_translate(struct irq_domain *d,
return 0;
}
+ if (fwspec->fwnode->type == FWNODE_IRQCHIP) {
+ if(fwspec->param_count != 2)
+ return -EINVAL;
+
+ *hwirq = fwspec->param[0];
+ *type = fwspec->param[1];
+ return 0;
+ }
+
return -EINVAL;
}
@@ -1017,7 +1026,7 @@ static const struct irq_domain_ops gic_irq_domain_ops = {
static void __init __gic_init_bases(unsigned int gic_nr, int irq_start,
void __iomem *dist_base, void __iomem *cpu_base,
- u32 percpu_offset, struct device_node *node)
+ u32 percpu_offset, struct fwnode_handle *handle)
{
irq_hw_number_t hwirq_base;
struct gic_chip_data *gic;
@@ -1071,11 +1080,11 @@ static void __init __gic_init_bases(unsigned int gic_nr, int irq_start,
gic_irqs = 1020;
gic->gic_irqs = gic_irqs;
- if (node) { /* DT case */
- gic->domain = irq_domain_add_linear(node, gic_irqs,
- &gic_irq_domain_hierarchy_ops,
- gic);
- } else { /* Non-DT case */
+ if (handle) { /* DT/ACPI */
+ gic->domain = irq_domain_create_linear(handle, gic_irqs,
+ &gic_irq_domain_hierarchy_ops,
+ gic);
+ } else { /* Legacy support */
/*
* For primary GICs, skip over SGIs.
* For secondary GICs, skip over PPIs, too.
@@ -1098,7 +1107,7 @@ static void __init __gic_init_bases(unsigned int gic_nr, int irq_start,
irq_base = irq_start;
}
- gic->domain = irq_domain_add_legacy(node, gic_irqs, irq_base,
+ gic->domain = irq_domain_add_legacy(NULL, gic_irqs, irq_base,
hwirq_base, &gic_irq_domain_ops, gic);
}
@@ -1206,7 +1215,8 @@ gic_of_init(struct device_node *node, struct device_node *parent)
if (of_property_read_u32(node, "cpu-offset", &percpu_offset))
percpu_offset = 0;
- __gic_init_bases(gic_cnt, -1, dist_base, cpu_base, percpu_offset, node);
+ __gic_init_bases(gic_cnt, -1, dist_base, cpu_base, percpu_offset,
+ &node->fwnode);
if (!gic_cnt)
gic_init_physaddr(node);
@@ -1281,6 +1291,7 @@ int __init
gic_v2_acpi_init(struct acpi_table_header *table)
{
void __iomem *cpu_base, *dist_base;
+ struct fwnode_handle *domain_handle;
int count;
/* Collect CPU base addresses */
@@ -1331,14 +1342,19 @@ gic_v2_acpi_init(struct acpi_table_header *table)
static_key_slow_dec(&supports_deactivate);
/*
- * Initialize zero GIC instance (no multi-GIC support). Also, set GIC
- * as default IRQ domain to allow for GSI registration and GSI to IRQ
- * number translation (see acpi_register_gsi() and acpi_gsi_to_irq()).
+ * Initialize GIC instance zero (no multi-GIC support).
*/
- __gic_init_bases(0, -1, dist_base, cpu_base, 0, NULL);
- irq_set_default_host(gic_data[0].domain);
+ domain_handle = irq_domain_alloc_fwnode(dist_base);
+ if (!domain_handle) {
+ pr_err("Unable to allocate domain handle\n");
+ iounmap(cpu_base);
+ iounmap(dist_base);
+ return -ENOMEM;
+ }
+
+ __gic_init_bases(0, -1, dist_base, cpu_base, 0, domain_handle);
- acpi_irq_model = ACPI_IRQ_MODEL_GIC;
+ acpi_set_irq_model(ACPI_IRQ_MODEL_GIC, domain_handle);
return 0;
}
#endif
next prev parent reply other threads:[~2015-10-13 17:59 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-13 11:51 [PATCH v2 00/17] Divorcing irqdomain and device_node Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 01/17] irqdomain: Use irq_domain_get_of_node() instead of direct field access Marc Zyngier
2015-10-13 17:54 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 02/17] irqdomain: Convert irqdomain->of_node to fwnode Marc Zyngier
2015-10-13 17:55 ` [tip:irq/core] irqdomain: Convert irqdomain-%3Eof_node " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 03/17] irqdomain: Allow irq domain lookup by fwnode Marc Zyngier
2015-10-13 17:55 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 04/17] irqdomain: Introduce a firmware-specific IRQ specifier structure Marc Zyngier
2015-10-13 17:55 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 05/17] irqchip: Convert all alloc/xlate users from of_node to fwnode Marc Zyngier
2015-10-13 17:56 ` [tip:irq/core] irqchip: Convert all alloc/ xlate " tip-bot for Marc Zyngier
2015-10-14 15:26 ` [PATCH v2 05/17] irqchip: Convert all alloc/xlate " Tomasz Nowicki
2015-10-14 15:31 ` Marc Zyngier
2015-10-14 15:37 ` Tomasz Nowicki
2015-10-13 11:51 ` [PATCH v2 06/17] irqdomain: Introduce irq_create_fwspec_mapping Marc Zyngier
2015-10-13 17:56 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 07/17] irqdomain: Introduce irq_domain_create_{linear,tree} Marc Zyngier
2015-10-13 17:56 ` [tip:irq/core] irqdomain: Introduce irq_domain_create_{linear, tree} tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 08/17] irqdomain: Add a fwnode_handle allocator Marc Zyngier
2015-10-13 17:57 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 09/17] acpi/gsi: Always perform an irq domain lookup Marc Zyngier
2015-10-13 17:57 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 10/17] acpi/gsi: Add acpi_set_irq_model to initialize the GSI layer Marc Zyngier
2015-10-13 17:57 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 11/17] irqchip/gic: Get rid of gic_init_bases() Marc Zyngier
2015-10-13 17:58 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 12/17] irqchip/gic: Switch ACPI support to stacked domains Marc Zyngier
2015-10-13 17:58 ` tip-bot for Marc Zyngier [this message]
2015-10-13 11:51 ` [PATCH v2 13/17] irqchip/gic: Kill the xlate method Marc Zyngier
2015-10-13 17:58 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 14/17] acpi/gsi: Cleanup acpi_register_gsi Marc Zyngier
2015-10-13 17:59 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 15/17] irqdomain: Introduce irq_domain_create_hierarchy Marc Zyngier
2015-10-13 17:59 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 16/17] irqdomain/msi: Use fwnode instead of of_node Marc Zyngier
2015-10-13 17:59 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 11:51 ` [PATCH v2 17/17] irqdomain: Documentation updates Marc Zyngier
2015-10-13 18:00 ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-10-13 13:49 ` [PATCH v2 00/17] Divorcing irqdomain and device_node Hanjun Guo
2015-10-13 15:33 ` Hanjun Guo
2015-10-13 15:38 ` Marc Zyngier
2015-10-13 16:39 ` 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=tip-891ae7694f862c3605d037066e15ca128faa95d5@git.kernel.org \
--to=tipbot@zytor.com \
--cc=Suravee.Suthikulpanit@amd.com \
--cc=graeme@xora.org.uk \
--cc=hanjun.guo@linaro.org \
--cc=hpa@zytor.com \
--cc=jakeo@microsoft.com \
--cc=jason@lakedaemon.net \
--cc=jiang.liu@linux.intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=marc.zyngier@arm.com \
--cc=mingo@kernel.org \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
--cc=tomasz.nowicki@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox