Summary of PnP BIOS problems

Thomas Hood (jdthoodREMOVETHIS@yahoo.co.uk)
Fri, 21 Sep 2001 17:31:46 -0400


I have been looking into the cause of my PnP BIOS woes recently
and FYI here is what I've found out.

1) setpnp contains a bug such that arguments of 0 given to the
irq or dma command cause setpnp to disable the irq or dma.
setpnp ought to (try to) set the irq or dma to zero. The
way to disable an irq or dma is to do this:
setpnp -- 0b irq -1
(The '--' is required so that the '-1' isn't mistaken for an
option.)
A patch has been submitted to the pcmcia-cs bug tracking
system.

2) parport_pc.c contains a bit of mysterious code that rejects
the assignment of DMA0. parport_pc treats this as if it
meant "disabled". This was discussed in another thread.
I suspect that the rejection of DMA0 is unnecessary, but
I may well be wrong. The current code should at least be
commented ... by someone who knows for sure why the code
is there.

3) pnp_bios.c contained a bug (fixed in -ac13) such that the
driver would report disabled irqs as IRQ0. (It ought to
report a disabled irq as irq -1.)

4) pnp_bios.c swaps the "boot" and "current" configurations.
The result is that on my ThinkPad "setpnp -b 0b irq 7" changes
the current configuration while "setpnp 0b irq 7" changes
the boot configuration. Also, "setpnp on" copies the current
to the boot config instead of vice versa. There may be
other strange side-effects of this. I have just submitted
a patch to fix this.

5) The pnpbios driver queries the BIOS for all PnP devices at
init time, then it acts as if the configurations of these
devices never change, whereas setpnp does change the
configurations. Code is needed that will fix this, but
only for machines whose BIOSes won't crash the machine if
they are called later than init time. Once the preceding
issues have been addressed (in a couple of weeks) I'll try
to implement this fix ... unless someone more competent than
myself wants to volunteer. :)

6) There remains a problem that I haven't yet figured out:
On my ThinkPad 600, running the recent -ac kernels (at
least since 2.4.7) does something to the PnP BIOS such
that on a subsequent reboot, the current configuration
of all configurable devices is set to "disable". I am
currently working around this problem by running setpnp
during my boot sequence (which is why I have been so
interested in the pnpbios driver of late). The bug
should be fixed properly, but I have no idea where the
bug might be. Anyone have any ideas?

7) While I'm at it I might as well ask a question that I asked
before: Would it be possible to connect the isa-pnp driver
to the pnpbios driver in such a way that device drivers
would not have to query both in order to determine the
hardware config. What I have in mind is that the isa-pnp
driver would call pnpbios if PnP setup was done by the
BIOS; otherwise it would go ahead and do the PnP configuration
itself, as usual. If this could be implemented then it
would save us having to make all the device drivers pnpbios-
aware.

Thomas Hood
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/