diff mbox series

cpuidle: tegra: add ARCH_SUSPEND_POSSIBLE dependency

Message ID 20211013160125.772873-1-arnd@kernel.org (mailing list archive)
State Not Applicable, archived
Headers show
Series cpuidle: tegra: add ARCH_SUSPEND_POSSIBLE dependency | expand

Commit Message

Arnd Bergmann Oct. 13, 2021, 4:01 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

Some StrongARM processors don't support suspend, which leads
to a build failure with the tegra cpuidle driver:

WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
  Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
  Selected by [y]:
  - ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

arch/arm/kernel/sleep.o: in function `__cpu_suspend':
(.text+0x68): undefined reference to `cpu_sa110_suspend_size'

Add an explicit dependency to make randconfig builds avoid
this combination.

Fixes: faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/cpuidle/Kconfig.arm | 1 +
 1 file changed, 1 insertion(+)

Comments

Dmitry Osipenko Oct. 13, 2021, 8:49 p.m. UTC | #1
13.10.2021 19:01, Arnd Bergmann пишет:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> Some StrongARM processors don't support suspend, which leads
> to a build failure with the tegra cpuidle driver:
> 
> WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
>   Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
>   Selected by [y]:
>   - ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]
> 
> arch/arm/kernel/sleep.o: in function `__cpu_suspend':
> (.text+0x68): undefined reference to `cpu_sa110_suspend_size'
> 
> Add an explicit dependency to make randconfig builds avoid
> this combination.
> 
> Fixes: faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/cpuidle/Kconfig.arm | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
> index 2cc3c208a180..af97992eaa82 100644
> --- a/drivers/cpuidle/Kconfig.arm
> +++ b/drivers/cpuidle/Kconfig.arm
> @@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
>  config ARM_TEGRA_CPUIDLE
>  	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
>  	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
> +	depends on ARCH_SUSPEND_POSSIBLE
>  	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
>  	select ARM_CPU_SUSPEND
>  	help
> 

Arnd, thank you for the patch!

Apparently ARM_QCOM_SPM_CPUIDLE doesn't have that problem visible
because it selects QCOM_SPM, which depends on ARCH_QCOM, and thus
ARCH_QCOM should be auto-selected(?). I'm curious whether this needs to
be corrected, otherwise (ARCH_QCOM || COMPILE_TEST) doesn't make much
sense for that driver. And then it will need the same Kconfig fix as well.

I assume this problem wasn't caught by regular kernel build bots because
they don't test randconfig, don't they?
Arnd Bergmann Oct. 13, 2021, 9:55 p.m. UTC | #2
On Wed, Oct 13, 2021 at 10:49 PM Dmitry Osipenko <digetx@gmail.com> wrote:
> > diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
> > index 2cc3c208a180..af97992eaa82 100644
> > --- a/drivers/cpuidle/Kconfig.arm
> > +++ b/drivers/cpuidle/Kconfig.arm
> > @@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
> >  config ARM_TEGRA_CPUIDLE
> >       bool "CPU Idle Driver for NVIDIA Tegra SoCs"
> >       depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
> > +     depends on ARCH_SUSPEND_POSSIBLE
> >       select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
> >       select ARM_CPU_SUSPEND
> >       help
> >
>
> Arnd, thank you for the patch!
>
> Apparently ARM_QCOM_SPM_CPUIDLE doesn't have that problem visible
> because it selects QCOM_SPM, which depends on ARCH_QCOM, and thus
> ARCH_QCOM should be auto-selected(?).

No, that's not how it works. In fact ARM_QCOM_SPM_CPUIDLE has the
exact same problem. I tried to check if there are other drivers affected
by this problem before I sent my patch, but I did something wrong and
missed this one.

> I'm curious whether this needs to
> be corrected, otherwise (ARCH_QCOM || COMPILE_TEST) doesn't make much
> sense for that driver. And then it will need the same Kconfig fix as well.
>
> I assume this problem wasn't caught by regular kernel build bots because
> they don't test randconfig, don't they?

They do test randconfig builds, but only a few of them. This one is
rather hard to hit, it probably took me 100 builds before I hit the first
one and I haven't run into the QCOM one yet, though I did see a
different issue for ARM_QCOM_SPM_CPUIDLE:

WARNING: unmet direct dependencies detected for QCOM_SPM
  Depends on [n]: ARCH_QCOM [=n]
  Selected by [y]:
  - ARM_QCOM_SPM_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64)
