I agree that it's close to hierarchical. But it's literally the exceptions
that get you.
Let me mention (again) USB_STORAGE and ATA.
They are not "under" SCSI. Making them do that would be insane.
But yes, you can do hierarchies by adding "pseudo-variables": as
mentioned several times, we could actually split CONFIG_SCSI into two
separate ones: CONFIG_SCSI that selects the core infrastructure, and
CONFIG_SCSI_DRIVER that actually controls the "hierarchical visibility".
Then CONFIG_SCSI_DRIVER (and USB_STORAGE, and SATA) would just do a simple
'select SCSI'. It would _not_ be hierarchical, and it would very much use
that same old "select", but it would possibly be a cleanup at least in the
sense that now CONFIG_SCSI wouldn't be used two different ways (one to
hide most SCSI drivers, and one to enable the core SCSI infrastructure
code).
I tend to just edit the .config file, and run "make oldconfig". And I know
I'm not the only one, because I've talked to others who do the same.
And yes, then it's almost always correct to "turn things on as needed to
make everything work out right", while turning things off would be
actively wrong.
Linus
-