[lkml]   [2000]   [Mar]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: PNP design philosophy?
On Thu, 9 Mar 2000, Peter Leif Rasmussen wrote:

> First, excuse me but I am not on this list (too busy), but keeps up by
> reading Kernel Traffic @ LinuxCare. I have compiled almost every release
> of 2.3.* and with 2.3.50 wondered about the following.
> What is the design philosophy of resource management in the kernel and
> what should I expect in 2.4?
> Specifically I am interested in IRQ, DMA and IO, but I suppose there is
> more to it, and what dependance is expected on the BIOS in i386?
> What worries me is that I have in one present i386 system:
> 1.Legacy ISA cards
> 2.ISA PNP cards
> 3.PCI cards
> 4.AGP card
> 5.USB
> 6.Basic stuff like keyboard, mouse, serial, parallel, etc.

I don't understand how you could possibly have an AGP card on an i386 or
any PCI or USB. Perhaps you are referring to "ix86"??

The keyboard/mouse/serial/parallel are all handled by the kernel. There
is no dependence upon the BIOS. I note that startup code insists in using
the BIOS to set the keyboard repeat-rate, but that can be handled by
the kernel after the system is booted so even it it didn't work it can
be fixed once the system is up.

> And here I don't seem to be able to specify for the kernel what IRQ, DMA
> and IO port I want to go where. For example an ISA-PNP soundcard no longer
> lets me tell it what IRQ, DMA and IO I want it to use because it gets it from
> the PNP code. And I can't see that I am able to tell the PNP code what
> resources I want to go where?

Once the kernel is booted, it does not use the BIOS. However, when it
is starting, still in 'real' mode, the boot code gets and saves
information about the system from the BIOS. Often this information is
wrong. For instance, there is a short word that is supposed to contain
the total memory in kilobytes. 65535 * 1024 = 67,107,864. What happens
if you have more? Simple, there is another BIOS hack that is supposed
to handle it. However, some do, some don't.

You can override possibly bad information, for drivers that support
command-lines, by adding the appropriate command into the LILO loader
configuration file.

Some drivers don't support parameters that are different from their
defaults because:

(1) Physical connections do not exist, i.e., if a port is at 0x300,
it's at 0x300. Nothing can be done about it. Same thing for some

(2) Old drivers, especially for ISA, may never have been envisioned
for this capability. In particular, shared interrupts were not available
until recently. They require the APIC because, even though the 8259
could be set up for level, the ISA bus had pull-up resistors making
sharing an IRQ line impossible.

(3) Some information is simply wrong and you get a better chance by
just turning OFF PNP in the BIOS. For instance, I have a BusLogic
SCSI controller which, although the BIOS finds it, the kernel won't
unless PNP is turned OFF. The ASUS P2B-D/P2B-DS AGP mainboard BIOS
has this problem.

I just let the kernel find it without being confused by the bad info
it has picked up during boot. I just turn OFF PNP.

> In the particular system, I have to set up the BIOS manually to configure those
> resources, and that makes my PNP capable Linux kernel dependant on the i386
> BIOS, which in my book isn't good, because I could have a machine with a BIOS
> without that capability. I would prefer to just set everything to automatic in
> the BIOS (or nothing at all) and fiddle with the resources in the kernel.

The kernels support initialization of the APIC, this is where it gets
information about the devices.

Execute `dmesg` >junk and look at the initialization sequence.

Dick Johnson

Penguin : Linux version 2.3.41 on an i686 machine (800.63 BogoMips).

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:56    [W:0.078 / U:33.488 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site