&& (ARCH_QCOM [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

       Arnd
Dmitry Osipenko Oct. 13, 2021, 10:25 p.m. UTC | #3
14.10.2021 00:55, Arnd Bergmann пишет:
> On Wed, Oct 13, 2021 at 10:49 PM Dmitry Osipenko <digetx@gmail.com> wrote:
>>> diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
>>> index 2cc3c208a180..af97992eaa82 100644
>>> --- a/drivers/cpuidle/Kconfig.arm
>>> +++ b/drivers/cpuidle/Kconfig.arm
>>> @@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
>>>  config ARM_TEGRA_CPUIDLE
>>>       bool "CPU Idle Driver for NVIDIA Tegra SoCs"
>>>       depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
>>> +     depends on ARCH_SUSPEND_POSSIBLE
>>>       select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
>>>       select ARM_CPU_SUSPEND
>>>       help
>>>
>>
>> Arnd, thank you for the patch!
>>
>> Apparently ARM_QCOM_SPM_CPUIDLE doesn't have that problem visible
>> because it selects QCOM_SPM, which depends on ARCH_QCOM, and thus
>> ARCH_QCOM should be auto-selected(?).
> 
> No, that's not how it works. In fact ARM_QCOM_SPM_CPUIDLE has the
> exact same problem. I tried to check if there are other drivers affected
> by this problem before I sent my patch, but I did something wrong and
> missed this one.
> 
>> I'm curious whether this needs to
>> be corrected, otherwise (ARCH_QCOM || COMPILE_TEST) doesn't make much
>> sense for that driver. And then it will need the same Kconfig fix as well.
>>
>> I assume this problem wasn't caught by regular kernel build bots because
>> they don't test randconfig, don't they?
> 
> They do test randconfig builds, but only a few of them. This one is
> rather hard to hit, it probably took me 100 builds before I hit the first
> one and I haven't run into the QCOM one yet, though I did see a
> different issue for ARM_QCOM_SPM_CPUIDLE:
> 
> WARNING: unmet direct dependencies detected for QCOM_SPM
>   Depends on [n]: ARCH_QCOM [=n]
>   Selected by [y]:
>   - ARM_QCOM_SPM_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64)
> && (ARCH_QCOM [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]

This is exactly what I expected, thank you for fixing all this!
Dmitry Osipenko Oct. 13, 2021, 10:25 p.m. UTC | #4
13.10.2021 19:01, Arnd Bergmann пишет:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> Some StrongARM processors don't support suspend, which leads
> to a build failure with the tegra cpuidle driver:
> 
> WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
>   Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
>   Selected by [y]:
>   - ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]
> 
> arch/arm/kernel/sleep.o: in function `__cpu_suspend':
> (.text+0x68): undefined reference to `cpu_sa110_suspend_size'
> 
> Add an explicit dependency to make randconfig builds avoid
> this combination.
> 
> Fixes: faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/cpuidle/Kconfig.arm | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
> index 2cc3c208a180..af97992eaa82 100644
> --- a/drivers/cpuidle/Kconfig.arm
> +++ b/drivers/cpuidle/Kconfig.arm
> @@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
>  config ARM_TEGRA_CPUIDLE
>  	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
>  	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
> +	depends on ARCH_SUSPEND_POSSIBLE
>  	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
>  	select ARM_CPU_SUSPEND
>  	help
> 

Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Arnd Bergmann Oct. 14, 2021, 2:41 p.m. UTC | #5
On Thu, Oct 14, 2021 at 12:25 AM Dmitry Osipenko <digetx@gmail.com> wrote:
>
> 13.10.2021 19:01, Arnd Bergmann пишет:
> > From: Arnd Bergmann <arnd@arndb.de>
> >
> > Some StrongARM processors don't support suspend, which leads
> > to a build failure with the tegra cpuidle driver:
> >
> > WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
> >   Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
> >   Selected by [y]:
> >   - ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]
> >
> > arch/arm/kernel/sleep.o: in function `__cpu_suspend':
> > (.text+0x68): undefined reference to `cpu_sa110_suspend_size'
> >
> > Add an explicit dependency to make randconfig builds avoid
> > this combination.
> >
> > Fixes: faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > ---
> >  drivers/cpuidle/Kconfig.arm | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
> > index 2cc3c208a180..af97992eaa82 100644
> > --- a/drivers/cpuidle/Kconfig.arm
> > +++ b/drivers/cpuidle/Kconfig.arm
> > @@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
> >  config ARM_TEGRA_CPUIDLE
> >       bool "CPU Idle Driver for NVIDIA Tegra SoCs"
> >       depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
> > +     depends on ARCH_SUSPEND_POSSIBLE
> >       select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
> >       select ARM_CPU_SUSPEND
> >       help
> >
>
> Reviewed-by: Dmitry Osipenko <digetx@gmail.com>

Thanks!

I realized now that we should drop the '&& MMU' after my fix, for both
the tegra and qualcomm drivers, reverting the change from 498ba2a8a275
("cpuidle: Fix ARM_QCOM_SPM_CPUIDLE configuration") that got failed
to fix this problem. I'll resend it as a series of three patches with your R-b
on this patch.

On a related note, I now see that the "||COMPILE_TEST" bit for the
arm-specific cpuidle drivers is not all that useful because we can curently
not hit that on non-ARM machines at all. I'll try changing that as well, but
this is probably nontrivial.

        Arnd
