All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <marc.zyngier@arm.com>
To: Hanjun Guo <hanjun.guo@linaro.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jiang Liu <jiang.liu@linux.intel.com>,
	Jason Cooper <jason@lakedaemon.net>
Cc: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
	Tomasz Nowicki <tomasz.nowicki@linaro.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	"suravee.suthikulpanit@amd.com" <suravee.suthikulpanit@amd.com>,
	Graeme Gregory <graeme@xora.org.uk>
Subject: Re: [PATCH v2 3/7] genirq: irqdomain: Add irq_create_acpi_mapping
Date: Fri, 24 Jul 2015 13:22:05 +0100	[thread overview]
Message-ID: <55B22DED.1000505@arm.com> (raw)
In-Reply-To: <55B201E4.7060704@linaro.org>

On 24/07/15 10:14, Hanjun Guo wrote:
> On 07/23/2015 09:05 PM, Marc Zyngier wrote:
>> In order to help ACPI on arm64 to make use of most of the irqdomain
>> goodies, add a new entry point (irq_create_acpi_mapping) which
>> mimics irq_create_of_mapping, except that it takes a new
>> struct acpi_gsi_descriptor, which is the pendent of of_phandle_args
>> in the OF world.
>>
>> We assume that the way the acpi_gsi_descriptor is populated matches
>> that of of_phandle_args, as the latter is still the building block
>> for interrupt descriptor in the whole kernel.
>>
>> Eventually, these two representations should be merged in a single
>> structure, but that's probably for another day.
> 
> ...
> 
>>
>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>> ---
>>   include/linux/acpi.h   |  9 +++++++++
>>   kernel/irq/irqdomain.c | 18 ++++++++++++++++++
>>   2 files changed, 27 insertions(+)
>>
>> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
>> index d2445fa..2f23ab0 100644
>> --- a/include/linux/acpi.h
>> +++ b/include/linux/acpi.h
>> @@ -205,6 +205,15 @@ int acpi_register_gsi (struct device *dev, u32 gsi, int triggering, int polarity
>>   int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
>>   int acpi_isa_irq_to_gsi (unsigned isa_irq, u32 *gsi);
>>
>> +#define MAX_GSI_DESC_PARAMS 16
>> +struct acpi_gsi_descriptor {
>> +	int param_count;
>> +	u32 param[MAX_GSI_DESC_PARAMS];
>> +};
>> +
>> +unsigned int irq_create_acpi_mapping(struct irq_domain *d,
>> +				     struct acpi_gsi_descriptor *irq_data);
>> +
>>   #ifdef CONFIG_X86_IO_APIC
>>   extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity);
>>   #else
>> diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
>> index 27f4ec7..542cda3 100644
>> --- a/kernel/irq/irqdomain.c
>> +++ b/kernel/irq/irqdomain.c
>> @@ -1,5 +1,6 @@
>>   #define pr_fmt(fmt)  "irq: " fmt
>>
>> +#include <linux/acpi.h>
>>   #include <linux/debugfs.h>
>>   #include <linux/hardirq.h>
>>   #include <linux/interrupt.h>
>> @@ -557,6 +558,23 @@ unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data)
>>   }
>>   EXPORT_SYMBOL_GPL(irq_create_of_mapping);
>>
>> +#ifdef CONFIG_ACPI
>> +unsigned int irq_create_acpi_mapping(struct irq_domain *d,
>> +				     struct acpi_gsi_descriptor *irq_data)
>> +{
>> +	struct of_phandle_args args;
>> +	int i;
>> +
>> +	for (i = 0; i < min(irq_data->param_count, MAX_PHANDLE_ARGS); i++)
>> +		args.args[i] = irq_data->param[i];
>> +
>> +	args.np = d ? d->domain_token : NULL;
>> +	args.args_count = i;
>> +
>> +	return irq_create_of_mapping(&args);
>> +}
> 
> A little bit of hack to me :) , but I agree it's the first step to
> merge them in a single structure,

If you have a more elegant solution that doesn't end up duplicating most
of the kernel infrastructure, I'm really all ears.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

WARNING: multiple messages have this Message-ID (diff)
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 3/7] genirq: irqdomain: Add irq_create_acpi_mapping
Date: Fri, 24 Jul 2015 13:22:05 +0100	[thread overview]
Message-ID: <55B22DED.1000505@arm.com> (raw)
In-Reply-To: <55B201E4.7060704@linaro.org>

