[v2] irqchip: LoongArch: Select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP

Message ID 1666841949-5244-1-git-send-email-yangtiezhu@loongson.cn
State New
Headers
Series [v2] irqchip: LoongArch: Select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP |

Commit Message

Tiezhu Yang Oct. 27, 2022, 3:39 a.m. UTC
  An IRQ's effective affinity can only be different from its configured
affinity if there are multiple CPUs. Make it clear that this option is
only meaningful when SMP is enabled.

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---

v2: rebased on 6.1-rc2

 drivers/irqchip/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Marc Zyngier Nov. 26, 2022, 12:53 p.m. UTC | #1
On Thu, 27 Oct 2022 04:39:09 +0100,
Tiezhu Yang <yangtiezhu@loongson.cn> wrote:
> 
> An IRQ's effective affinity can only be different from its configured
> affinity if there are multiple CPUs. Make it clear that this option is
> only meaningful when SMP is enabled.
> 
> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> ---
> 
> v2: rebased on 6.1-rc2
> 
>  drivers/irqchip/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
> index 7ef9f5e..8461915 100644
> --- a/drivers/irqchip/Kconfig
> +++ b/drivers/irqchip/Kconfig
> @@ -575,7 +575,7 @@ config IRQ_LOONGARCH_CPU
>  	bool
>  	select GENERIC_IRQ_CHIP
>  	select IRQ_DOMAIN
> -	select GENERIC_IRQ_EFFECTIVE_AFF_MASK
> +	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
>  	select LOONGSON_LIOINTC
>  	select LOONGSON_EIOINTC
>  	select LOONGSON_PCH_PIC

We already have this:

# Supports effective affinity mask
config GENERIC_IRQ_EFFECTIVE_AFF_MASK
       depends on SMP
       bool

Do we really need to express this for every interrupt controller?

	M.
  
Samuel Holland Nov. 26, 2022, 11:49 p.m. UTC | #2
On 11/26/22 06:53, Marc Zyngier wrote:
> On Thu, 27 Oct 2022 04:39:09 +0100,
> Tiezhu Yang <yangtiezhu@loongson.cn> wrote:
>>
>> An IRQ's effective affinity can only be different from its configured
>> affinity if there are multiple CPUs. Make it clear that this option is
>> only meaningful when SMP is enabled.
>>
>> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
>> ---
>>
>> v2: rebased on 6.1-rc2
>>
>>  drivers/irqchip/Kconfig | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
>> index 7ef9f5e..8461915 100644
>> --- a/drivers/irqchip/Kconfig
>> +++ b/drivers/irqchip/Kconfig
>> @@ -575,7 +575,7 @@ config IRQ_LOONGARCH_CPU
>>  	bool
>>  	select GENERIC_IRQ_CHIP
>>  	select IRQ_DOMAIN
>> -	select GENERIC_IRQ_EFFECTIVE_AFF_MASK
>> +	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
>>  	select LOONGSON_LIOINTC
>>  	select LOONGSON_EIOINTC
>>  	select LOONGSON_PCH_PIC
> 
> We already have this:
> 
> # Supports effective affinity mask
> config GENERIC_IRQ_EFFECTIVE_AFF_MASK
>        depends on SMP
>        bool
> 
> Do we really need to express this for every interrupt controller?

Unfortunately yes, because "select" does not respect dependencies. So
the "depends on SMP" line does not enforce anything; it only serves to
provide a warning at configure time that the build will break.

Regards,
Samuel
  
Marc Zyngier Nov. 28, 2022, 9:52 a.m. UTC | #3
On Sat, 26 Nov 2022 23:49:10 +0000,
Samuel Holland <samuel@sholland.org> wrote:
> 
> On 11/26/22 06:53, Marc Zyngier wrote:
> > On Thu, 27 Oct 2022 04:39:09 +0100,
> > Tiezhu Yang <yangtiezhu@loongson.cn> wrote:
> >>
> >> An IRQ's effective affinity can only be different from its configured
> >> affinity if there are multiple CPUs. Make it clear that this option is
> >> only meaningful when SMP is enabled.
> >>
> >> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> >> ---
> >>
> >> v2: rebased on 6.1-rc2
> >>
> >>  drivers/irqchip/Kconfig | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
> >> index 7ef9f5e..8461915 100644
> >> --- a/drivers/irqchip/Kconfig
> >> +++ b/drivers/irqchip/Kconfig
> >> @@ -575,7 +575,7 @@ config IRQ_LOONGARCH_CPU
> >>  	bool
> >>  	select GENERIC_IRQ_CHIP
> >>  	select IRQ_DOMAIN
> >> -	select GENERIC_IRQ_EFFECTIVE_AFF_MASK
> >> +	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
> >>  	select LOONGSON_LIOINTC
> >>  	select LOONGSON_EIOINTC
> >>  	select LOONGSON_PCH_PIC
> > 
> > We already have this:
> > 
> > # Supports effective affinity mask
> > config GENERIC_IRQ_EFFECTIVE_AFF_MASK
> >        depends on SMP
> >        bool
> > 
> > Do we really need to express this for every interrupt controller?
> 
> Unfortunately yes, because "select" does not respect dependencies. So
> the "depends on SMP" line does not enforce anything; it only serves to
> provide a warning at configure time that the build will break.

I understand that. My question was more "how can we avoid doing that
for each and every irqchip".

So far, the only things I can think of are either an intermediate
config symbol that performs the "if SMP" by itself, or spraying checks
for CONFIG_SMP all over the shop. None of which are appealing.

	M.
  

Patch

diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index 7ef9f5e..8461915 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -575,7 +575,7 @@  config IRQ_LOONGARCH_CPU
 	bool
 	select GENERIC_IRQ_CHIP
 	select IRQ_DOMAIN
-	select GENERIC_IRQ_EFFECTIVE_AFF_MASK
+	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
 	select LOONGSON_LIOINTC
 	select LOONGSON_EIOINTC
 	select LOONGSON_PCH_PIC