All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ganapatrao Kulkarni <gklkml16@gmail.com>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Hanjun Guo <guohanjun@huawei.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	linux-kernel@vger.kernel.org, linuxarm@huawei.com,
	linux-acpi@vger.kernel.org, Hanjun Guo <hanjun.guo@linaro.org>,
	Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>,
	linux-arm-kernel@lists.infradead.org,
	Jayachandran.Nair@cavium.com
Subject: Re: [PATCH] irqchip/gic-v3-its: Allow GIC ITS number more than MAX_NUMNODES
Date: Fri, 21 Jul 2017 17:12:50 +0530	[thread overview]
Message-ID: <CAKTKpr7tmavUKyqxYabdfYOpV0V9TLySmwCwTyng5zZoxy9nqg@mail.gmail.com> (raw)
In-Reply-To: <84d411ff-596b-c451-29fb-f506abc4fb04@arm.com>

Hi Hanjun,


On Fri, Jul 21, 2017 at 4:50 PM, Marc Zyngier <marc.zyngier@arm.com> wrote:
> On 21/07/17 11:06, Hanjun Guo wrote:
>> On 2017/7/21 17:51, Hanjun Guo wrote:
>>> From: Hanjun Guo <hanjun.guo@linaro.org>
>>>
>>> When running 4.13-rc1 on top of D05, I got the boot log:
>>>
>>> [    0.000000] SRAT: PXM 0 -> ITS 0 -> Node 0
>>> [    0.000000] SRAT: PXM 0 -> ITS 1 -> Node 0
>>> [    0.000000] SRAT: PXM 0 -> ITS 2 -> Node 0
>>> [    0.000000] SRAT: PXM 1 -> ITS 3 -> Node 1
>>> [    0.000000] SRAT: ITS affinity exceeding max count[4]
>>>
>>> This is wrong on D05 as we have 8 ITSes with 4 NUMA nodes.

Used static array to keep it simple.  we can have either dynamic array
or increase static array size (which is in init data) to a larger
number.
We may have to go for dynamic array to be more sane. You can refer my
v2 patch [1], which was doing dynamic allocation and avoids
2 calls to acpi parser as done in this patch.

[1] https://patchwork.kernel.org/patch/9798659/


>
> I'm not seeing this on the D05 I have access to. Actually, I'm not
> seeing any data related to SRAT and the ITS. Is that a different firmware?
>
>>>
>>> So dynamically alloc the memory needed instead of using
>>> its_srat_maps[MAX_NUMNODES], which count the number of
>>> ITS entry(ies) in SRAT and alloc its_srat_maps as needed,
>>> then build the mapping of numa node to ITS ID.
>>>
>>> After doing this, I got what I wanted:
>>>
>>> [    0.000000] SRAT: PXM 0 -> ITS 0 -> Node 0
>>> [    0.000000] SRAT: PXM 0 -> ITS 1 -> Node 0
>>> [    0.000000] SRAT: PXM 0 -> ITS 2 -> Node 0
>>> [    0.000000] SRAT: PXM 1 -> ITS 3 -> Node 1
>>> [    0.000000] SRAT: PXM 2 -> ITS 4 -> Node 2
>>> [    0.000000] SRAT: PXM 2 -> ITS 5 -> Node 2
>>> [    0.000000] SRAT: PXM 2 -> ITS 6 -> Node 2
>>> [    0.000000] SRAT: PXM 3 -> ITS 7 -> Node 3
>>>
>>> Fixes: dbd2b8267233 ("irqchip/gic-v3-its: Add ACPI NUMA node mapping")
>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>>> Cc: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
>>> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
>>> Cc: Marc Zyngier <marc.zyngier@arm.com>
>>> ---
>>>  drivers/irqchip/irq-gic-v3-its.c | 28 +++++++++++++++++++++-------
>>>  1 file changed, 21 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
>>> index 3ccdf76..fb1c090 100644
>>> --- a/drivers/irqchip/irq-gic-v3-its.c
>>> +++ b/drivers/irqchip/irq-gic-v3-its.c
>>> @@ -1847,7 +1847,7 @@ struct its_srat_map {
>>>      u32     its_id;
>>>  };
>>>
>>> -static struct its_srat_map its_srat_maps[MAX_NUMNODES] __initdata;
>>> +static struct its_srat_map *its_srat_maps __initdata;
>>>  static int its_in_srat __initdata;
>>>
>>>  static int __init acpi_get_its_numa_node(u32 its_id)
>>> @@ -1861,6 +1861,12 @@ static int __init acpi_get_its_numa_node(u32 its_id)
>>>      return NUMA_NO_NODE;
>>>  }
>>
>> Oops, need to check if the its_srat_maps valid or not here, please
>> comment on what else I'm missing or wrong, then I will prepare another
>> version.
>
> Please post a patch that has all of the fixes, and I'll review that.
>
> Thanks,
>
>         M.
> --
> Jazz is not dead. It just smells funny...
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

thanks
Ganapat

WARNING: multiple messages have this Message-ID (diff)
From: gklkml16@gmail.com (Ganapatrao Kulkarni)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] irqchip/gic-v3-its: Allow GIC ITS number more than MAX_NUMNODES
Date: Fri, 21 Jul 2017 17:12:50 +0530	[thread overview]
Message-ID: <CAKTKpr7tmavUKyqxYabdfYOpV0V9TLySmwCwTyng5zZoxy9nqg@mail.gmail.com> (raw)
In-Reply-To: <84d411ff-596b-c451-29fb-f506abc4fb04@arm.com>

Hi Hanjun,


