LKML Archive on
help / color / mirror / Atom feed
From: Thomas Hood <>
Subject: Linux should not set the "PnP OS" boot flag
Date: 05 Oct 2001 23:35:53 -0400	[thread overview]
Message-ID: <1002339356.814.45.camel@thanatos> (raw)

My problem was: After running a recent 2.4.x kernel, on a subsequent
boot of Linux, all configurable devices (internal modem, audio chip,
parallel, serial and IR ports) were disabled.  This would causes
oopses 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 is
going to boot a non-PnP OS, it configures all configurable devices
itself.  When the PnP BIOS is going to boot a PnP OS (which it
tells from a "boot flag") it leaves configurable devices, other
than those needed to boot the OS, unconfigured.  Recent Linux
kernels have set the "boot flag" indicating that the OS being booted
is a PnP OS.

Unfortunately, Linux isn't really a "PnP OS".  The kernel alone
doesn'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 the
configurable devices (because it thinks it's booting a PnP OS)
is called "QuickBoot" on the ThinkPad.  Recent Linux kernels switch
on QuickBoot.  However if QuickBoot is disabled in EasySetup then
the boot flag is ignored and the PnP BIOS goes ahead and configures
the devices itself.  One can still use setpnp to reconfigure the
devices, 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 Linux
can't possibly know in a multi-boot setup WHICH OS is going to be
booted _next_.  So it just shouldn't futz with that boot flag.
Instead, control over the flag should be given to the user via
a /proc entry or something like that.  I append a short patch
to remove the bit of code that sets the boot flag.  (I see where
the function also zeroes out the sbf value if it appears not to be
a valid value.  That seems rather rash to me, but I leave it
alone because I don't understand why it's there.)

Thanks to for pointing me to the bootflag
code, of whose existence I was until recently unaware.

Thomas Hood

The patch:
--- linux-2.4.10-ac5/arch/i386/kernel/bootflag.c	Fri Oct  5 14:57:10 2001
+++ linux-2.4.10-ac5-fix/arch/i386/kernel/bootflag.c	Fri Oct  5 23:20:43 2001
@@ -119,7 +119,7 @@
 	u8 v = sbf_read();
 		v = 0;
-#if defined(CONFIG_PNPBIOS)
+#if 0            // WAS: #if defined(CONFIG_PNPBIOS)
 	/* Tell the BIOS to fast init as we are a PnP OS */
 	v |= (1<<0);	/* Set PNPOS flag */

             reply	other threads:[~2001-10-06  3:36 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-06  3:35 Thomas Hood [this message]
2001-10-06 19:24 ` Eric W. Biederman
2001-10-06 21:11   ` Alan Cox
2001-10-07  1:08     ` Eric W. Biederman
2001-10-07  2:54 Thomas Hood
2001-10-07 10:02 ` Alan Cox
2001-10-07 13:50   ` Thomas Hood
2001-10-07 14:07     ` Dave Jones
2001-10-07 14:18     ` Alan Cox
2001-10-07 17:10       ` Thomas Hood
2001-10-07 21:59         ` Alan Cox
2001-10-07 17:54       ` Thomas Hood
2001-10-08 12:40 Thomas Hood
2001-10-08 13:25 ` Stelian Pop
2001-10-08 22:12   ` J.D. Hood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1002339356.814.45.camel@thanatos \ \ \ \
    --subject='Re: Linux should not set the "PnP OS" boot flag' \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).