From: Marc Zyngier <maz@kernel.org>
To: Jianmin Lv <lvjianmin@loongson.cn>
Cc: Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org, loongarch@lists.linux.dev,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Jiaxun Yang <jiaxun.yang@flygoat.com>,
Huacai Chen <chenhuacai@loongson.cn>,
loongson-kernel@lists.loongnix.cn
Subject: Re: [PATCH V1 2/5] irqchip/loongson-eiointc: Fix incorrect use of acpi_get_vec_parent
Date: Fri, 24 Mar 2023 15:34:05 +0000 [thread overview]
Message-ID: <87ileqgo42.wl-maz@kernel.org> (raw)
In-Reply-To: <20230324060854.29375-3-lvjianmin@loongson.cn>
On Fri, 24 Mar 2023 06:08:51 +0000,
Jianmin Lv <lvjianmin@loongson.cn> wrote:
>
> In eiointc_acpi_init(), a *eiointc* node is passed into
> acpi_get_vec_parent() instead of a required *NUMA* node (on some chip
> like 3C5000L, a *NUMA* node means a *eiointc* node, but on some chip
> like 3C5000, a *NUMA* node contains 4 *eiointc* nodes), and node in
> struct acpi_vector_group is essentially a *NUMA* node, which will
> lead to no parent matched for passed *eiointc* node. so the patch
> adjusts code to use *NUMA* node for parameter node of
> acpi_set_vec_parent/acpi_get_vec_parent.
>
> Change-Id: Iddd8423f9694cadc1ce28ee290c2e98ca17dfccc
> Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn>
> ---
> drivers/irqchip/irq-loongson-eiointc.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/irqchip/irq-loongson-eiointc.c b/drivers/irqchip/irq-loongson-eiointc.c
> index 62a632d73991..b165c27a3609 100644
> --- a/drivers/irqchip/irq-loongson-eiointc.c
> +++ b/drivers/irqchip/irq-loongson-eiointc.c
> @@ -280,9 +280,6 @@ static void acpi_set_vec_parent(int node, struct irq_domain *parent, struct acpi
> {
> int i;
>
> - if (cpu_has_flatmode)
> - node = cpu_to_node(node * CORES_PER_EIO_NODE);
> -
> for (i = 0; i < MAX_IO_PICS; i++) {
> if (node == vec_group[i].node) {
> vec_group[i].parent = parent;
> @@ -349,8 +346,13 @@ static int __init pch_pic_parse_madt(union acpi_subtable_headers *header,
> static int __init pch_msi_parse_madt(union acpi_subtable_headers *header,
> const unsigned long end)
> {
> + struct irq_domain *parent;
> struct acpi_madt_msi_pic *pchmsi_entry = (struct acpi_madt_msi_pic *)header;
> - struct irq_domain *parent = acpi_get_vec_parent(eiointc_priv[nr_pics - 1]->node, msi_group);
> + int node = eiointc_priv[nr_pics - 1]->node;
> +
> + if (cpu_has_flatmode)
> + node = cpu_to_node(node * CORES_PER_EIO_NODE);
This is a bit unreadable. I'd rather see:
int node;
if (cpu_has_flatmode)
node = ....;
else
node = ....;
which makes it easy to detect the use of an uninitialised 'node'
rather than using the wrong default variable.
> + parent = acpi_get_vec_parent(node, msi_group);
>
> if (parent)
> return pch_msi_acpi_init(parent, pchmsi_entry);
> @@ -379,6 +381,7 @@ int __init eiointc_acpi_init(struct irq_domain *parent,
> int i, ret, parent_irq;
> unsigned long node_map;
> struct eiointc_priv *priv;
> + int node = acpi_eiointc->node;
>
> priv = kzalloc(sizeof(*priv), GFP_KERNEL);
> if (!priv)
> @@ -421,8 +424,10 @@ int __init eiointc_acpi_init(struct irq_domain *parent,
> "irqchip/loongarch/intc:starting",
> eiointc_router_init, NULL);
>
> - acpi_set_vec_parent(acpi_eiointc->node, priv->eiointc_domain, pch_group);
> - acpi_set_vec_parent(acpi_eiointc->node, priv->eiointc_domain, msi_group);
> + if (cpu_has_flatmode)
> + node = cpu_to_node(node * CORES_PER_EIO_NODE);
> + acpi_set_vec_parent(node, priv->eiointc_domain, pch_group);
> + acpi_set_vec_parent(node, priv->eiointc_domain, msi_group);
> ret = acpi_cascade_irqdomain_init();
>
> return ret;
Same thing here.
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2023-03-24 15:34 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-24 6:08 [PATCH V1 0/5] Fix some issues of irq controllers for dual-bridges scenario Jianmin Lv
2023-03-24 6:08 ` [PATCH V1 1/5] irqchip/loongson-eiointc: Fix returned value on parsing MADT Jianmin Lv
2023-03-24 15:36 ` Marc Zyngier
2023-03-27 3:58 ` Jianmin Lv
2023-03-24 6:08 ` [PATCH V1 2/5] irqchip/loongson-eiointc: Fix incorrect use of acpi_get_vec_parent Jianmin Lv
2023-03-24 15:34 ` Marc Zyngier [this message]
2023-03-27 4:00 ` Jianmin Lv
2023-03-24 6:08 ` [PATCH V1 3/5] irqchip/loongson-pch-pic: Fix pch_pic_acpi_init calling Jianmin Lv
2023-03-24 6:08 ` [PATCH V1 4/5] irqchip/loongson-eiointc: Fix registration of syscore_ops Jianmin Lv
2023-03-24 6:08 ` [PATCH V1 5/5] irqchip/loongson-pch-pic: " Jianmin Lv
2023-03-24 6:32 ` [PATCH V1 0/5] Fix some issues of irq controllers for dual-bridges scenario Huacai Chen
2023-03-24 7:08 ` Jianmin Lv
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=87ileqgo42.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=chenhuacai@loongson.cn \
--cc=jiaxun.yang@flygoat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=loongarch@lists.linux.dev \
--cc=loongson-kernel@lists.loongnix.cn \
--cc=lorenzo.pieralisi@arm.com \
--cc=lvjianmin@loongson.cn \
--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.