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 |
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?
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
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!
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>
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
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
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 --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