From: Marc Zyngier <maz@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Biju Das <biju.das.jz@bp.renesas.com>,
x86@kernel.org
Subject: Re: [PATCH] genirq/irqdomain: Don't call ops->select for DOMAIN_BUS_ANY tokens
Date: Sun, 25 Feb 2024 17:23:22 +0000 [thread overview]
Message-ID: <6792b2913a47b6ceb5650cdde3deecf2@kernel.org> (raw)
In-Reply-To: <878r38cy8n.ffs@tglx>
On 2024-02-25 16:19, Thomas Gleixner wrote:
> On Tue, Feb 20 2024 at 11:47, Marc Zyngier wrote:
>> Users of the IRQCHIP_PLATFORM_DRIVER_{BEGIN,END} helpers rely
>> on a fwspec containing only the fwnode (and crucially a number
>> of parameters set to 0) together with a DOMAIN_BUS_ANY token
>> to check whether a parent irqchip has probed and registered
>> a domain.
>>
>> Since de1ff306dcf4 ("genirq/irqdomain: Remove the param count
>> restriction from select()"), we call ops->select unconditionally,
>> meaning that irqchips implementing select now need to handle
>> ANY as a match.
>>
>> Instead of adding more esoteric checks to the individual drivers,
>> add that condition to irq_find_matching_fwspec(), and let it
>> handle the corner case, as per the comment in the function.
>>
>> This restores the functionnality of the above helpers.
>>
>> Reported-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> Reported-by: Biju Das <biju.das.jz@bp.renesas.com>
>> Fixes: de1ff306dcf4 ("genirq/irqdomain: Remove the param count
>> restriction from select()")
>> Signed-off-by: Marc Zyngier <maz@kernel.org>
>> Link:
>> https://lore.kernel.org/r/20240219-gic-fix-child-domain-v1-1-09f8fd2d9a8f@linaro.org
>
> Bah. That breaks x86 because it uses DOMAIN_BUS_ANY to find the MSI
> parent for a fwspec (IOAPIC and HPET) which gets either picked up by
> the
> interrupt remapping or by the root vector domain.
>
> Fix below.
>
> Thanks,
>
> tglx
> ---
> Subject: x86/apic/msi: Use DOMAIN_BUS_GENERIC_MSI for HPET/IO-APIC
> domain search
> From: Thomas Gleixner <tglx@linutronix.de>
> Date: Sun, 25 Feb 2024 16:56:12 +0100
>
> The recent restriction to invoke irqdomain_ops::select() only when the
> domain bus toke is DOMAIN_BUS_ANY breaks the search for the parent MSI
> domain of HPET and IO-APIC. The latter causes a full boot fail.
>
> The restriction itself makes sense to avoid adding DOMAIN_BUS_ANY
> matches
> into the various ARM specific select() callbacks. Reverting this change
> would obviously break ARM platforms again and require DOMAIN_BUS_ANY
> matches added to various places.
>
> A simpler solution is to use the DOMAIN_BUS_GENERIC_MSI token for the
> HPET
> and IO-APIC parent domain search. This works out of the box because the
> affected parent domains check only for the firmware specification
> content
> and not for the bus token.
>
> Fixes: 5aa3c0cf5bba ("genirq/irqdomain: Don't call ops->select for
> DOMAIN_BUS_ANY tokens")
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Looks good to me.
Reviewed-by: Marc Zyngier <maz@kernel.org>
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
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <maz@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Biju Das <biju.das.jz@bp.renesas.com>,
x86@kernel.org
Subject: Re: [PATCH] genirq/irqdomain: Don't call ops->select for DOMAIN_BUS_ANY tokens
Date: Sun, 25 Feb 2024 17:23:22 +0000 [thread overview]
Message-ID: <6792b2913a47b6ceb5650cdde3deecf2@kernel.org> (raw)
In-Reply-To: <878r38cy8n.ffs@tglx>
On 2024-02-25 16:19, Thomas Gleixner wrote:
> On Tue, Feb 20 2024 at 11:47, Marc Zyngier wrote:
>> Users of the IRQCHIP_PLATFORM_DRIVER_{BEGIN,END} helpers rely
>> on a fwspec containing only the fwnode (and crucially a number
>> of parameters set to 0) together with a DOMAIN_BUS_ANY token
>> to check whether a parent irqchip has probed and registered
>> a domain.
>>
>> Since de1ff306dcf4 ("genirq/irqdomain: Remove the param count
>> restriction from select()"), we call ops->select unconditionally,
>> meaning that irqchips implementing select now need to handle
>> ANY as a match.
>>
>> Instead of adding more esoteric checks to the individual drivers,
>> add that condition to irq_find_matching_fwspec(), and let it
>> handle the corner case, as per the comment in the function.
>>
>> This restores the functionnality of the above helpers.
>>
>> Reported-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> Reported-by: Biju Das <biju.das.jz@bp.renesas.com>
>> Fixes: de1ff306dcf4 ("genirq/irqdomain: Remove the param count
>> restriction from select()")
>> Signed-off-by: Marc Zyngier <maz@kernel.org>
>> Link:
>> https://lore.kernel.org/r/20240219-gic-fix-child-domain-v1-1-09f8fd2d9a8f@linaro.org
>
> Bah. That breaks x86 because it uses DOMAIN_BUS_ANY to find the MSI
> parent for a fwspec (IOAPIC and HPET) which gets either picked up by
> the
> interrupt remapping or by the root vector domain.
>
> Fix below.
>
> Thanks,
>
> tglx
> ---
> Subject: x86/apic/msi: Use DOMAIN_BUS_GENERIC_MSI for HPET/IO-APIC
> domain search
> From: Thomas Gleixner <tglx@linutronix.de>
> Date: Sun, 25 Feb 2024 16:56:12 +0100
>
> The recent restriction to invoke irqdomain_ops::select() only when the
> domain bus toke is DOMAIN_BUS_ANY breaks the search for the parent MSI
> domain of HPET and IO-APIC. The latter causes a full boot fail.
>
> The restriction itself makes sense to avoid adding DOMAIN_BUS_ANY
> matches
> into the various ARM specific select() callbacks. Reverting this change
> would obviously break ARM platforms again and require DOMAIN_BUS_ANY
> matches added to various places.
>
> A simpler solution is to use the DOMAIN_BUS_GENERIC_MSI token for the
> HPET
> and IO-APIC parent domain search. This works out of the box because the
> affected parent domains check only for the firmware specification
> content
> and not for the bus token.
>
> Fixes: 5aa3c0cf5bba ("genirq/irqdomain: Don't call ops->select for
> DOMAIN_BUS_ANY tokens")
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Looks good to me.
Reviewed-by: Marc Zyngier <maz@kernel.org>
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2024-02-25 17:23 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-20 11:47 [PATCH] genirq/irqdomain: Don't call ops->select for DOMAIN_BUS_ANY tokens Marc Zyngier
2024-02-20 11:47 ` Marc Zyngier
2024-02-20 12:10 ` Biju Das
2024-02-20 12:10 ` Biju Das
2024-02-20 16:33 ` [tip: irq/msi] " tip-bot2 for Marc Zyngier
2024-02-25 16:19 ` [PATCH] " Thomas Gleixner
2024-02-25 16:19 ` Thomas Gleixner
2024-02-25 17:10 ` Borislav Petkov
2024-02-25 17:10 ` Borislav Petkov
2024-02-25 17:23 ` Marc Zyngier [this message]
2024-02-25 17:23 ` Marc Zyngier
2024-02-25 17:58 ` [tip: irq/msi] x86/apic/msi: Use DOMAIN_BUS_GENERIC_MSI for HPET/IO-APIC domain search tip-bot2 for Thomas Gleixner
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=6792b2913a47b6ceb5650cdde3deecf2@kernel.org \
--to=maz@kernel.org \
--cc=biju.das.jz@bp.renesas.com \
--cc=dmitry.baryshkov@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.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.