Skip to contentSkip to conversation

2.6: Problem multiple bool/tristate prompts

DISCUSSION Adrian Bunk 2 participants 4 messages Aug 7, 2003 – Aug 8, 2003

lore
Share & tools
lore
#0 lore raw

Hi Roman,

I observed a problem with the following Kconfig snippet I tried to add to 2.6.0-test2-mm5:

config BLK_DEV_PS2
tristate "PS/2 ESDI hard disk support" if BROKEN_MODULAR bool "PS/2 ESDI hard disk support" if !BROKEN_MODULAR

Every "make *config" gives the warning

drivers/block/Kconfig:45: prompt redefined drivers/block/Kconfig:45:warning: type of 'BLK_DEV_PS2' redefined from 'tristate' to 'boolean'

and the symbol is handled as tristate although BROKEN_MODULAR isn't defined.

cu
Adrian

Signature · 4 lines
       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed
#1 lore raw

Hi,

Quoted 5 lines · Adrian Bunk

config BLK_DEV_PS2
tristate "PS/2 ESDI hard disk support" if BROKEN_MODULAR bool "PS/2 ESDI hard disk support" if !BROKEN_MODULAR

Quoted 8 lines

Every "make *config" gives the warning

drivers/block/Kconfig:45: prompt redefined drivers/block/Kconfig:45:warning: type of 'BLK_DEV_PS2' redefined from 'tristate' to 'boolean'

and the symbol is handled as tristate although BROKEN_MODULAR isn't defined.

A symbol can have only a single type and the warning is a bit misleading, the new type definition is simply ignored.
I'm not sure what you're trying makes really sense, but you have to use a separate symbol:

config BLK_DEV_PS2_B
bool "PS/2 ESDI hard disk support" if !BROKEN_MODULAR

config BLK_DEV_PS2
tristate "PS/2 ESDI hard disk support" if BROKEN_MODULAR default BLK_DEV_PS2_B

bye, Roman

#2 lore raw
Quoted 15 lines · Roman Zippel

Hi,

Quoted 11 lines · Adrian Bunk

config BLK_DEV_PS2
tristate "PS/2 ESDI hard disk support" if BROKEN_MODULAR bool "PS/2 ESDI hard disk support" if !BROKEN_MODULAR

Every "make *config" gives the warning

drivers/block/Kconfig:45: prompt redefined drivers/block/Kconfig:45:warning: type of 'BLK_DEV_PS2' redefined from 'tristate' to 'boolean'

Quoted 6 lines
Quoted 2 lines

and the symbol is handled as tristate although BROKEN_MODULAR isn't defined.

A symbol can have only a single type and the warning is a bit misleading, the new type definition is simply ignored.
I'm not sure what you're trying makes really sense, but you have to use a

I made a patch that lets all broken drivers depend on an (undefined) BROKEN symbol and all drivers that don't compile on SMP on a BROKEN_ON_SMP symbol that is only defined if !SMP.

This (undefined) BROKEN_MODULAR was an attempt to express that a driver compiles only statically.

Quoted 8 lines

separate symbol:

config BLK_DEV_PS2_B
bool "PS/2 ESDI hard disk support" if !BROKEN_MODULAR

config BLK_DEV_PS2
tristate "PS/2 ESDI hard disk support" if BROKEN_MODULAR default BLK_DEV_PS2_B

It's too complicated to be actually useful, but it seems I'd then need a

config BLK_DEV_PS2_TRISTATE
tristate "PS/2 ESDI hard disk support"
depends on BROKEN_MODULAR
default y if BLK_DEV_PS2=y
default m if BLK_DEV_PS2=m

config BLK_DEV_PS2_BOOL
bool "PS/2 ESDI hard disk support"
depends on !BROKEN_MODULAR
default y if BLK_DEV_PS2=y

config BLK_DEV_PS2

	default y if BLK_DEV_PS2_TRISTATE=y || BLK_DEV_PS2_BOOL
	default m if BLK_DEV_PS2_TRISTATE=m

Alternatively it might work with BLK_DEV_PS2_TRISTATE and BLK_DEV_PS2_BOOL using select.

My problem isn't that important to satisfy such a complicated construct, I can accept that there's no easy way to express this and live without it.

Quoted 1 line

bye, Roman

cu
Adrian

Signature · 4 lines
       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed
#3 lore raw

Hi,

Quoted 3 lines · Adrian Bunk

My problem isn't that important to satisfy such a complicated construct, I can accept that there's no easy way to express this and live without it.

Dynamically changing the symbol type isn't possible and usally not needed, if the driver can't be compiled as module, it has to use 'bool'. I'm planning to add tags (e.g. for EXPERIMENTAL), maybe in this context it will be easier, to better classify the brokenness of a driver, but this will definitively not happen for 2.6.

bye, Roman