Dmitry Osipenko Oct. 15, 2021, 6:49 a.m. UTC | #6
14.10.2021 17:41, Arnd Bergmann пишет:
> On Thu, Oct 14, 2021 at 12:25 AM Dmitry Osipenko <digetx@gmail.com> wrote:
>>
>> 13.10.2021 19:01, Arnd Bergmann пишет:
>>> From: Arnd Bergmann <arnd@arndb.de>
>>>
>>> Some StrongARM processors don't support suspend, which leads
>>> to a build failure with the tegra cpuidle driver:
>>>
>>> WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
>>>   Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
>>>   Selected by [y]:
>>>   - ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]
>>>
>>> arch/arm/kernel/sleep.o: in function `__cpu_suspend':
>>> (.text+0x68): undefined reference to `cpu_sa110_suspend_size'
>>>
>>> Add an explicit dependency to make randconfig builds avoid
>>> this combination.
>>>
>>> Fixes: faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
>>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>>> ---
>>>  drivers/cpuidle/Kconfig.arm | 1 +
>>>  1 file changed, 1 insertion(+)
>>>
>>> diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
>>> index 2cc3c208a180..af97992eaa82 100644
>>> --- a/drivers/cpuidle/Kconfig.arm
>>> +++ b/drivers/cpuidle/Kconfig.arm
>>> @@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
>>>  config ARM_TEGRA_CPUIDLE
>>>       bool "CPU Idle Driver for NVIDIA Tegra SoCs"
>>>       depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
>>> +     depends on ARCH_SUSPEND_POSSIBLE
>>>       select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
>>>       select ARM_CPU_SUSPEND
>>>       help
>>>
>>
>> Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
> 
> Thanks!
> 
> I realized now that we should drop the '&& MMU' after my fix, for both
> the tegra and qualcomm drivers, reverting the change from 498ba2a8a275
> ("cpuidle: Fix ARM_QCOM_SPM_CPUIDLE configuration") that got failed
> to fix this problem. I'll resend it as a series of three patches with your R-b
> on this patch.
> 
> On a related note, I now see that the "||COMPILE_TEST" bit for the
> arm-specific cpuidle drivers is not all that useful because we can curently
> not hit that on non-ARM machines at all. I'll try changing that as well, but
> this is probably nontrivial.

Ack
Randy Dunlap March 16, 2022, 11:40 p.m. UTC | #7
On 10/13/21 15:25, Dmitry Osipenko wrote:
> 13.10.2021 19:01, Arnd Bergmann пишет:
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> Some StrongARM processors don't support suspend, which leads
>> to a build failure with the tegra cpuidle driver:
>>
>> WARNING: unmet direct dependencies detected for ARM_CPU_SUSPEND
>>   Depends on [n]: ARCH_SUSPEND_POSSIBLE [=n]
>>   Selected by [y]:
>>   - ARM_TEGRA_CPUIDLE [=y] && CPU_IDLE [=y] && (ARM [=y] || ARM64) && (ARCH_TEGRA [=n] || COMPILE_TEST [=y]) && !ARM64 && MMU [=y]
>>
>> arch/arm/kernel/sleep.o: in function `__cpu_suspend':
>> (.text+0x68): undefined reference to `cpu_sa110_suspend_size'
>>
>> Add an explicit dependency to make randconfig builds avoid
>> this combination.
>>
>> Fixes: faae6c9f2e68 ("cpuidle: tegra: Enable compile testing")
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>> ---
>>  drivers/cpuidle/Kconfig.arm | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
>> index 2cc3c208a180..af97992eaa82 100644
>> --- a/drivers/cpuidle/Kconfig.arm
>> +++ b/drivers/cpuidle/Kconfig.arm
>> @@ -100,6 +100,7 @@ config ARM_MVEBU_V7_CPUIDLE
>>  config ARM_TEGRA_CPUIDLE
>>  	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
>>  	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
>> +	depends on ARCH_SUSPEND_POSSIBLE
>>  	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
>>  	select ARM_CPU_SUSPEND
>>  	help
>>
> 
> Reviewed-by: Dmitry Osipenko <digetx@gmail.com>

Reviewed-by: Randy Dunlap <rdunlap@infradead.org>

What is the status of this patch, please?

kernel test robot is still reporting this build error, so I just
created the same patch...

thanks.
diff mbox series

Patch

diff --git a/drivers/cpuidle/Kconfig.arm b/drivers/cpuidle/Kconfig.arm
index 2cc3c208a180..af97992eaa82 100644
--- a/drivers/cpuidle/Kconfig.arm
+++ b/drivers/cpuidle/Kconfig.arm
@@ -100,6 +100,7 @@  config ARM_MVEBU_V7_CPUIDLE
 config ARM_TEGRA_CPUIDLE
 	bool "CPU Idle Driver for NVIDIA Tegra SoCs"
 	depends on (ARCH_TEGRA || COMPILE_TEST) && !ARM64 && MMU
+	depends on ARCH_SUSPEND_POSSIBLE
 	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
 	select ARM_CPU_SUSPEND
 	help