On Fri, Jul 21, 2017 at 4:50 PM, Marc Zyngier <marc.zyngier@arm.com> wrote:
> On 21/07/17 11:06, Hanjun Guo wrote:
>> On 2017/7/21 17:51, Hanjun Guo wrote:
>>> From: Hanjun Guo <hanjun.guo@linaro.org>
>>>
>>> When running 4.13-rc1 on top of D05, I got the boot log:
>>>
>>> [    0.000000] SRAT: PXM 0 -> ITS 0 -> Node 0
>>> [    0.000000] SRAT: PXM 0 -> ITS 1 -> Node 0
>>> [    0.000000] SRAT: PXM 0 -> ITS 2 -> Node 0
>>> [    0.000000] SRAT: PXM 1 -> ITS 3 -> Node 1
>>> [    0.000000] SRAT: ITS affinity exceeding max count[4]
>>>
>>> This is wrong on D05 as we have 8 ITSes with 4 NUMA nodes.

Used static array to keep it simple.  we can have either dynamic array
or increase static array size (which is in init data) to a larger
number.
We may have to go for dynamic array to be more sane. You can refer my
v2 patch [1], which was doing dynamic allocation and avoids
2 calls to acpi parser as done in this patch.

[1] https://patchwork.kernel.org/patch/9798659/


>
> I'm not seeing this on the D05 I have access to. Actually, I'm not
> seeing any data related to SRAT and the ITS. Is that a different firmware?
>
>>>
>>> So dynamically alloc the memory needed instead of using
>>> its_srat_maps[MAX_NUMNODES], which count the number of
>>> ITS entry(ies) in SRAT and alloc its_srat_maps as needed,
>>> then build the mapping of numa node to ITS ID.
>>>
>>> After doing this, I got what I wanted:
>>>
>>> [    0.000000] SRAT: PXM 0 -> ITS 0 -> Node 0
>>> [    0.000000] SRAT: PXM 0 -> ITS 1 -> Node 0
>>> [    0.000000] SRAT: PXM 0 -> ITS 2 -> Node 0
>>> [    0.000000] SRAT: PXM 1 -> ITS 3 -> Node 1
>>> [    0.000000] SRAT: PXM 2 -> ITS 4 -> Node 2
>>> [    0.000000] SRAT: PXM 2 -> ITS 5 -> Node 2
>>> [    0.000000] SRAT: PXM 2 -> ITS 6 -> Node 2
>>> [    0.000000] SRAT: PXM 3 -> ITS 7 -> Node 3
>>>
>>> Fixes: dbd2b8267233 ("irqchip/gic-v3-its: Add ACPI NUMA node mapping")
>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>>> Cc: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
>>> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
>>> Cc: Marc Zyngier <marc.zyngier@arm.com>
>>> ---
>>>  drivers/irqchip/irq-gic-v3-its.c | 28 +++++++++++++++++++++-------
>>>  1 file changed, 21 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
>>> index 3ccdf76..fb1c090 100644
>>> --- a/drivers/irqchip/irq-gic-v3-its.c
>>> +++ b/drivers/irqchip/irq-gic-v3-its.c
>>> @@ -1847,7 +1847,7 @@ struct its_srat_map {
>>>      u32     its_id;
>>>  };
>>>
>>> -static struct its_srat_map its_srat_maps[MAX_NUMNODES] __initdata;
>>> +static struct its_srat_map *its_srat_maps __initdata;
>>>  static int its_in_srat __initdata;
>>>
>>>  static int __init acpi_get_its_numa_node(u32 its_id)
>>> @@ -1861,6 +1861,12 @@ static int __init acpi_get_its_numa_node(u32 its_id)
>>>      return NUMA_NO_NODE;
>>>  }
>>
>> Oops, need to check if the its_srat_maps valid or not here, please
>> comment on what else I'm missing or wrong, then I will prepare another
>> version.
>
> Please post a patch that has all of the fixes, and I'll review that.
>
> Thanks,
>
>         M.
> --
> Jazz is not dead. It just smells funny...
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

thanks
Ganapat

  reply	other threads:[~2017-07-21 11:42 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-21  9:51 [PATCH] irqchip/gic-v3-its: Allow GIC ITS number more than MAX_NUMNODES Hanjun Guo
2017-07-21  9:51 ` Hanjun Guo
2017-07-21  9:51 ` Hanjun Guo
2017-07-21 10:06 ` Hanjun Guo
2017-07-21 10:06   ` Hanjun Guo
2017-07-21 10:06   ` Hanjun Guo
2017-07-21 10:50   ` Hanjun Guo
2017-07-21 10:50     ` Hanjun Guo
2017-07-21 10:50     ` Hanjun Guo
2017-07-21 11:20   ` Marc Zyngier
2017-07-21 11:20     ` Marc Zyngier
2017-07-21 11:42     ` Ganapatrao Kulkarni [this message]
2017-07-21 11:42       ` Ganapatrao Kulkarni
2017-07-22  3:52       ` Hanjun Guo
2017-07-22  3:52         ` Hanjun Guo
2017-07-22  3:52         ` Hanjun Guo
2017-07-22  3:44     ` Hanjun Guo
2017-07-22  3:44       ` Hanjun Guo
2017-07-22  3:44       ` 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=CAKTKpr7tmavUKyqxYabdfYOpV0V9TLySmwCwTyng5zZoxy9nqg@mail.gmail.com \
    --to=gklkml16@gmail.com \
    --cc=Jayachandran.Nair@cavium.com \
    --cc=ganapatrao.kulkarni@cavium.com \
    --cc=guohanjun@huawei.com \
    --cc=hanjun.guo@linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=marc.zyngier@arm.com \
    --cc=tglx@linutronix.de \
    /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.