On Mon, 11 Feb 2008 21:13:47 +0100 (CET) Roman Zippel wrote:
> Hi,
>
> On Sun, 10 Feb 2008, Adrian Bunk wrote:
>
> > The attached .config (with current -git) results in a compile
> > error since it contains:
> >
> > CONFIG_X86=y
> > # CONFIG_EMBEDDED is not set
> > CONFIG_SERIO=m
> > CONFIG_SERIO_I8042=y
> >
> > Looking at drivers/input/serio/Kconfig I simply don't get how this
> > can happen.
>
> You've hit the rather subtle rules of select vs default. What happened is
> that SERIO is selected to m, but SERIO_I8042 isn't selected so the default
> of y is used instead.
> We already had the problem in the past that select and default don't work
> well together, so this patch cleans this up and makes the rule hopefully
> more straightforward. Basically now the value is calculated like this:
>
> (value && dependency) || select
>
> where the value is the user choice (if available and the symbol is
> visible) or default.
>
> In this case it means SERIO and SERIO_I8042 are both set to y due to their
> default and if SERIO didn't had the default, then the SERIO_I8042 value
> would be limited to m due to the dependency.
>
> I tested this patch with more 10000 random configs and above case is the
> only the difference that showed up, so I hope there is nothing that
> depended on the old more complex and subtle rules.
Thanks for the explanation. I was just going to patch/RFC a trivial
patch that fixes the build, but is probably not optimal, even if we
didn't have your patch. (see below)
---
From: Randy Dunlap <[EMAIL PROTECTED]>
Adrian Bunk pointed out a kernel config file that contained:
CONFIG_X86=y
# CONFIG_EMBEDDED is not set
CONFIG_SERIO=m
CONFIG_SERIO_I8042=y
which happens to cause:
serio.out:ERROR: "i8042_command" [drivers/misc/acer-wmi.ko] undefined!
serio.out:ERROR: "i8042_command" [drivers/leds/leds-clevo-mail.ko] undefined!
The full config file also contains:
# CONFIG_X86_PC is not set
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
CONFIG_X86_GENERICARCH=y
# CONFIG_X86_ES7000 is not set
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_VSMP is not set
and drivers/input/keyboard/Kconfig says:
config KEYBOARD_ATKBD
tristate "AT keyboard" if EMBEDDED || !X86_PC
default y
select SERIO
select SERIO_LIBPS2
select SERIO_I8042 if X86_PC
select SERIO_GSCPS2 if GSC
Changing the !X86_PC to !X86 fixes the build issue. However, some of the
CONFIG_X86_* variants may not care for it.
Signed-off-by: Randy Dunlap <[EMAIL PROTECTED]>
---
drivers/input/keyboard/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.25-rc1.orig/drivers/input/keyboard/Kconfig
+++ linux-2.6.25-rc1/drivers/input/keyboard/Kconfig
@@ -13,7 +13,7 @@ menuconfig INPUT_KEYBOARD
if INPUT_KEYBOARD
config KEYBOARD_ATKBD
- tristate "AT keyboard" if EMBEDDED || !X86_PC
+ tristate "AT keyboard" if EMBEDDED || !X86
default y
select SERIO
select SERIO_LIBPS2
-
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html