Re: [PATCH v2] of: property: fw_devlink: Do not use interrupt-parent directly
From: Rob Herring (Arm)
Date: Thu Nov 21 2024 - 16:48:46 EST
On Wed, 20 Nov 2024 15:31:16 -0800, Samuel Holland wrote:
> commit 7f00be96f125 ("of: property: Add device link support for
> interrupt-parent, dmas and -gpio(s)") started adding device links for
> the interrupt-parent property. commit 4104ca776ba3 ("of: property: Add
> fw_devlink support for interrupts") and commit f265f06af194 ("of:
> property: Fix fw_devlink handling of interrupts/interrupts-extended")
> later added full support for parsing the interrupts and
> interrupts-extended properties, which includes looking up the node of
> the parent domain. This made the handler for the interrupt-parent
> property redundant.
>
> In fact, creating device links based solely on interrupt-parent is
> problematic, because it can create spurious cycles. A node may have
> this property without itself being an interrupt controller or consumer.
> For example, this property is often present in the root node or a /soc
> bus node to set the default interrupt parent for child nodes. However,
> it is incorrect for the bus to depend on the interrupt controller, as
> some of the bus's children may not be interrupt consumers at all or may
> have a different interrupt parent.
>
> Resolving these spurious dependency cycles can cause an incorrect probe
> order for interrupt controller drivers. This was observed on a RISC-V
> system with both an APLIC and IMSIC under /soc, where interrupt-parent
> in /soc points to the APLIC, and the APLIC msi-parent points to the
> IMSIC. fw_devlink found three dependency cycles and attempted to probe
> the APLIC before the IMSIC. After applying this patch, there were no
> dependency cycles and the probe order was correct.
>
> Acked-by: Marc Zyngier <maz@xxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: 4104ca776ba3 ("of: property: Add fw_devlink support for interrupts")
> Signed-off-by: Samuel Holland <samuel.holland@xxxxxxxxxx>
> ---
>
> Changes in v2:
> - Fix typo in commit message
> - Add Fixes: tag and CC stable
>
> drivers/of/property.c | 2 --
> 1 file changed, 2 deletions(-)
>
Applied, thanks!