On 24/07/15 10:14, Hanjun Guo wrote:
> On 07/23/2015 09:05 PM, Marc Zyngier wrote:
>> In order to help ACPI on arm64 to make use of most of the irqdomain
>> goodies, add a new entry point (irq_create_acpi_mapping) which
>> mimics irq_create_of_mapping, except that it takes a new
>> struct acpi_gsi_descriptor, which is the pendent of of_phandle_args
>> in the OF world.
>>
>> We assume that the way the acpi_gsi_descriptor is populated matches
>> that of of_phandle_args, as the latter is still the building block
>> for interrupt descriptor in the whole kernel.
>>
>> Eventually, these two representations should be merged in a single
>> structure, but that's probably for another day.
> 
> ...
> 
>>
>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>> ---
>>   include/linux/acpi.h   |  9 +++++++++
>>   kernel/irq/irqdomain.c | 18 ++++++++++++++++++
>>   2 files changed, 27 insertions(+)
>>
>> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
>> index d2445fa..2f23ab0 100644
>> --- a/include/linux/acpi.h
>> +++ b/include/linux/acpi.h
>> @@ -205,6 +205,15 @@ int acpi_register_gsi (struct device *dev, u32 gsi, int triggering, int polarity
>>   int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
>>   int acpi_isa_irq_to_gsi (unsigned isa_irq, u32 *gsi);
>>
>> +#define MAX_GSI_DESC_PARAMS 16
>> +struct acpi_gsi_descriptor {
>> +	int param_count;
>> +	u32 param[MAX_GSI_DESC_PARAMS];
>> +};
>> +
>> +unsigned int irq_create_acpi_mapping(struct irq_domain *d,
>> +				     struct acpi_gsi_descriptor *irq_data);
>> +
>>   #ifdef CONFIG_X86_IO_APIC
>>   extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity);
>>   #else
>> diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
>> index 27f4ec7..542cda3 100644
>> --- a/kernel/irq/irqdomain.c
>> +++ b/kernel/irq/irqdomain.c
>> @@ -1,5 +1,6 @@
>>   #define pr_fmt(fmt)  "irq: " fmt
>>
>> +#include <linux/acpi.h>
>>   #include <linux/debugfs.h>
>>   #include <linux/hardirq.h>
>>   #include <linux/interrupt.h>
>> @@ -557,6 +558,23 @@ unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data)
>>   }
>>   EXPORT_SYMBOL_GPL(irq_create_of_mapping);
>>
>> +#ifdef CONFIG_ACPI
>> +unsigned int irq_create_acpi_mapping(struct irq_domain *d,
>> +				     struct acpi_gsi_descriptor *irq_data)
>> +{
>> +	struct of_phandle_args args;
>> +	int i;
>> +
>> +	for (i = 0; i < min(irq_data->param_count, MAX_PHANDLE_ARGS); i++)
>> +		args.args[i] = irq_data->param[i];
>> +
>> +	args.np = d ? d->domain_token : NULL;
>> +	args.args_count = i;
>> +
>> +	return irq_create_of_mapping(&args);
>> +}
> 
> A little bit of hack to me :) , but I agree it's the first step to
> merge them in a single structure,

If you have a more elegant solution that doesn't end up duplicating most
of the kernel infrastructure, I'm really all ears.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...

  reply	other threads:[~2015-07-24 12:22 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-23 13:05 [PATCH v2 0/7] Making the generic ACPI GSI layer irqdomain aware Marc Zyngier
2015-07-23 13:05 ` Marc Zyngier
2015-07-23 13:05 ` Marc Zyngier
2015-07-23 13:05 ` [PATCH v2 1/7] genirq: irqdomain: Use an accessor for the of_node field Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-24  8:54   ` Hanjun Guo
2015-07-24  8:54     ` Hanjun Guo
2015-07-24 17:06     ` Marc Zyngier
2015-07-24 17:06       ` Marc Zyngier
2015-07-23 13:05 ` [PATCH v2 2/7] genirq: irqdomain: Remove irqdomain dependency on struct device_node Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-24  9:08   ` Hanjun Guo
2015-07-24  9:08     ` Hanjun Guo
2015-07-23 13:05 ` [PATCH v2 3/7] genirq: irqdomain: Add irq_create_acpi_mapping Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-24  9:14   ` Hanjun Guo
2015-07-24  9:14     ` Hanjun Guo
2015-07-24 12:22     ` Marc Zyngier [this message]
2015-07-24 12:22       ` Marc Zyngier
2015-07-23 13:05 ` [PATCH v2 4/7] acpi: gsi: Always perform an irq domain lookup Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-24  8:34   ` Hanjun Guo
2015-07-24  8:34     ` Hanjun Guo
2015-07-23 13:05 ` [PATCH v2 5/7] acpi: gsi: Add acpi_set_irq_model to initialize the GSI layer Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-24 10:00   ` Hanjun Guo
2015-07-24 10:00     ` Hanjun Guo
2015-07-24 12:27     ` Marc Zyngier
2015-07-24 12:27       ` Marc Zyngier
2015-07-25  6:57       ` Hanjun Guo
2015-07-25  6:57         ` Hanjun Guo
2015-07-24 17:32   ` Lorenzo Pieralisi
2015-07-24 17:32     ` Lorenzo Pieralisi
2015-07-23 13:05 ` [PATCH v2 6/7] irqchip: GIC: Switch ACPI support to stacked domains Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-24 10:03   ` Hanjun Guo
2015-07-24 10:03     ` Hanjun Guo
2015-07-24 17:16   ` Lorenzo Pieralisi
2015-07-24 17:16     ` Lorenzo Pieralisi
2015-07-23 13:05 ` [PATCH v2 7/7] acpi: gsi: Cleanup acpi_register_gsi Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-23 13:05   ` Marc Zyngier
2015-07-24 10:06   ` Hanjun Guo
2015-07-24 10:06     ` Hanjun Guo
2015-07-24 16:17   ` Lorenzo Pieralisi
2015-07-24 16:17     ` Lorenzo Pieralisi
2015-07-24  8:27 ` [PATCH v2 0/7] Making the generic ACPI GSI layer irqdomain aware Hanjun Guo
2015-07-24  8:27   ` 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=55B22DED.1000505@arm.com \
    --to=marc.zyngier@arm.com \
    --cc=Lorenzo.Pieralisi@arm.com \
    --cc=graeme@xora.org.uk \
    --cc=hanjun.guo@linaro.org \
    --cc=jason@lakedaemon.net \
    --cc=jiang.liu@linux.intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=suravee.suthikulpanit@amd.com \
    --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 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.