Subject: port-i386/11304: [rkb] New PNPBIOS code claims devices are disabled too eagerly
To: None <gnats-bugs@gnats.netbsd.org>
From: None <rafal@mediaone.net>
List: netbsd-bugs
Date: 10/24/2000 06:20:09
>Number:         11304
>Category:       port-i386
>Synopsis:       New PNPBIOS code claims previously-working devices are disabled
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    port-i386-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Oct 24 06:20:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Rafal Boni
>Release:        Any post-1.4 current after ~ 5/11/2000, all post-1.5 currents
>Organization:
Highly unlikely
>Environment:
	DEC VP765 laptop with PhoenixBIOS 6.0 release 4.0

	working kernel: NetBSD 1.4X (GROO) #0: Sun Apr 30 21:29:36 EDT 2000
    			root@cyclops:/extra/src/sys/arch/i386/compile/GROO

	broken kernel: 

>Description:

All the PNPBIOS nodes that were previously (with the 1.4X kernel) attached
are claimed 'disabled' by the 1.5H kernel I just booted on this laptop...
Note that this is the first time I've upgraded the kernel on the laptop
since the 1.4X.

Kernel autoconfig output attached for both the 1.4X kernel and the new
1.5H kernel.  Note specifically the following PNP-Id's: PNP0501, PNP0401,
CSC0000.  

The problem is directly related to the changes in rev 1.16 of `pnpbios.c' -- 
whereas the 1.4X kernel queried the PNPBIOS for the static configuration, 
the 1.5H kernel asks for dynamic configuration first.  On this laptop, the
dynamic configuration returns an empty resource list, leading the kernel
PNPBIOS code to decide the device is disabled.

NetBSD 1.4X (GROO) #0: Sun Apr 30 21:29:36 EDT 2000
    root@cyclops:/extra/src/sys/arch/i386/compile/GROO
[...]
mainbus0 (root)
pnpbios0 at mainbus0: code f0000, data 400, entry 9b94, control 1 eventp 4b4
pnpbios0: nodes 17, max len 164
pnpbios0: not docked
PNP0200 (io 0-f 81-8f c0-df, dma 4) at pnpbios0 index 0 ignored
PNP0000 (io 20-21 a0-a1, irq 2) at pnpbios0 index 1 ignored
PNP0100 (io 40-43, irq 0) at pnpbios0 index 2 ignored
PNP0B00 (io 70-71 72-73, irq 8) at pnpbios0 index 3 ignored
PNP0C02 (mem fff80000-ffffffff, io 80 401-407) at pnpbios0 index 4 ignored
PNP0C01 (mem 0-9ffff e0000-fffff 100000-5ffffff) at pnpbios0 index 5 ignored
PNP0303 (io 60 64, irq 1) at pnpbios0 index 6 ignored
PNP0C04 (io f0-ff, irq 13) at pnpbios0 index 7 ignored
PNP0800 (io 61) at pnpbios0 index 8 ignored
PNP0A03 (io cf8-cff) at pnpbios0 index 9 ignored
PNP0C02 (io 4d0-4d1 8000-803f 2180-218f) at pnpbios0 index 10 ignored
com0 at pnpbios0 index 11 (PNP0501)
com0: io 3f8-3ff, irq 4
com0: ns16550a, working fifo
lpt0 at pnpbios0 index 16 (PNP0401)
lpt0: io 378-37f 778-77f, irq 7, dma 0
wss0 at pnpbios0 index 17 (CSC0000)
wss0: io 530-537 388-38b 220-22f, irq 5, dma 1 3
wss0: CS4237B
audio0 at wss0: full duplex, mmap
opl0 at wss0: model OPL3
midi0 at opl0: WSS Yamaha OPL3
CSC0010 (io f00-f07) at pnpbios0 index 21 ignored
PNP0F13 (irq 12) at pnpbios0 index 22 ignored
PNP0700 (io 3f0-3f5 3f7, irq 6, dma 2) at pnpbios0 index 26 ignored
[...]

NetBSD 1.5H (GROO.gdb) #4: Tue Oct 24 08:49:49 EDT 2000
    rafal@groo-the-wanderer.waterside.net:/usr/src/sys/arch/i386/compile/GROO.gdb
[...]
mainbus0 (root)
pnpbios0 at mainbus0: code f0000, data 400, entry 9b94, control 1 eventp 4b4
pnpbios0: nodes 17, max len 164
pnpbios0: not docked
PNP0200 (io 0-f 81-8f c0-df, dma 4) at pnpbios0 index 0 ignored
PNP0000 (io 20-21 a0-a1, irq 2) at pnpbios0 index 1 ignored
PNP0100 (io 40-43, irq 0) at pnpbios0 index 2 ignored
PNP0B00 (io 70-71 72-73, irq 8) at pnpbios0 index 3 ignored
PNP0C02 (mem fff80000-ffffffff, io 80 401-407) at pnpbios0 index 4 ignored
PNP0C01 (mem 0-9ffff e0000-fffff 100000-5ffffff) at pnpbios0 index 5 ignored
PNP0303 (io 60 64, irq 1) at pnpbios0 index 6 ignored
PNP0C04 (io f0-ff, irq 13) at pnpbios0 index 7 ignored
PNP0800 (io 61) at pnpbios0 index 8 ignored
PNP0A03 (io cf8-cff) at pnpbios0 index 9 ignored
PNP0C02 (io 4d0-4d1 8000-803f 2180-218f) at pnpbios0 index 10 ignored
PNP0501 at pnpbios0 index 11 disabled
PNP0401 at pnpbios0 index 16 disabled
CSC0000, PNPB007 at pnpbios0 index 17 disabled
CSC0010 (io f00-f07) at pnpbios0 index 21 ignored
PNP0F13 (irq 12) at pnpbios0 index 22 ignored
PNP0700 (io 3f0-3f5 3f7, irq 6, dma 2) at pnpbios0 index 26 ignored
[...]

>How-To-Repeat:
	Boot a post 5/11/2000 PNPBIOS-enabled kernel on the VP765.
>Fix:
	Revert pnpbios rev 1.16 -- the people experiencing spontaneous
	reboots in the PNPBIOS code with rev 1.15 and older should look
	at PR port-i386/11299 and contact me to see if that applies...

	[The fix was not to query the dynamic vs. static configs, but to
	 map the right bits of memory for the PNPBIOS code before calling
	 into it...]

>Release-Note:
>Audit-Trail:
>Unformatted:
 		and probably 1.5-release as well.