# Hidden options in kernel configuration

## natka

Hi,

What makes some CONFIG_ options hidden from user in menuconfig (CONFIG_ZONE_DMA for example). My guess it's something in Kconfig files but I haven't been able to find it. 

Regards!

----------

## roarinelk

follow the "depends on" chain(s) of the option(s) you are interested in

----------

## natka

Thanks, but what I'm looking for, are not options that you can select based on dependencies. ZONE_DMA doesn't appear at all in menuconfig.

----------

## Ant P.

All config options are selected based on dependencies. The one you're trying to change depends on a boolean choice which depends on CONFIG_EXPERT, and if you have to ask you're probably not an expert.

----------

## wcg

```

cd /usr/src/linux

find -type f -name "Kconfig*" -exec fgrep -H "CONFIG_ZONE_DMA" {} \;

```

I use this from another virtual terminal when running "make oldconfig" and I have no clue

what some new .config option refers to. You can see what make menuconfig shows when

you select "help" this way, see what subsystem a .config option is in, see what dependencies

are listed or where that option is listed as a dependency of something else, etc. (One could

use grep or egrep, too. I simply assume that fgrep is faster because it has less options to

consider when determining if there is a match with the search string.)

----------

## natka

 *wcg wrote:*   

> 
> 
> I use this from another virtual terminal when running "make oldconfig" and I have no clue
> 
> what some new .config option refers to.

 

That's exactly the reason I started this thread. I've been using kernel.xc.net while upgrading kernels, but there is no config for 3.x. Usually I would do make menuconfig on old configuration, and diff result with previous .config. With kernel.xc.net I'd know right away if new option is hidden ( not configurable directly ) or is it up to user to turn it on/off. Unfortunately I didn't find what makes some options  hidden from user. 

 *Ant P. wrote:*   

> 
> 
> The one you're trying to change depends on a boolean choice which depends on CONFIG_EXPERT
> 
> 

 

But under config ZONE_DMA there is no 

```
bool if EXPERT
```

----------

## Ant P.

 *natka wrote:*   

> But under config ZONE_DMA there is no 
> 
> ```
> bool if EXPERT
> ```
> ...

 

Which architecture are you using?

```
/usr/src/linux $ ack -A2 'config ZONE_DMA' arch/x86/Kconfig

config ZONE_DMA

   bool "DMA memory allocation support" if EXPERT

   default y
```

----------

## natka

 *Ant P. wrote:*   

> 
> 
> Which architecture are you using?
> 
> 

 

Whoops, Sorry!. Turns out ZONE_DMA isn't good example. In 3.0.4 it depends on EXPERT but in 2.6.39 it doesn't, however it still proves that not all configuration options are available in menuconfig.It can only be visible in > 3.0 ... unless I'm mistaken again...

----------

## NeddySeagoon

natka,

You are correct, not all kernel config options are visible to the user.

Those that are never under direct user control. They are controlled by such things as the arch you want to build the kernel for and the settings of the currently visible options.

e.g. if you set 

```
SCSI low-level drivers
```

off, then all the options for the individual SCSI chipsets vanish and are set to off. Thats a whole menu, so thats probably obvious.

For 64 bit kernels, the option Support for large (2TB+) block devices and files (LBDAF) is hidden and not required.  On 32 bit kernels, default ext4 filesystems become read only if its set off.

A more subtle example is this error message from emerge ndiswrapper ...

```
 * Found sources for kernel version:

 *     3.1.0-gentoo

 * Checking for suitable kernel configuration options...

 *   Your kernel does not support WEXT_PRIV. To enable it you need to enable a wireless driver that enables it, for example PRISM54 or IPW2200
```

Which is a case of an out of kernel module depending on a kernel configuration item that is never under direct user control.

If you want to see everything, use 

```
make xconfig
```

and turn on Show All Options.  It really means all too.

----------

## natka

Thanks for explanation NeddySeagoon! Have you got an idea what makes these options ''permanently'' hidden ? I see no difference from normal options in Kconfig files. Usually they have no description, but that's not it, there is a lot of normal options without description.

----------

## NeddySeagoon

natka,

Sorry, I don't know

----------

