* [PATCH v2] of: OF_IRQ: select IRQ_DOMAIN instead of depending on it
@ 2024-02-13 22:56 Randy Dunlap
2024-02-14 9:52 ` Marc Zyngier
0 siblings, 1 reply; 6+ messages in thread
From: Randy Dunlap @ 2024-02-13 22:56 UTC (permalink / raw)
To: linux-kernel
Cc: Randy Dunlap, Geert Uytterhoeven, Rob Herring, Marc Zyngier,
Arnd Bergmann, Philipp Zabel, Peter Rosin, devicetree
IRQ_DOMAIN is a hidden (not user visible) symbol. Users cannot set
it directly thru "make *config", so drivers should select it instead
of depending on it if they need it.
Relying on it being set for a dependency is risky.
Consistently using "select" or "depends on" can also help reduce
Kconfig circular dependency issues.
Therefore, change OF_IRQ's use of "depends on" to "select".
This patch reduces one Kconfig circular dependency in
drivers/mux/Kconfig when MUX_MMIO attempts to select REGMAP (a failed
patch), which that driver needs (but does not completely resolve that
issue). [1]
before this patch: (10 lines of detail)
drivers/net/ethernet/arc/Kconfig:19:error: recursive dependency detected!
drivers/net/ethernet/arc/Kconfig:19: symbol ARC_EMAC_CORE is selected by ARC_EMAC
drivers/net/ethernet/arc/Kconfig:26: symbol ARC_EMAC depends on OF_IRQ
drivers/of/Kconfig:81: symbol OF_IRQ depends on IRQ_DOMAIN
kernel/irq/Kconfig:60: symbol IRQ_DOMAIN is selected by REGMAP
drivers/base/regmap/Kconfig:6: symbol REGMAP is selected by MUX_MMIO
drivers/mux/Kconfig:48: symbol MUX_MMIO depends on MULTIPLEXER
drivers/mux/Kconfig:6: symbol MULTIPLEXER is selected by MDIO_BUS_MUX_MULTIPLEXER
drivers/net/mdio/Kconfig:275: symbol MDIO_BUS_MUX_MULTIPLEXER depends on MDIO_DEVICE
drivers/net/mdio/Kconfig:6: symbol MDIO_DEVICE is selected by PHYLIB
drivers/net/phy/Kconfig:16: symbol PHYLIB is selected by ARC_EMAC_CORE
after this patch: (5 lines of detail)
drivers/mux/Kconfig:6:error: recursive dependency detected!
drivers/mux/Kconfig:6: symbol MULTIPLEXER is selected by MDIO_BUS_MUX_MULTIPLEXER
drivers/net/mdio/Kconfig:275: symbol MDIO_BUS_MUX_MULTIPLEXER depends on MDIO_BUS
drivers/net/mdio/Kconfig:13: symbol MDIO_BUS is selected by REGMAP
drivers/base/regmap/Kconfig:6: symbol REGMAP is selected by MUX_MMIO
drivers/mux/Kconfig:48: symbol MUX_MMIO depends on MULTIPLEXER
[1] https://lore.kernel.org/lkml/20230210115625.GA30942@pengutronix.de/
Fixes: 63c60e3a6dc3 ("of: OF_IRQ should depend on IRQ_DOMAIN")
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: Peter Rosin <peda@axentia.se>
Cc: devicetree@vger.kernel.org
---
v2: update patch description, rebase & resend
drivers/of/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff -- a/drivers/of/Kconfig b/drivers/of/Kconfig
--- a/drivers/of/Kconfig
+++ b/drivers/of/Kconfig
@@ -80,7 +80,8 @@ config OF_ADDRESS
config OF_IRQ
def_bool y
- depends on !SPARC && IRQ_DOMAIN
+ depends on !SPARC
+ select IRQ_DOMAIN
config OF_RESERVED_MEM
def_bool OF_EARLY_FLATTREE
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH v2] of: OF_IRQ: select IRQ_DOMAIN instead of depending on it 2024-02-13 22:56 [PATCH v2] of: OF_IRQ: select IRQ_DOMAIN instead of depending on it Randy Dunlap @ 2024-02-14 9:52 ` Marc Zyngier 2024-02-14 16:06 ` Arnd Bergmann 0 siblings, 1 reply; 6+ messages in thread From: Marc Zyngier @ 2024-02-14 9:52 UTC (permalink / raw) To: Randy Dunlap Cc: linux-kernel, Geert Uytterhoeven, Rob Herring, Arnd Bergmann, Philipp Zabel, Peter Rosin, devicetree On Tue, 13 Feb 2024 22:56:19 +0000, Randy Dunlap <rdunlap@infradead.org> wrote: > > IRQ_DOMAIN is a hidden (not user visible) symbol. Users cannot set > it directly thru "make *config", so drivers should select it instead > of depending on it if they need it. > Relying on it being set for a dependency is risky. > > Consistently using "select" or "depends on" can also help reduce > Kconfig circular dependency issues. > > Therefore, change OF_IRQ's use of "depends on" to "select". > > This patch reduces one Kconfig circular dependency in > drivers/mux/Kconfig when MUX_MMIO attempts to select REGMAP (a failed > patch), which that driver needs (but does not completely resolve that > issue). [1] > > before this patch: (10 lines of detail) > drivers/net/ethernet/arc/Kconfig:19:error: recursive dependency detected! > drivers/net/ethernet/arc/Kconfig:19: symbol ARC_EMAC_CORE is selected by ARC_EMAC > drivers/net/ethernet/arc/Kconfig:26: symbol ARC_EMAC depends on OF_IRQ > drivers/of/Kconfig:81: symbol OF_IRQ depends on IRQ_DOMAIN > kernel/irq/Kconfig:60: symbol IRQ_DOMAIN is selected by REGMAP > drivers/base/regmap/Kconfig:6: symbol REGMAP is selected by MUX_MMIO > drivers/mux/Kconfig:48: symbol MUX_MMIO depends on MULTIPLEXER > drivers/mux/Kconfig:6: symbol MULTIPLEXER is selected by MDIO_BUS_MUX_MULTIPLEXER > drivers/net/mdio/Kconfig:275: symbol MDIO_BUS_MUX_MULTIPLEXER depends on MDIO_DEVICE > drivers/net/mdio/Kconfig:6: symbol MDIO_DEVICE is selected by PHYLIB > drivers/net/phy/Kconfig:16: symbol PHYLIB is selected by ARC_EMAC_CORE > > after this patch: (5 lines of detail) > drivers/mux/Kconfig:6:error: recursive dependency detected! > drivers/mux/Kconfig:6: symbol MULTIPLEXER is selected by MDIO_BUS_MUX_MULTIPLEXER > drivers/net/mdio/Kconfig:275: symbol MDIO_BUS_MUX_MULTIPLEXER depends on MDIO_BUS > drivers/net/mdio/Kconfig:13: symbol MDIO_BUS is selected by REGMAP > drivers/base/regmap/Kconfig:6: symbol REGMAP is selected by MUX_MMIO > drivers/mux/Kconfig:48: symbol MUX_MMIO depends on MULTIPLEXER > > [1] https://lore.kernel.org/lkml/20230210115625.GA30942@pengutronix.de/ > > Fixes: 63c60e3a6dc3 ("of: OF_IRQ should depend on IRQ_DOMAIN") > Signed-off-by: Randy Dunlap <rdunlap@infradead.org> > Cc: Geert Uytterhoeven <geert@linux-m68k.org> > Cc: Rob Herring <robh@kernel.org> > Cc: Marc Zyngier <maz@kernel.org> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: Philipp Zabel <p.zabel@pengutronix.de> > Cc: Peter Rosin <peda@axentia.se> > Cc: devicetree@vger.kernel.org > --- > v2: update patch description, rebase & resend > > drivers/of/Kconfig | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff -- a/drivers/of/Kconfig b/drivers/of/Kconfig > --- a/drivers/of/Kconfig > +++ b/drivers/of/Kconfig > @@ -80,7 +80,8 @@ config OF_ADDRESS > > config OF_IRQ > def_bool y > - depends on !SPARC && IRQ_DOMAIN > + depends on !SPARC > + select IRQ_DOMAIN > > config OF_RESERVED_MEM > def_bool OF_EARLY_FLATTREE > This seems to be moving is the right direction. FWIW, Acked-by: Marc Zyngier <maz@kernel.org> M. -- Without deviation from the norm, progress is not possible. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] of: OF_IRQ: select IRQ_DOMAIN instead of depending on it 2024-02-14 9:52 ` Marc Zyngier @ 2024-02-14 16:06 ` Arnd Bergmann 2024-02-14 16:35 ` Marc Zyngier 0 siblings, 1 reply; 6+ messages in thread From: Arnd Bergmann @ 2024-02-14 16:06 UTC (permalink / raw) To: Marc Zyngier, Randy Dunlap Cc: linux-kernel, Geert Uytterhoeven, Rob Herring, Philipp Zabel, Peter Rosin, devicetree On Wed, Feb 14, 2024, at 10:52, Marc Zyngier wrote: > On Tue, 13 Feb 2024 22:56:19 +0000, Randy Dunlap <rdunlap@infradead.org> wrote: >> >> diff -- a/drivers/of/Kconfig b/drivers/of/Kconfig >> --- a/drivers/of/Kconfig >> +++ b/drivers/of/Kconfig >> @@ -80,7 +80,8 @@ config OF_ADDRESS >> >> config OF_IRQ >> def_bool y >> - depends on !SPARC && IRQ_DOMAIN >> + depends on !SPARC >> + select IRQ_DOMAIN > > > This seems to be moving is the right direction. Can we move the 'select IRQ_DOMAIN' under CONFIG_IRQCHIP then and remove the individual selects from the irqchip drivers? It looks like CONFIG_OF (other than sparc) now unconditionally enables OF_IRQ and IRQCHIP anyway. Arnd ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] of: OF_IRQ: select IRQ_DOMAIN instead of depending on it 2024-02-14 16:06 ` Arnd Bergmann @ 2024-02-14 16:35 ` Marc Zyngier 2024-02-14 17:22 ` Arnd Bergmann 0 siblings, 1 reply; 6+ messages in thread From: Marc Zyngier @ 2024-02-14 16:35 UTC (permalink / raw) To: Arnd Bergmann Cc: Randy Dunlap, linux-kernel, Geert Uytterhoeven, Rob Herring, Philipp Zabel, Peter Rosin, devicetree On Wed, 14 Feb 2024 16:06:06 +0000, "Arnd Bergmann" <arnd@arndb.de> wrote: > > On Wed, Feb 14, 2024, at 10:52, Marc Zyngier wrote: > > On Tue, 13 Feb 2024 22:56:19 +0000, Randy Dunlap <rdunlap@infradead.org> wrote: > >> > >> diff -- a/drivers/of/Kconfig b/drivers/of/Kconfig > >> --- a/drivers/of/Kconfig > >> +++ b/drivers/of/Kconfig > >> @@ -80,7 +80,8 @@ config OF_ADDRESS > >> > >> config OF_IRQ > >> def_bool y > >> - depends on !SPARC && IRQ_DOMAIN > >> + depends on !SPARC > >> + select IRQ_DOMAIN > > > > > > This seems to be moving is the right direction. > > Can we move the 'select IRQ_DOMAIN' under CONFIG_IRQCHIP > then and remove the individual selects from the irqchip > drivers? It looks like CONFIG_OF (other than sparc) now > unconditionally enables OF_IRQ and IRQCHIP anyway. As long as it also works ACPI, it should be OK. M. -- Without deviation from the norm, progress is not possible. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] of: OF_IRQ: select IRQ_DOMAIN instead of depending on it 2024-02-14 16:35 ` Marc Zyngier @ 2024-02-14 17:22 ` Arnd Bergmann 2024-02-15 15:08 ` Rob Herring 0 siblings, 1 reply; 6+ messages in thread From: Arnd Bergmann @ 2024-02-14 17:22 UTC (permalink / raw) To: Marc Zyngier Cc: Randy Dunlap, linux-kernel, Geert Uytterhoeven, Rob Herring, Philipp Zabel, Peter Rosin, devicetree On Wed, Feb 14, 2024, at 17:35, Marc Zyngier wrote: > On Wed, 14 Feb 2024 16:06:06 +0000, > "Arnd Bergmann" <arnd@arndb.de> wrote: >> >> On Wed, Feb 14, 2024, at 10:52, Marc Zyngier wrote: >> > On Tue, 13 Feb 2024 22:56:19 +0000, Randy Dunlap <rdunlap@infradead.org> wrote: >> >> >> >> diff -- a/drivers/of/Kconfig b/drivers/of/Kconfig >> >> --- a/drivers/of/Kconfig >> >> +++ b/drivers/of/Kconfig >> >> @@ -80,7 +80,8 @@ config OF_ADDRESS >> >> >> >> config OF_IRQ >> >> def_bool y >> >> - depends on !SPARC && IRQ_DOMAIN >> >> + depends on !SPARC >> >> + select IRQ_DOMAIN >> > >> > >> > This seems to be moving is the right direction. >> >> Can we move the 'select IRQ_DOMAIN' under CONFIG_IRQCHIP >> then and remove the individual selects from the irqchip >> drivers? It looks like CONFIG_OF (other than sparc) now >> unconditionally enables OF_IRQ and IRQCHIP anyway. > > As long as it also works ACPI, it should be OK. Out of the four architectures that have ACPI support (x86, arm64, loongarch, rv64), only x86 doesn't always select IRQ_DOMAIN already, and x86 selects it for almost all configs: config X86_UP_APIC bool "Local APIC support on uniprocessors" if !PCI_MSI default PCI_MSI depends on X86_32 && !SMP && !X86_32_NON_STANDARD config X86_LOCAL_APIC def_bool y depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI select IRQ_DOMAIN_HIERARCHY so it's only disabled here with CONFIG_64BIT=n CONFIG_SMP=n CONFIG_X86_32_NON_STANDARD=n CONFIG_ACPI=y CONFIG_PCI=y (implied by ACPI) CONFIG_PCI_MSI=n As far as I can tell, this specific configuration is currently able to save a little bit of kernel size by avoiding IRQ_DOMAIN, but we are probably better off enabling it here as well for consistency Arnd ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2] of: OF_IRQ: select IRQ_DOMAIN instead of depending on it 2024-02-14 17:22 ` Arnd Bergmann @ 2024-02-15 15:08 ` Rob Herring 0 siblings, 0 replies; 6+ messages in thread From: Rob Herring @ 2024-02-15 15:08 UTC (permalink / raw) To: Arnd Bergmann Cc: Marc Zyngier, Randy Dunlap, linux-kernel, Geert Uytterhoeven, Philipp Zabel, Peter Rosin, devicetree On Wed, Feb 14, 2024 at 06:22:53PM +0100, Arnd Bergmann wrote: > On Wed, Feb 14, 2024, at 17:35, Marc Zyngier wrote: > > On Wed, 14 Feb 2024 16:06:06 +0000, > > "Arnd Bergmann" <arnd@arndb.de> wrote: > >> > >> On Wed, Feb 14, 2024, at 10:52, Marc Zyngier wrote: > >> > On Tue, 13 Feb 2024 22:56:19 +0000, Randy Dunlap <rdunlap@infradead.org> wrote: > >> >> > >> >> diff -- a/drivers/of/Kconfig b/drivers/of/Kconfig > >> >> --- a/drivers/of/Kconfig > >> >> +++ b/drivers/of/Kconfig > >> >> @@ -80,7 +80,8 @@ config OF_ADDRESS > >> >> > >> >> config OF_IRQ > >> >> def_bool y > >> >> - depends on !SPARC && IRQ_DOMAIN > >> >> + depends on !SPARC > >> >> + select IRQ_DOMAIN > >> > > >> > > >> > This seems to be moving is the right direction. > >> > >> Can we move the 'select IRQ_DOMAIN' under CONFIG_IRQCHIP > >> then and remove the individual selects from the irqchip > >> drivers? It looks like CONFIG_OF (other than sparc) now > >> unconditionally enables OF_IRQ and IRQCHIP anyway. > > > > As long as it also works ACPI, it should be OK. > > Out of the four architectures that have ACPI support (x86, > arm64, loongarch, rv64), only x86 doesn't always select > IRQ_DOMAIN already, and x86 selects it for almost all > configs: > > config X86_UP_APIC > bool "Local APIC support on uniprocessors" if !PCI_MSI > default PCI_MSI > depends on X86_32 && !SMP && !X86_32_NON_STANDARD > > config X86_LOCAL_APIC > def_bool y > depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI > select IRQ_DOMAIN_HIERARCHY > > so it's only disabled here with > > CONFIG_64BIT=n > CONFIG_SMP=n > CONFIG_X86_32_NON_STANDARD=n > CONFIG_ACPI=y > CONFIG_PCI=y (implied by ACPI) > CONFIG_PCI_MSI=n > > As far as I can tell, this specific configuration is > currently able to save a little bit of kernel size > by avoiding IRQ_DOMAIN, but we are probably better off > enabling it here as well for consistency +1 Also, looks like we have a couple of 'select OF_IRQ' that could be dropped. Rob ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-02-15 15:08 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-02-13 22:56 [PATCH v2] of: OF_IRQ: select IRQ_DOMAIN instead of depending on it Randy Dunlap 2024-02-14 9:52 ` Marc Zyngier 2024-02-14 16:06 ` Arnd Bergmann 2024-02-14 16:35 ` Marc Zyngier 2024-02-14 17:22 ` Arnd Bergmann 2024-02-15 15:08 ` Rob Herring
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).