Message ID | 20250309-dell-kconfig-fix-v1-1-38a2308d0ac6@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | platform/x86: dell: Fix ALIENWARE_WMI dependencies | expand |
On Sun, 9 Mar 2025, Kurt Borja wrote: > If ACPI_PLATFORM_PROFILE is selected by ALIENWARE_WMI_WMAX, the former > is forced to be at least =m, because the latter is a bool. > > This allows the following config: > > CONFIG_ALIENWARE_WMI=y > CONFIG_ACPI_PLATFORM_PROFILE=m Hi, selecting from =y should not result in =m for the other symbol. This is a bug in Kconfig infrastructure. I ran across this a few years back and even had a test case to prove the select bug but back then the original problem eventually was solved in a different way which no longer hit the problem. I never could figure out how to fix the kconfig logic though without breaking something and it ended up into low priority bin and never got solved. Sadly, it seems I've lost the test case patch that exhibits the bug somewhere... I'll try to look for it from my archived files. > which causes a linking error, because ALIENWARE_WMI_WMAX is only used to > conditionally link alienware-wmi-wmax.c to the alienware-wmi kernel > object, which might not be a module. > > Move the ACPI_PLATFORM_PROFILE reverse dependency to ALIENWARE_WMI to > fix this issue. > > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202503051819.bQ9P70Og-lkp@intel.com/ > Fixes: b1b8fcf6e677 ("platform/x86: Update alienware-wmi config entries") > Signed-off-by: Kurt Borja <kuurtb@gmail.com> > --- > drivers/platform/x86/dell/Kconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/platform/x86/dell/Kconfig b/drivers/platform/x86/dell/Kconfig > index f8a0dffcaab7c3b423472c5b9093011334a698c8..87c2ceb12d48d610c85fa739abbc4f0d88e33ec8 100644 > --- a/drivers/platform/x86/dell/Kconfig > +++ b/drivers/platform/x86/dell/Kconfig > @@ -22,6 +22,7 @@ config ALIENWARE_WMI > depends on DMI > depends on LEDS_CLASS > depends on NEW_LEDS > + select ACPI_PLATFORM_PROFILE > help > This is a driver for controlling Alienware WMI driven features. > > @@ -43,7 +44,6 @@ config ALIENWARE_WMI_WMAX > bool "Alienware WMAX WMI device driver" > default y > depends on ALIENWARE_WMI > - select ACPI_PLATFORM_PROFILE > help > Alienware WMI driver with AlienFX LED, HDMI, amplifier, deep sleep and > AWCC thermal control capabilities. > > --- > base-commit: e57eabe2fb044950e6ffdfe01803895043dec0b7 > change-id: 20250309-dell-kconfig-fix-4d3daedaedbf > > Best regards, >
Hi Ilpo, On Mon Mar 10, 2025 at 9:29 AM -05, Ilpo Järvinen wrote: > On Sun, 9 Mar 2025, Kurt Borja wrote: > >> If ACPI_PLATFORM_PROFILE is selected by ALIENWARE_WMI_WMAX, the former >> is forced to be at least =m, because the latter is a bool. >> >> This allows the following config: >> >> CONFIG_ALIENWARE_WMI=y >> CONFIG_ACPI_PLATFORM_PROFILE=m > > Hi, > > selecting from =y should not result in =m for the other symbol. This is > a bug in Kconfig infrastructure. > > I ran across this a few years back and even had a test case to prove the > select bug but back then the original problem eventually was solved in a > different way which no longer hit the problem. I never could figure out > how to fix the kconfig logic though without breaking something and it > ended up into low priority bin and never got solved. > > Sadly, it seems I've lost the test case patch that exhibits the bug > somewhere... I'll try to look for it from my archived files. That's funny. I thought this was a Kconfig quirk, that resulted from the following hierarchy: Type 0 1 2 =============== ======= ======= ======= Bool n y Tristate n m y So a <bool> selecting the <tristate> would force it to be at least =m. The same thing happens with depend, where a dependecy would be fulfilled for a <bool> if a <tristate> was at least =m. That's why in the kernel robot report the linking error was also due to the HWMON dependency. Anyway, this patch could serve as a workaround if you feel it's necessary. I'm going to put the HWMON dependecy in the ALIENWARE_WMI symbol for my other series.
Hi Kbuild/config people, Could you please take a look at this select problem. I attempted to solve this kconfig select logic problem a few years back but IIRC, my solution leaked memory or had some other problem I could not find solution to (and now the code has changed enough I couldn't even get my buggy solution easily forward-ported so I just dropped the solution and left just the test case into the patch). As the Kconfig problem back then got resolved through other means, I never mentioned this back then but seems the same problem likely happens here in some other form (bool selecting tristate that ends up getting only =m). On Mon, 10 Mar 2025, Kurt Borja wrote: > On Mon Mar 10, 2025 at 9:29 AM -05, Ilpo Järvinen wrote: > > On Sun, 9 Mar 2025, Kurt Borja wrote: > > > >> If ACPI_PLATFORM_PROFILE is selected by ALIENWARE_WMI_WMAX, the former > >> is forced to be at least =m, because the latter is a bool. > >> > >> This allows the following config: > >> > >> CONFIG_ALIENWARE_WMI=y > >> CONFIG_ACPI_PLATFORM_PROFILE=m > > > > Hi, > > > > selecting from =y should not result in =m for the other symbol. This is > > a bug in Kconfig infrastructure. > > > > I ran across this a few years back and even had a test case to prove the > > select bug but back then the original problem eventually was solved in a > > different way which no longer hit the problem. I never could figure out > > how to fix the kconfig logic though without breaking something and it > > ended up into low priority bin and never got solved. > > > > Sadly, it seems I've lost the test case patch that exhibits the bug > > somewhere... I'll try to look for it from my archived files. > > That's funny. > > I thought this was a Kconfig quirk, that resulted from the following > hierarchy: > > Type 0 1 2 > =============== ======= ======= ======= > Bool n y I think y should be 2 in both cases so select should cause the selected symbol to becomes =y but there's a logic problem deep in select logic in the kconfig code. I've attached the multi-select based reproducer test case. make testconfig runs kconfig selftests and results in CONFIG_A3=m despite CONFIG_C3=y selecting it. Please do not apply the test case before the problem is fixed. > Tristate n m y > > So a <bool> selecting the <tristate> would force it to be at least =m. > > The same thing happens with depend, where a dependecy would be fulfilled > for a <bool> if a <tristate> was at least =m. That's why in the kernel > robot report the linking error was also due to the HWMON dependency. > > Anyway, this patch could serve as a workaround if you feel it's > necessary. I'm going to put the HWMON dependecy in the ALIENWARE_WMI > symbol for my other series. > >
diff --git a/drivers/platform/x86/dell/Kconfig b/drivers/platform/x86/dell/Kconfig index f8a0dffcaab7c3b423472c5b9093011334a698c8..87c2ceb12d48d610c85fa739abbc4f0d88e33ec8 100644 --- a/drivers/platform/x86/dell/Kconfig +++ b/drivers/platform/x86/dell/Kconfig @@ -22,6 +22,7 @@ config ALIENWARE_WMI depends on DMI depends on LEDS_CLASS depends on NEW_LEDS + select ACPI_PLATFORM_PROFILE help This is a driver for controlling Alienware WMI driven features. @@ -43,7 +44,6 @@ config ALIENWARE_WMI_WMAX bool "Alienware WMAX WMI device driver" default y depends on ALIENWARE_WMI - select ACPI_PLATFORM_PROFILE help Alienware WMI driver with AlienFX LED, HDMI, amplifier, deep sleep and AWCC thermal control capabilities.
If ACPI_PLATFORM_PROFILE is selected by ALIENWARE_WMI_WMAX, the former is forced to be at least =m, because the latter is a bool. This allows the following config: CONFIG_ALIENWARE_WMI=y CONFIG_ACPI_PLATFORM_PROFILE=m which causes a linking error, because ALIENWARE_WMI_WMAX is only used to conditionally link alienware-wmi-wmax.c to the alienware-wmi kernel object, which might not be a module. Move the ACPI_PLATFORM_PROFILE reverse dependency to ALIENWARE_WMI to fix this issue. Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202503051819.bQ9P70Og-lkp@intel.com/ Fixes: b1b8fcf6e677 ("platform/x86: Update alienware-wmi config entries") Signed-off-by: Kurt Borja <kuurtb@gmail.com> --- drivers/platform/x86/dell/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- base-commit: e57eabe2fb044950e6ffdfe01803895043dec0b7 change-id: 20250309-dell-kconfig-fix-4d3daedaedbf Best regards,