My problem was: After running a recent 2.4.x kernel, on a subsequentboot of Linux, all configurable devices (internal modem, audio chip,parallel, serial and IR ports) were disabled. This would causesoopses in my sound device drivers.

My workarounds were:(1) to reinitialize the BIOS prior to booting, or,(2) to run "setpnp on" on all the configurable devices early in the boot sequence.

I just now figured out what was going on. When the PnP BIOS isgoing to boot a non-PnP OS, it configures all configurable devicesitself. When the PnP BIOS is going to boot a PnP OS (which ittells from a "boot flag") it leaves configurable devices, otherthan those needed to boot the OS, unconfigured. Recent Linuxkernels have set the "boot flag" indicating that the OS being bootedis a PnP OS.

Unfortunately, Linux isn't really a "PnP OS". The kernel alonedoesn't configure the devices. One has to use setpnp to do that.

On the ThinkPad there is an additional solution:(3) Disable QuickBoot in EasySetup Config (the BIOS setup program)

The PnP BIOS mode in which it refrains from configuring theconfigurable devices (because it thinks it's booting a PnP OS)is called "QuickBoot" on the ThinkPad. Recent Linux kernels switchon QuickBoot. However if QuickBoot is disabled in EasySetup thenthe boot flag is ignored and the PnP BIOS goes ahead and configuresthe devices itself. One can still use setpnp to reconfigure thedevices, so this doesn't create a problem.

The best solution, though, is(4) to modify Linux so that it doesn't set the QuickBoot boot flag.The problem isn't just that Linux isn't a PnP OS. It's that Linuxcan't possibly know in a multi-boot setup WHICH OS is going to bebooted _next_. So it just shouldn't futz with that boot flag.Instead, control over the flag should be given to the user viaa /proc entry or something like that. I append a short patchto remove the bit of code that sets the boot flag. (I see wherethe function also zeroes out the sbf value if it appears not to bea valid value. That seems rather rash to me, but I leave italone because I don't understand why it's there.)

Thanks to ebiederm@xmission.com for pointing me to the bootflagcode, of whose existence I was until recently unaware.