From: Hanjun Guo <hanjun.guo@linaro.org>
To: Marc Zyngier <marc.zyngier@arm.com>,
Jason Cooper <jason@lakedaemon.net>,
Will Deacon <Will.Deacon@arm.com>,
Catalin Marinas <Catalin.Marinas@arm.com>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
Arnd Bergmann <arnd@arndb.de>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"linaro-acpi@lists.linaro.org" <linaro-acpi@lists.linaro.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Tomasz Nowicki <tomasz.nowicki@linaro.org>,
Olof Johansson <olof@lixom.net>,
"grant.likely@linaro.org" <grant.likely@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>,
Jiang Liu <jiang.liu@linux.intel.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 02/11] ACPI / irqchip: Add self-probe infrastructure to initialize IRQ controller
Date: Thu, 11 Jun 2015 20:55:09 +0800 [thread overview]
Message-ID: <5579852D.1010509@linaro.org> (raw)
In-Reply-To: <557858AC.6010701@arm.com>
Hi Marc,
On 06/10/2015 11:33 PM, Marc Zyngier wrote:
> Hi Hanjun,
>
> On 18/05/15 13:59, Hanjun Guo wrote:
>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>>
>> This self-probe infrastructure works in the similar way as OF,
>> but there is some different in the mechanism:
>>
>> For OF, the init fn will be called once it finds comptiable strings
>> in DT, but for ACPI, we init irqchips by static tables, and in
>> static ACPI tables, there are no comptiable strings to indicate
>> irqchips, so every init function with IRQCHIP_ACPI_DECLARE in the
>> same table will be called, but thanks to the GIC version presented
>> in ACPI table, we can init different GIC irqchips with this framework.
>
> This triggers an immediate question: If we can find out the GIC version
> in the ACPI tables, which can't we just call the irqchips that implement
> the support for this version?
This is really a good question and triggers me to rethink about
the implementation.
>
> i.e: the GICv2 irqchip code would have a line like:
>
> IRQCHIP_ACPI_DECLARE(gic_v2, ACPI_MADT_GIC_VER_V2, gic_v2_acpi_init);
>
> and the probing code would simply call the drivers that have declared
> their interest for this version code.
if we want to achieve this, we can redefine the strut for acpi_table_id:
#define ACPI_TABLE_ID_LEN 5
struct acpi_table_id {
__u8 id[ACPI_TABLE_ID_LEN];
const void *handler;
kernel_ulong_t driver_data;
};
then pass the ACPI_MADT_GIC_VER_V2 as the driver_data, it will
work as you suggested.
>
> Having code that tests for the version in each driver is not an option
> (this is exactly what we're trying to avoid).
I also think it's awkward to do that in each driver, thanks for the
suggestion!
Thanks
Hanjun
WARNING: multiple messages have this Message-ID (diff)
From: hanjun.guo@linaro.org (Hanjun Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 02/11] ACPI / irqchip: Add self-probe infrastructure to initialize IRQ controller
Date: Thu, 11 Jun 2015 20:55:09 +0800 [thread overview]
Message-ID: <5579852D.1010509@linaro.org> (raw)
In-Reply-To: <557858AC.6010701@arm.com>
Hi Marc,
On 06/10/2015 11:33 PM, Marc Zyngier wrote:
> Hi Hanjun,
>
> On 18/05/15 13:59, Hanjun Guo wrote:
>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>>
>> This self-probe infrastructure works in the similar way as OF,
>> but there is some different in the mechanism:
>>
>> For OF, the init fn will be called once it finds comptiable strings
>> in DT, but for ACPI, we init irqchips by static tables, and in
>> static ACPI tables, there are no comptiable strings to indicate
>> irqchips, so every init function with IRQCHIP_ACPI_DECLARE in the
>> same table will be called, but thanks to the GIC version presented
>> in ACPI table, we can init different GIC irqchips with this framework.
>
> This triggers an immediate question: If we can find out the GIC version
> in the ACPI tables, which can't we just call the irqchips that implement
> the support for this version?
This is really a good question and triggers me to rethink about
the implementation.
>
> i.e: the GICv2 irqchip code would have a line like:
>
> IRQCHIP_ACPI_DECLARE(gic_v2, ACPI_MADT_GIC_VER_V2, gic_v2_acpi_init);
>
> and the probing code would simply call the drivers that have declared
> their interest for this version code.
if we want to achieve this, we can redefine the strut for acpi_table_id:
#define ACPI_TABLE_ID_LEN 5
struct acpi_table_id {
__u8 id[ACPI_TABLE_ID_LEN];
const void *handler;
kernel_ulong_t driver_data;
};
then pass the ACPI_MADT_GIC_VER_V2 as the driver_data, it will
work as you suggested.
>
> Having code that tests for the version in each driver is not an option
> (this is exactly what we're trying to avoid).
I also think it's awkward to do that in each driver, thanks for the
suggestion!
Thanks
Hanjun
WARNING: multiple messages have this Message-ID (diff)
From: Hanjun Guo <hanjun.guo@linaro.org>
To: Marc Zyngier <marc.zyngier@arm.com>,
Jason Cooper <jason@lakedaemon.net>,
Will Deacon <Will.Deacon@arm.com>,
Catalin Marinas <Catalin.Marinas@arm.com>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
Arnd Bergmann <arnd@arndb.de>,
Tomasz Nowicki <tomasz.nowicki@linaro.org>,
"grant.likely@linaro.org" <grant.likely@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>,
Olof Johansson <olof@lixom.net>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linaro-acpi@lists.linaro.org" <linaro-acpi@lists.linaro.org>
Subject: Re: [PATCH 02/11] ACPI / irqchip: Add self-probe infrastructure to initialize IRQ controller
Date: Thu, 11 Jun 2015 20:55:09 +0800 [thread overview]
Message-ID: <5579852D.1010509@linaro.org> (raw)
In-Reply-To: <557858AC.6010701@arm.com>
Hi Marc,
On 06/10/2015 11:33 PM, Marc Zyngier wrote:
> Hi Hanjun,
>
> On 18/05/15 13:59, Hanjun Guo wrote:
>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>>
>> This self-probe infrastructure works in the similar way as OF,
>> but there is some different in the mechanism:
>>
>> For OF, the init fn will be called once it finds comptiable strings
>> in DT, but for ACPI, we init irqchips by static tables, and in
>> static ACPI tables, there are no comptiable strings to indicate
>> irqchips, so every init function with IRQCHIP_ACPI_DECLARE in the
>> same table will be called, but thanks to the GIC version presented
>> in ACPI table, we can init different GIC irqchips with this framework.
>
> This triggers an immediate question: If we can find out the GIC version
> in the ACPI tables, which can't we just call the irqchips that implement
> the support for this version?
This is really a good question and triggers me to rethink about
the implementation.
>
> i.e: the GICv2 irqchip code would have a line like:
>
> IRQCHIP_ACPI_DECLARE(gic_v2, ACPI_MADT_GIC_VER_V2, gic_v2_acpi_init);
>
> and the probing code would simply call the drivers that have declared
> their interest for this version code.
if we want to achieve this, we can redefine the strut for acpi_table_id:
#define ACPI_TABLE_ID_LEN 5
struct acpi_table_id {
__u8 id[ACPI_TABLE_ID_LEN];
const void *handler;
kernel_ulong_t driver_data;
};
then pass the ACPI_MADT_GIC_VER_V2 as the driver_data, it will
work as you suggested.
>
> Having code that tests for the version in each driver is not an option
> (this is exactly what we're trying to avoid).
I also think it's awkward to do that in each driver, thanks for the
suggestion!
Thanks
Hanjun
next prev parent reply other threads:[~2015-06-11 12:55 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-18 12:59 [PATCH 00/11] Add self-probe infrastructure and stacked irqdomain support for ACPI based GICv2/3 init Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 01/11] ACPICA: Introduce GIC version for arm based system Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 02/11] ACPI / irqchip: Add self-probe infrastructure to initialize IRQ controller Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-06-10 15:33 ` Marc Zyngier
2015-06-10 15:33 ` Marc Zyngier
2015-06-11 12:55 ` Hanjun Guo [this message]
2015-06-11 12:55 ` Hanjun Guo
2015-06-11 12:55 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 03/11] irqchip / GIC: Add GIC version support in ACPI MADT Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-05-20 20:02 ` Thomas Gleixner
2015-05-20 20:02 ` Thomas Gleixner
2015-05-21 14:19 ` Hanjun Guo
2015-05-21 14:19 ` Hanjun Guo
2015-05-21 14:19 ` Hanjun Guo
2015-05-21 14:39 ` Thomas Gleixner
2015-05-21 14:39 ` Thomas Gleixner
2015-05-21 15:04 ` Hanjun Guo
2015-05-21 15:04 ` Hanjun Guo
2015-05-21 15:04 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 04/11] irqchip / GIC / ACPI: Use IRQCHIP_ACPI_DECLARE to simplify GICv2 init code Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 05/11] irqchip / gic: Add stacked irqdomain support for ACPI based GICv2 init Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-06-10 16:27 ` Marc Zyngier
2015-06-10 16:27 ` Marc Zyngier
2015-06-11 13:22 ` Hanjun Guo
2015-06-11 13:22 ` Hanjun Guo
2015-06-18 23:25 ` Hanjun Guo
2015-06-18 23:25 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 06/11] ACPI / gsi: Add gsi_mutex to synchronize acpi_register_gsi()/acpi_unregister_gsi() Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-06-10 15:58 ` Marc Zyngier
2015-06-10 15:58 ` Marc Zyngier
2015-06-10 15:58 ` Marc Zyngier
2015-06-11 13:16 ` Hanjun Guo
2015-06-11 13:16 ` Hanjun Guo
2015-06-19 7:31 ` Hanjun Guo
2015-06-19 7:31 ` Hanjun Guo
2015-06-19 9:49 ` Marc Zyngier
2015-06-19 9:49 ` Marc Zyngier
2015-05-18 12:59 ` [PATCH 07/11] irqchip / GICv3: Refactor gic_of_init() for GICv3 driver Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 08/11] irqchip / GICv3: Add ACPI support for GICv3+ initialization Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 09/11] irqchip / GICv3: Add stacked irqdomain support for ACPI based init Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 10/11] irqchip / GICv2 / ACPI: Consolidate GICv2 ACPI related init code Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-05-20 20:44 ` Tomasz Nowicki
2015-05-20 20:44 ` Tomasz Nowicki
2015-05-21 14:27 ` Hanjun Guo
2015-05-21 14:27 ` Hanjun Guo
2015-05-21 14:27 ` Hanjun Guo
2015-06-10 16:29 ` Marc Zyngier
2015-06-10 16:29 ` Marc Zyngier
2015-06-10 16:29 ` Marc Zyngier
2015-06-11 13:25 ` Hanjun Guo
2015-06-11 13:25 ` Hanjun Guo
2015-06-11 13:25 ` Hanjun Guo
2015-05-18 12:59 ` [PATCH 11/11] irqchip / GICv3 / ACPI: Consolidate GICv3 " Hanjun Guo
2015-05-18 12:59 ` Hanjun Guo
2015-06-02 12:24 ` [PATCH 00/11] Add self-probe infrastructure and stacked irqdomain support for ACPI based GICv2/3 init Hanjun Guo
2015-06-02 12:24 ` Hanjun Guo
2015-06-02 12:24 ` 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=5579852D.1010509@linaro.org \
--to=hanjun.guo@linaro.org \
--cc=Catalin.Marinas@arm.com \
--cc=Lorenzo.Pieralisi@arm.com \
--cc=Will.Deacon@arm.com \
--cc=arnd@arndb.de \
--cc=grant.likely@linaro.org \
--cc=jason@lakedaemon.net \
--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=marc.zyngier@arm.com \
--cc=olof@lixom.net \
--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 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.