2002-11-04 02:48:41

by CaT

[permalink] [raw]
Subject: 2.5.45 / boottime oops (pnp bios I think)

When I unselect PNP BIOS the kernel boots fine. With it I get the
oops below. Please note that it was typed out manually and that that was
all that I could get as I could not scroll up or down in any way.

The PC is a Gateway laptop.

If you need more info, please holler.

CPU: 0
EIP: 0088:[<0000922d>] Not tainted
EFLAGS: 00010046
EIP is at E Using_Versions+0x992c/0xc01172bf
eax: 00000040 ebx: 00009bd1 ecx: 00150000 edx: 00000005
esi: 0000c1b1 edi: 00000000 ebp: cffa1e0c esp: cffa1db8
ds: 0090 es: 00a0 ss: 0068
Process swapper (pid: 1, threadinfo=cffa0000 task:c129e040)
Stack: c1f60090 9bd10005 c1d03032 c1940003 0a110011 0018c157 x1449bcb 0000c130
c11b9bca 0000c109 00030000 1e0c0000 1dfecffa 9bb2cffa 00000000 00180000
03010015 x7110000 02f8bc81 be12bcfc bdc70300 c776bdef 000001d0 1e84db40
Call Trace:
[<c012ed0e>] cache_alloc_refill+0x1fa/0x260
[<c015143e>] inode_init_once+0x10a/0x110
[<c012f104>] kmem_cache_alloc+0xbc/0xc8
[<c027217c>] __pnp_bios_get_dev_node+0x120/0x17c
[<c0210000>] uart_shutdown+0x6c/0xc4
[<c02721ee>] pnp_bios_get_dev_node+0x16/034
[<c010508b>] init+0x33/0x188
[<c0105058>] init+0x0/0x188
[<c01054f9>] kernel_thread_helper+0x5/0xc

Code: Bad EIP value.
<0>Kernel panic: Attempted to kill init

--
All people are equal,
But some are more equal then others.
- George W. Bush Jr, President of the United States
September 21, 2002 (Abridged version of security speech)


2002-11-04 12:37:19

by Alan

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Mon, 2002-11-04 at 02:54, CaT wrote:
> When I unselect PNP BIOS the kernel boots fine. With it I get the
> oops below. Please note that it was typed out manually and that that was
> all that I could get as I could not scroll up or down in any way.
>
> The PC is a Gateway laptop.

Buggy PnP bios please provide dmidecode output for that box

2002-11-04 13:39:59

by CaT

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Mon, Nov 04, 2002 at 01:05:32PM +0000, Alan Cox wrote:
> On Mon, 2002-11-04 at 02:54, CaT wrote:
> > When I unselect PNP BIOS the kernel boots fine. With it I get the
> > oops below. Please note that it was typed out manually and that that was
> > all that I could get as I could not scroll up or down in any way.
> >
> > The PC is a Gateway laptop.
>
> Buggy PnP bios please provide dmidecode output for that box

Is this what you wanted?

SYSID present.
SMBIOS present.
DMI 0.0 present.
35 structures occupying 1144 bytes.
DMI table at 0x000D0010.
Handle 0x0000
DMI type 0, 20 bytes.
BIOS Information Block
Vendor Gateway
Version 22.07
Release 01/31/2001
BIOS base 0xE5D90
ROM size 448K
Capabilities:
Flags: 0x000000007C3BDF90
Handle 0x0001
DMI type 1, 25 bytes.
System Information Block
Vendor Gateway
Product Solo5300
Version Rev 1.0
Serial Number 0001653781
Handle 0x0002
DMI type 2, 8 bytes.
Board Information Block
Vendor Gateway
Product Solo5300
Version Rev 1.0
Serial Number None
Handle 0x0003
DMI type 3, 17 bytes.
Chassis Information Block
Vendor Gateway
Product ??A
Version N/A
Serial Number None
Asset Tag No Asset Tag
Handle 0x0004
DMI type 4, 35 bytes.
Handle 0x0005
DMI type 5, 20 bytes.
Handle 0x0006
DMI type 6, 12 bytes.
Memory Bank
Socket: J2
Banks: 0 1
Type:
Installed Size: 128Mbyte (Double sided)
Enabled Size: 128Mbyte (Double sided)
Handle 0x0007
DMI type 6, 12 bytes.
Memory Bank
Socket: J3
Banks: 2 3
Type:
Installed Size: 128Mbyte (Double sided)
Enabled Size: 128Mbyte (Double sided)
Handle 0x0008
DMI type 7, 19 bytes.
Cache
Socket: L1 Cache
L1 socketed Internal Cache: write-back
L1 Cache Size: 32K
L1 Cache Maximum: 32K
L1 Cache Type: Asynchronous
Handle 0x0009
DMI type 7, 19 bytes.
Cache
Socket: L2 Cache
L2 socketed External Cache: write-back
L2 Cache Size: 512K
L2 Cache Maximum: 256K
L2 Cache Type: Burst
Handle 0x000A
DMI type 8, 9 bytes.
Handle 0x000B
DMI type 8, 9 bytes.
Handle 0x000C
DMI type 8, 9 bytes.
Handle 0x000D
DMI type 8, 9 bytes.
Handle 0x000E
DMI type 8, 9 bytes.
Handle 0x000F
DMI type 8, 9 bytes.
Handle 0x0010
DMI type 8, 9 bytes.
Handle 0x0011
DMI type 8, 9 bytes.
Handle 0x0012
DMI type 8, 9 bytes.
Handle 0x0013
DMI type 9, 13 bytes.
Card Slot
Slot: Mini PCI Slot J20
Type: 32bit PCI
Status: In use.
Slot Features: 5v 3.3v
Handle 0x0014
DMI type 9, 13 bytes.
Card Slot
Slot: CardBUS 0
Type: 32bit PCMCIA VLB
Slot Features: 5v 3.3v PCCard16 CardBus Zoom-Video ModemRingResume
Handle 0x0015
DMI type 9, 13 bytes.
Card Slot
Slot: CardBUS 1
Type: 32bit PCMCIA VLB
Slot Features: 5v 3.3v PCCard16 CardBus Zoom-Video ModemRingResume
Handle 0x0016
DMI type 10, 10 bytes.
Handle 0x0017
DMI type 11, 5 bytes.
OEM Data
Gateway Solo 5300 Mobile System
Handle 0x0018
DMI type 16, 15 bytes.
Handle 0x0019
DMI type 17, 27 bytes.
Handle 0x001A
DMI type 17, 27 bytes.
Handle 0x001B
DMI type 19, 15 bytes.
Handle 0x001C
DMI type 20, 19 bytes.
Handle 0x001D
DMI type 20, 19 bytes.
Handle 0x001E
DMI type 21, 7 bytes.
Handle 0x001F
DMI type 22, 26 bytes.
Handle 0x0020
DMI type 22, 26 bytes.
Handle 0x0021
DMI type 32, 20 bytes.
Handle 0x0022
DMI type 127, 4 bytes.

--
All people are equal,
But some are more equal then others.
- George W. Bush Jr, President of the United States
September 21, 2002 (Abridged version of security speech)

2002-11-04 13:53:14

by Alan

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Mon, 2002-11-04 at 13:46, CaT wrote:
> On Mon, Nov 04, 2002 at 01:05:32PM +0000, Alan Cox wrote:
> > On Mon, 2002-11-04 at 02:54, CaT wrote:
> > > When I unselect PNP BIOS the kernel boots fine. With it I get the
> > > oops below. Please note that it was typed out manually and that that was
> > > all that I could get as I could not scroll up or down in any way.
> > >
> > > The PC is a Gateway laptop.
> >
> > Buggy PnP bios please provide dmidecode output for that box
>
> Is this what you wanted?

Thanks. I've added a rule to my tree to disable the pnp bios on that box

2002-11-04 21:04:56

by Adam Belay

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Mon, Nov 04, 2002 at 01:54:59PM +1100, CaT wrote:
> When I unselect PNP BIOS the kernel boots fine. With it I get the
> oops below. Please note that it was typed out manually and that that was
> all that I could get as I could not scroll up or down in any way.
>
> The PC is a Gateway laptop.
>
> If you need more info, please holler.
>

Instead of adding your PnP BIOS to the black list, I may know a way to
support it completely even though it is broken.

To prove this idea could you please do the following:

1.) apply patch 1 (attached below) to a clean kernel (2.5.45). Compile the
kernel with PnP BIOS support and list the last few messages that start with
"pnp!!!:" before it panics. You probably will want to have kernel debugging
off so it doesn't scroll the messages off the screen.

2.) Apply patch 2 (attached below) to a clean kernel (2.5.45). Compile the
kernel with PnP BIOS support. It should start up completely without a panic.
This is not a complete fix however. Anyway attach a copy of the output from
dmesg.

If my theory is correct I will have a fix out soon.

thanks,
Adam


patch 1---------------------------------------------------------------------

diff -ur stock/drivers/pnp/pnpbios/core.c debug/drivers/pnp/pnpbios/core.c
--- stock/drivers/pnp/pnpbios/core.c Thu Oct 31 00:41:38 2002
+++ debug/drivers/pnp/pnpbios/core.c Mon Nov 4 15:48:56 2002
@@ -1421,6 +1421,7 @@
memcpy(dev->name,"Unknown Device",13);
dev->name[14] = '\0';
pnpid32_to_pnpid(node->eisa_id,id);
+ printk(KERN_ERR "PNP!!!: Node number: 0x%x EISA ID: %s\n", (unsigned int)thisnodenum, id);
memcpy(dev_id->id,id,8);
pnp_add_id(dev_id, dev);
pos = node_current_resource_data_to_dev(node,dev);



patch 2---------------------------------------------------------------------

diff -ur stock/drivers/pnp/pnpbios/core.c debug/drivers/pnp/pnpbios/core.c
--- stock/drivers/pnp/pnpbios/core.c Thu Oct 31 00:41:38 2002
+++ debug/drivers/pnp/pnpbios/core.c Mon Nov 4 15:50:41 2002
@@ -1405,7 +1405,7 @@
* asking for the "current" config causes some
* BIOSes to crash.
*/
- if (pnp_bios_get_dev_node(&nodenum, (char )0 , node))
+ if (pnp_bios_get_dev_node(&nodenum, (char )1 , node))
break;
nodes_got++;
dev = pnpbios_kmalloc(sizeof (struct pnp_dev), GFP_KERNEL);
@@ -1421,6 +1421,7 @@
memcpy(dev->name,"Unknown Device",13);
dev->name[14] = '\0';
pnpid32_to_pnpid(node->eisa_id,id);
+ printk(KERN_ERR "PNP!!!: Node number: 0x%x EISA ID: %s\n", (unsigned int)thisnodenum, id);
memcpy(dev_id->id,id,8);
pnp_add_id(dev_id, dev);
pos = node_current_resource_data_to_dev(node,dev);

2002-11-04 23:48:24

by CaT

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Mon, Nov 04, 2002 at 04:15:04PM +0000, Adam Belay wrote:
> On Mon, Nov 04, 2002 at 01:54:59PM +1100, CaT wrote:
> Instead of adding your PnP BIOS to the black list, I may know a way to
> support it completely even though it is broken.

Woo! :)

> To prove this idea could you please do the following:
>
> 1.) apply patch 1 (attached below) to a clean kernel (2.5.45). Compile the
> kernel with PnP BIOS support and list the last few messages that start with
> "pnp!!!:" before it panics. You probably will want to have kernel debugging
> off so it doesn't scroll the messages off the screen.

This is all that I could get:

PNP!!!: Node number: 0xa EISA ID: PNP0c02
pnp: 00:0a: iport range 0x4d0-0x4d1 has been reserved
pnp: 00:0a: iport range 0x8000-0x803f has been reserved
pnp: 00:0a: iport range 0x2180-0x218f has been reserved
PNP!!!: Node number: 0xc EISA ID: PNP0c02
PNP!!!: Node number: 0xd EISA ID: PNP0c02
PNP!!!: Node number: 0xe EISA ID: PNP0700
PNP!!!: Node number: 0x10 EISA ID: PNP0400
general protection fault: 0040
...

> 2.) Apply patch 2 (attached below) to a clean kernel (2.5.45). Compile the
> kernel with PnP BIOS support. It should start up completely without a panic.
>
> This is not a complete fix however. Anyway attach a copy of the output from
> dmesg.

No worries.

Linux version 2.5.45 (root@theirongiant) (gcc version 2.95.4 20011002 (Debian prerelease)) #8 Tue Nov 5 10:43:27 EST 2002
Video mode to be used for restore is 317
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e5c00 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000000fff0000 (usable)
BIOS-e820: 000000000fff0000 - 000000000ffffc00 (ACPI data)
BIOS-e820: 000000000ffffc00 - 0000000010000000 (ACPI NVS)
BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
255MB LOWMEM available.
On node 0 totalpages: 65520
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 61424 pages, LIFO batch:14
HighMem zone: 0 pages, LIFO batch:1
ACPI: RSDP (v000 PTLTD ) @ 0x000f6ba0
ACPI: RSDT (v001 PTLTD RSDT 01540.00007) @ 0x0fff9dcb
ACPI: FADT (v001 GATEWA SOLO5300 01540.00007) @ 0x0ffffb8c
ACPI: DSDT (v001 GATEWA SOLO5300 01540.00007) @ 0x00000000
ACPI: BIOS passes blacklist
ACPI: MADT not present
Building zonelist for node : 0
Kernel command line: auto BOOT_IMAGE=l ro root=305 video=vesa:ywrap,mtrr
Local APIC disabled by BIOS -- reenabling.
Could not enable APIC!
Initializing CPU#0
Detected 701.649 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 1388.54 BogoMIPS
Memory: 255644k/262080k available (1883k kernel code, 5740k reserved, 797k data, 112k init, 0k highmem)
Security Scaffold v1.0.0 initialized
Dentry cache hash table entries: 32768 (order: 6, 262144 bytes)
Inode-cache hash table entries: 16384 (order: 5, 131072 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: Before vendor init, caps: 0383f9ff 00000000 00000000, vendor = 0
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
CPU: After vendor init, caps: 0383f9ff 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: After generic, caps: 0383f9ff 00000000 00000000 00000000
CPU: Common caps: 0383f9ff 00000000 00000000 00000000
CPU: Intel Pentium III (Coppermine) stepping 03
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
mtrr: v2.0 (20020519)
Linux Plug and Play Support v0.9 (c) Adam Belay
pnp: the driver 'system' has been registered
PCI: PCI BIOS revision 2.10 entry at 0xfd96e, last bus=1
PCI: Using configuration type 1
Registering system device cpu0
adding '' to cpu class interfaces
BIO: pool of 256 setup, 14Kb (56 bytes/bio)
biovec pool[0]: 1 bvecs: 256 entries (12 bytes)
biovec pool[1]: 4 bvecs: 256 entries (48 bytes)
biovec pool[2]: 16 bvecs: 256 entries (192 bytes)
biovec pool[3]: 64 bvecs: 256 entries (768 bytes)
biovec pool[4]: 128 bvecs: 256 entries (1536 bytes)
biovec pool[5]: 256 bvecs: 256 entries (3072 bytes)
ACPI: Subsystem revision 20021022
tbxface-0099 [03] Acpi_load_tables : ACPI Tables successfully acquired
Parsing Methods:............................................................................................................
Table [DSDT] - 559 Objects with 50 Devices 108 Methods 27 Regions
ACPI Namespace successfully loaded at root c03f2a1c
evxfevnt-0074 [04] Acpi_enable : Transition to ACPI mode successful
evevent-0508: *** Info: GPE Block0 defined as GPE0 to GPE15
Executing all Device _STA and_INI methods:...........[ACPI Debug] String: MOON_2 Status
........[ACPI Debug] String: ISA_INI
[ACPI Debug] String: LPT Decode Enabled At Boot
[ACPI Debug] Integer: 0000000000000378
[ACPI Debug] String: COM1 Decode Enabled At Boot
[ACPI Debug] Integer: 00000000000003F8
[ACPI Debug] String: FDC Decode Enabled At Boot
[ACPI Debug] Integer: 00000000000003F0
[ACPI Debug] String: General-Purpose Decode #12 Enabled At Boot
[ACPI Debug] Integer: 000000000000FE00
[ACPI Debug] String: General-Purpose Decode #13 Enabled At Boot
[ACPI Debug] Integer: 0000000000000398
..........................
45 Devices found containing: 45 _STA, 2 _INI methods
Completing Region/Field/Buffer/Package initialization:......................................................................................
Initialized 21/27 Regions 4/4 Fields 30/31 Buffers 31/35 Packages (559 nodes)
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[ACPI Debug] String: MOON_2 Status
[ACPI Debug] String: MOON_2 Status
pci_bind-0191 [04] acpi_pci_bind : Device 00:00:11.00 not present in PCI namespace
ACPI: Embedded Controller [EC0] (gpe 9)
[ACPI Debug] Buffer: Length 06
ACPI: PCI Interrupt Link [LNKA] (IRQs *10)
ACPI: PCI Interrupt Link [LNKB] (IRQs 10, disabled)
ACPI: PCI Interrupt Link [LNKC] (IRQs 11, disabled)
ACPI: PCI Interrupt Link [LNKD] (IRQs *9)
PnPBIOS: Found PnP BIOS installation structure at 0xc00f6b40
PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0x843d, dseg 0xf0000
PNP!!!: Node number: 0x0 EISA ID: PNP0c02
pnp: pnp: match found with the PnP device '00:00' and the driver 'system'
PNP!!!: Node number: 0x1 EISA ID: PNP0c01
pnp: pnp: match found with the PnP device '00:01' and the driver 'system'
PNP!!!: Node number: 0x2 EISA ID: PNP0200
PNP!!!: Node number: 0x3 EISA ID: PNP0000
PNP!!!: Node number: 0x4 EISA ID: PNP0100
PNP!!!: Node number: 0x5 EISA ID: PNP0b00
PNP!!!: Node number: 0x6 EISA ID: PNP0303
PNP!!!: Node number: 0x7 EISA ID: PNP0c04
PNP!!!: Node number: 0x8 EISA ID: PNP0800
PNP!!!: Node number: 0x9 EISA ID: PNP0a03
PNP!!!: Node number: 0xa EISA ID: PNP0c02
pnp: pnp: match found with the PnP device '00:0a' and the driver 'system'
pnp: 00:0a: ioport range 0x4d0-0x4d1 has been reserved
pnp: 00:0a: ioport range 0x8000-0x803f has been reserved
pnp: 00:0a: ioport range 0x2180-0x218f has been reserved
PNP!!!: Node number: 0xc EISA ID: PNP0c02
pnp: pnp: match found with the PnP device '00:0c' and the driver 'system'
PNP!!!: Node number: 0xd EISA ID: PNP0c02
pnp: pnp: match found with the PnP device '00:0d' and the driver 'system'
PNP!!!: Node number: 0xe EISA ID: PNP0700
PNP!!!: Node number: 0x10 EISA ID: PNP0400
PNP!!!: Node number: 0x13 EISA ID: PNP0f13
PNP!!!: Node number: 0x14 EISA ID: PNP0501
PnPBIOS: 17 nodes reported by PnP BIOS; 17 recorded by driver
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
PCI: Using ACPI for IRQ routing
PCI: if you experience problems, try using option 'pci=noacpi' or even 'acpi=off'
Registering system device pic0
Registering system device rtc0
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)
apm: overridden by ACPI.
slab: reap timer started for cpu 0
Starting kswapd
aio_setup: sizeof(struct page) = 40
Journalled Block Device driver loaded
Installing knfsd (copyright (C) 1996 [email protected]).
udf: registering filesystem
Capability LSM initialized
Limiting direct PCI/PCI transfers.
evregion-0323: *** Error: Handler for [Embedded_control] returned AE_BAD_PARAMETER
dswexec-0404 [16] Ds_exec_end_op : [AE_NOT_CONFIGURED]: Could not resolve operands, AE_BAD_PARAMETER
acpi_ac-0091 [07] acpi_ac_get_state : Error reading AC Adapter state
evregion-0323: *** Error: Handler for [Embedded_control] returned AE_BAD_PARAMETER
dswexec-0404 [17] Ds_exec_end_op : [AE_NOT_CONFIGURED]: Could not resolve operands, AE_BAD_PARAMETER
evregion-0323: *** Error: Handler for [Embedded_control] returned AE_BAD_PARAMETER
dswexec-0404 [17] Ds_exec_end_op : [AE_NOT_CONFIGURED]: Could not resolve operands, AE_BAD_PARAMETER
ACPI: Power Button (CM) [PWRB]
ACPI: Sleep Button (CM) [SLPB]
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
PCI: Enabling device 00:0d.1 (0000 -> 0003)
Redundant entry in serial pci_table. Please send the output of
lspci -vv, this message (4445,211,32902,9233)
and the manufacturer and name of serial board or modem board
to [email protected].
pnp: the driver 'serial' has been registered
pnp: pnp: match found with the PnP device '00:14' and the driver 'serial'
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
pnp: the driver 'parport_pc' has been registered
pnp: pnp: match found with the PnP device '00:10' and the driver 'parport_pc'
parport0: PC-style at 0x378 [PCSPP,TRISTATE,EPP]
parport0: cpp_daisy: aa5500ff(38)
parport0: assign_addrs: aa5500ff(38)
parport0: cpp_daisy: aa5500ff(38)
parport0: assign_addrs: aa5500ff(38)
pty: 256 Unix98 ptys configured
[c129e040] eventpoll: driver installed.
lp0: using parport0 (polling).
Real Time Clock Driver v1.11
Linux agpgart interface v0.99 (c) Jeff Hartmann
agpgart: Maximum main memory to use for agp memory: 203M
agpgart: Detected Intel 440BX chipset
agpgart: AGP aperture is 64M @ 0xec000000
block request queues:
128 requests per read queue
128 requests per write queue
8 requests per batch
enter congestion at 31
exit congestion at 33
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
loop: loaded (max 8 devices)
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
xirc2ps_cs.c 1.31 1998/12/09 19:32:55 (dd9jn+kvh)
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIX4: IDE controller at PCI slot 00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0x1040-0x1047, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0x1048-0x104f, BIOS settings: hdc:pio, hdd:pio
hda: TOSHIBA MK2016GAP, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: host protected area => 1
hda: 39070080 sectors (20004 MB), CHS=2584/240/63, UDMA(33)
hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 hda9 hda10 hda11 > hda4
Linux Kernel Card Services 3.1.22
options: [pci] [cardbus] [pm]
PCI: Enabling device 00:08.0 (0000 -> 0002)
PCI: Enabling device 00:08.1 (0000 -> 0002)
register interface 'mouse' with class 'input
mice: PS/2 mouse device common for all mice
register interface 'event' with class 'input
input: PC Speaker
input: PS/2 Generic Mouse on isa0060/serio1
serio: i8042 AUX port at 0x60,0x64 irq 12
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
NET4: Linux TCP/IP 1.0 for NET4.0
IP: routing cache hash table of 2048 buckets, 16Kbytes
TCP: Hash tables configured (established 16384 bind 16384)
ip_tables: (C) 2000-2002 Netfilter core team
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
Yenta IRQ list 00b8, PCI irq10
Socket status: 30000006
Yenta IRQ list 00b8, PCI irq10
Socket status: 30000006
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 112k freed
Adding 257000k swap on /dev/hda11. Priority:-1 extents:1
EXT3 FS 2.4-0.9.16, 02 Dec 2001 on ide0(3,5), internal journal
Intel(R) PRO/100 Network Driver - version 2.1.24-k1
Copyright (c) 2002 Intel Corporation

e100: selftest OK.
e100: eth0: Intel(R) PRO/100+ Mini PCI
Mem:0xe8020000 IRQ:10 Speed:0 Mbps Dx:N/A
Hardware receive checksums enabled
cpu cycle saver enabled

> If my theory is correct I will have a fix out soon.

Here's hoping. :)

--
All people are equal,
But some are more equal then others.
- George W. Bush Jr, President of the United States
September 21, 2002 (Abridged version of security speech)

2002-11-05 01:18:01

by Adam Belay

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Tue, Nov 05, 2002 at 10:54:08AM +1100, CaT wrote:
> On Mon, Nov 04, 2002 at 04:15:04PM +0000, Adam Belay wrote:
> > 1.) apply patch 1 (attached below) to a clean kernel (2.5.45). Compile the
> > kernel with PnP BIOS support and list the last few messages that start with
> > "pnp!!!:" before it panics. You probably will want to have kernel debugging
> > off so it doesn't scroll the messages off the screen.


> PNP!!!: Node number: 0xa EISA ID: PNP0c02
> pnp: 00:0a: iport range 0x4d0-0x4d1 has been reserved
> pnp: 00:0a: iport range 0x8000-0x803f has been reserved
> pnp: 00:0a: iport range 0x2180-0x218f has been reserved
> PNP!!!: Node number: 0xc EISA ID: PNP0c02
> PNP!!!: Node number: 0xd EISA ID: PNP0c02
> PNP!!!: Node number: 0xe EISA ID: PNP0700
> PNP!!!: Node number: 0x10 EISA ID: PNP0400
> general protection fault: 0040
> ...


> > 2.) Apply patch 2 (attached below) to a clean kernel (2.5.45). Compile the
> > kernel with PnP BIOS support. It should start up completely without a panic.
> >
> > This is not a complete fix however. Anyway attach a copy of the output from
> > dmesg.

> PnPBIOS: Found PnP BIOS installation structure at 0xc00f6b40
> PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0x843d, dseg 0xf0000
> PNP!!!: Node number: 0x0 EISA ID: PNP0c02
> pnp: pnp: match found with the PnP device '00:00' and the driver 'system'
> PNP!!!: Node number: 0x1 EISA ID: PNP0c01
> pnp: pnp: match found with the PnP device '00:01' and the driver 'system'
> PNP!!!: Node number: 0x2 EISA ID: PNP0200
> PNP!!!: Node number: 0x3 EISA ID: PNP0000
> PNP!!!: Node number: 0x4 EISA ID: PNP0100
> PNP!!!: Node number: 0x5 EISA ID: PNP0b00
> PNP!!!: Node number: 0x6 EISA ID: PNP0303
> PNP!!!: Node number: 0x7 EISA ID: PNP0c04
> PNP!!!: Node number: 0x8 EISA ID: PNP0800
> PNP!!!: Node number: 0x9 EISA ID: PNP0a03
> PNP!!!: Node number: 0xa EISA ID: PNP0c02
> pnp: pnp: match found with the PnP device '00:0a' and the driver 'system'
> pnp: 00:0a: ioport range 0x4d0-0x4d1 has been reserved
> pnp: 00:0a: ioport range 0x8000-0x803f has been reserved
> pnp: 00:0a: ioport range 0x2180-0x218f has been reserved
> PNP!!!: Node number: 0xc EISA ID: PNP0c02
> pnp: pnp: match found with the PnP device '00:0c' and the driver 'system'
> PNP!!!: Node number: 0xd EISA ID: PNP0c02
> pnp: pnp: match found with the PnP device '00:0d' and the driver 'system'
> PNP!!!: Node number: 0xe EISA ID: PNP0700
> PNP!!!: Node number: 0x10 EISA ID: PNP0400
> PNP!!!: Node number: 0x13 EISA ID: PNP0f13
> PNP!!!: Node number: 0x14 EISA ID: PNP0501
> PnPBIOS: 17 nodes reported by PnP BIOS; 17 recorded by driver



It can be infered from the two above excerpts that the general protection fault
occured when the pnp bios protocol reached node 0x13. This node, pnp id
PNP0f13, is of course a standard mouse port. If you look at the output of
lspnp for my system, the following can be seen.

12 PNP0f13 input device: mouse
flags: [no disable] [no config] [static]
allocated resources:
irq 12 [high edge]

Notice the flags "No Config" and "Static". This device can not be configured
by the pnpbios and only contains static resource information. So the question
is why do some systems handle getting dynamic information from static devices
and others don't. I believe that some PnP BIOSes are broken and are unable to
handle calls that do not make sense. In other words, requesting dynamic
information from a static device is pointless becuase it could only contain
static information. The idea that this is the cause of the general protection
fault is further supported by the fact that not every node had this problem.

It actually makes sense for a bug like this to go unnoticed in other operating
systems.

The following describes the Microsoft Windows PnP boot process:

-During boot real mode calls are made.
-only static configuration requests are made, no dynamics yet
-then the protect mode configuration manager starts
-then dynamic calls can be made

* This would imply that dynamic calls will only be made if neccessary. Making
a dynamic call on a static device would therefore never happen.

This patch will make the PnP BIOS protocol follow these conventions:

1.) only static information requests are made during the initial device tree
building process.
2.) pnp flags are used to see if a device is static or cannot be configured.
3.) if the device is static the protocol will prevent any dynamic calls
4.) all sony viao and other dmi scan restrictions will be removed.
5.) if the device is indeed dynamic, dynamic calls will be made to update
the status after resources are set or the device is disabled.

More stuff related to this is on the way but this patch should make the pnpbios
driver fully functional. It is against 2.5.45 but should work with 2.5.46 as
well. It adds peliminary support for PnP BIOS flags. Eventually I'll export
these to a user interface.

Please feel free to send any questions or comments. The patch is below.

Thanks,
Adam




diff -ur --new-file a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c
--- a/drivers/pnp/pnpbios/core.c Wed Oct 30 17:16:54 2002
+++ b/drivers/pnp/pnpbios/core.c Tue Oct 29 23:41:21 2002
@@ -1256,6 +1256,12 @@
struct pnp_dev_node_info node_info;
u8 nodenum = dev->number;
struct pnp_bios_node * node;
+
+ /* just in case */
+ if(dev->driver)
+ return -EBUSY;
+ if(!pnp_is_dynamic(dev))
+ return -EPERM;
if (pnp_bios_dev_node_info(&node_info) != 0)
return -ENODEV;
node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
@@ -1273,8 +1279,13 @@
struct pnp_dev_node_info node_info;
u8 nodenum = dev->number;
struct pnp_bios_node * node;
- node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);

+ /* just in case */
+ if(dev->driver)
+ return -EBUSY;
+ if (flags == PNP_DYNAMIC && !pnp_is_dynamic(dev))
+ return -EPERM;
+ node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
if (pnp_bios_dev_node_info(&node_info) != 0)
return -ENODEV;
if (!node)
@@ -1323,6 +1334,11 @@
struct pnp_bios_node * node;
if (!config)
return -1;
+ /* just in case */
+ if(dev->driver)
+ return -EBUSY;
+ if(dev->flags & PNP_NO_DISABLE || !pnp_is_dynamic(dev))
+ return -EPERM;
memset(config, 0, sizeof(struct pnp_cfg));
if (!dev || !dev->active)
return -EINVAL;
@@ -1402,10 +1418,13 @@
for(nodenum=0; nodenum<0xff; ) {
u8 thisnodenum = nodenum;
/* We build the list from the "boot" config because
- * asking for the "current" config causes some
- * BIOSes to crash.
+ * we know that the resources couldn't have changed
+ * at this stage. Furthermore some buggy PnP BIOSes
+ * will crash if we request the "current" config
+ * from devices that are can only be static such as
+ * those controlled by the "system" driver.
*/
- if (pnp_bios_get_dev_node(&nodenum, (char )0 , node))
+ if (pnp_bios_get_dev_node(&nodenum, (char )1, node))
break;
nodes_got++;
dev = pnpbios_kmalloc(sizeof (struct pnp_dev), GFP_KERNEL);
@@ -1426,6 +1445,7 @@
pos = node_current_resource_data_to_dev(node,dev);
pos = node_possible_resource_data_to_dev(pos,node,dev);
node_id_data_to_dev(pos,node,dev);
+ dev->flags = node->flags;

dev->protocol = &pnpbios_protocol;

@@ -1450,10 +1470,7 @@
*
*/

-extern int is_sony_vaio_laptop;
-
static int pnpbios_disabled; /* = 0 */
-static int dont_reserve_resources; /* = 0 */
int pnpbios_dont_use_current_config; /* = 0 */

#ifndef MODULE
@@ -1471,8 +1488,6 @@
str += 3;
if (strncmp(str, "curr", 4) == 0)
pnpbios_dont_use_current_config = invert;
- if (strncmp(str, "res", 3) == 0)
- dont_reserve_resources = invert;
str = strchr(str, ',');
if (str != NULL)
str += strspn(str, ", \t");
@@ -1498,9 +1513,6 @@
printk(KERN_INFO "PnPBIOS: Disabled\n");
return -ENODEV;
}
-
- if ( is_sony_vaio_laptop )
- pnpbios_dont_use_current_config = 1;

/*
* Search the defined area (0xf0000-0xffff0) for a valid PnP BIOS
diff -ur --new-file a/include/linux/pnp.h b/include/linux/pnp.h
--- a/include/linux/pnp.h Wed Oct 30 17:16:54 2002
+++ b/include/linux/pnp.h Mon Oct 28 20:28:35 2002
@@ -53,6 +53,7 @@
struct device dev; /* Driver Model device interface */
void * driver_data;/* data private to the driver */
void * protocol_data;
+ int flags; /* used by protocols */
struct proc_dir_entry *procent; /* device entry in /proc/bus/isapnp */
};

@@ -108,7 +109,7 @@
#define DEV_DMA(dev, index) (dev->dma_resource[index].start)

#define PNP_PORT_FLAG_16BITADDR (1<<0)
-#define PNP_PORT_FLAG_FIXED (1<<1)
+#define PNP_PORT_FLAG_FIXED (1<<1)

struct pnp_port {
unsigned short min; /* min base number */
diff -ur --new-file a/include/linux/pnpbios.h b/include/linux/pnpbios.h
--- a/include/linux/pnpbios.h Sat Oct 19 04:01:48 2002
+++ b/include/linux/pnpbios.h Mon Oct 28 20:27:16 2002
@@ -75,6 +75,19 @@
#define PNPMSG_POWER_OFF 0x41
#define PNPMSG_PNP_OS_ACTIVE 0x42
#define PNPMSG_PNP_OS_INACTIVE 0x43
+/*
+ * Plug and Play BIOS flags
+ */
+#define PNP_NO_DISABLE 0x0001
+#define PNP_NO_CONFIG 0x0002
+#define PNP_OUTPUT 0x0004
+#define PNP_INPUT 0x0008
+#define PNP_BOOTABLE 0x0010
+#define PNP_DOCK 0x0020
+#define PNP_REMOVABLE 0x0040
+#define pnp_is_static(x) (x->flags & 0x0100) == 0x0000
+#define pnp_is_dynamic(x) x->flags & 0x0080
+
/* 0x8000 through 0xffff are OEM defined */

#pragma pack(1)

2002-11-05 02:12:09

by CaT

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Mon, Nov 04, 2002 at 08:28:00PM +0000, Adam Belay wrote:
> occured when the pnp bios protocol reached node 0x13. This node, pnp id
> PNP0f13, is of course a standard mouse port. If you look at the output of
> lspnp for my system, the following can be seen.
>
> 12 PNP0f13 input device: mouse
> flags: [no disable] [no config] [static]
> allocated resources:
> irq 12 [high edge]

Mine is #13 (ie the first line reads 13 PNP0f13...)

> Please feel free to send any questions or comments. The patch is below.

The patch lets me boot just fine. (Woo) One hassle though, doing
lspci -v 13 or cat /proc/bus/pnp/13 causes an oops. I presume it's the
same deal as what you were talking about?

general protection fault: 0040
e100
CPU: 0
EIP: 0088:[<0000992d>] Not tainted
EFLAGS: 00010046
EIP is at E Using_Versions+0x992c/0xc01188ff
eax: 00000040 ebx: 00009bd1 ecx: 00150000 edx: 00000005
esi: 0000c1b1 edi: 00000000 ebp: cc56dde8 esp: cc56dd98
ds: 0090 es: 00a0 ss: 0068
Process lspnp (pid: 539, threadinfo=cc56c000 task=cd51a160)
Stack: c1f60090 9bd10005 c1d03032 c1940003 0a110011 0018c157 c1449bcb 0000c130
c11b9bca 0000c109 00030000 dde80000 dddecc56 9bb2cc56 00000000 00180000
03010015 c7110000 cc56c000 00000000 cffea600 c015fa28 de60df00 0000cc56
Call Trace:
[<c015fa28>] proc_alloc_inode+0x10/0x4c
[<c0159ba3>] dio_get_page+0x4f/0x54
[<c0153917>] wake_up_inode+0xb/0x34
[<c0152f95>] unlock_new_inode+0x11/0x18
[<c015fc0f>] proc_get_inode+0x5f/0x124
[<c02737bc>] __pnp_bios_get_dev_node+0x120/0x17c
[<c0140000>] sync_blockdev+0x20/0x3c
[<c027382e>] pnp_bios_get_dev_node+0x16/0x34
[<c027543f>] proc_read_node+0x47/0x8c
[<c0161958>] proc_file_read+0xec/0x190
[<c013e571>] vfs_read+0xc1/0x158
[<c013eba2>] sys_read+0x2a/0x3c
[<c0106f0f>] syscall_call+0x7/0xb

Code: Bad EIP value.
<6>note: lspnp[539] exited with preempt_count 1
Warning: null TTY for (88:04) in tty_fasync
general protection fault: 0040
e100
CPU: 0
EIP: 0088:[<0000992d>] Not tainted
EFLAGS: 00010046
EIP is at E Using_Versions+0x992c/0xc01188ff
eax: 00000040 ebx: 00009bd1 ecx: 00150000 edx: 00000005
esi: 0000c1b1 edi: 00000000 ebp: c65efde8 esp: c65efd98
ds: 0090 es: 00a0 ss: 0068
Process cat (pid: 734, threadinfo=c65ee000 task=cbae81e0)
Stack: c1f60090 9bd10005 c1d03032 c1940003 0a110011 0018c157 c1449bcb 0000c130
c11b9bca 0000c109 00030000 fde80000 fddec65e 9bb2c65e 00000000 00180000
03010015 c7110000 c11efb68 c65efe88 40014a25 00000a25 fe60fb68 c012c65e
Call Trace:
[<c012c65e>] filemap_nopage+0x1ae/0x2bc
[<c013abcd>] do_page_cache_readahead+0x7d/0x150
[<c02737bc>] __pnp_bios_get_dev_node+0x120/0x17c
[<c0120000>] init_timers_cpu+0x0/0x88
[<c027382e>] pnp_bios_get_dev_node+0x16/0x34
[<c027543f>] proc_read_node+0x47/0x8c
[<c0161958>] proc_file_read+0xec/0x190
[<c013e571>] vfs_read+0xc1/0x158
[<c013eba2>] sys_read+0x2a/0x3c
[<c0106f0f>] syscall_call+0x7/0xb

Code: Bad EIP value.
<6>note: cat[734] exited with preempt_count 1

--
All people are equal,
But some are more equal then others.
- George W. Bush Jr, President of the United States
September 21, 2002 (Abridged version of security speech)

2002-11-05 02:14:44

by Adam Belay

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Tue, Nov 05, 2002 at 01:06:30PM +1100, CaT wrote:
> On Mon, Nov 04, 2002 at 08:28:00PM +0000, Adam Belay wrote:
> > occured when the pnp bios protocol reached node 0x13. This node, pnp id
> > PNP0f13, is of course a standard mouse port. If you look at the output of
> > lspnp for my system, the following can be seen.
> >
> > 12 PNP0f13 input device: mouse
> > flags: [no disable] [no config] [static]
> > allocated resources:
> > irq 12 [high edge]
>
> Mine is #13 (ie the first line reads 13 PNP0f13...)
>
> > Please feel free to send any questions or comments. The patch is below.
>
> The patch lets me boot just fine. (Woo) One hassle though, doing
> lspci -v 13 or cat /proc/bus/pnp/13 causes an oops. I presume it's the
> same deal as what you were talking about?
>

Oops, I forgot to fix the pnpbios proc interface for this problem. I have
to look into it some more. None the less this is not a big problem. If
it boots you're in good shape.

Could you, however send me the output of lspnp for /proc/bus/pnp/boot/13.
This will not fault. Also could you try lspnp on /proc/bus/pnp/14. If
all is well this one should not fault.

by the way

/proc/bus/pnp/*.* = current
/proc/bus/pnp/boot/*.* = boot

current config has the problem but boot does not. I'll work on a patch to
fix this.

Thanks,
Adam

2002-11-05 02:23:31

by CaT

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Mon, Nov 04, 2002 at 09:24:44PM +0000, Adam Belay wrote:
> On Tue, Nov 05, 2002 at 01:06:30PM +1100, CaT wrote:
> > The patch lets me boot just fine. (Woo) One hassle though, doing
> > lspci -v 13 or cat /proc/bus/pnp/13 causes an oops. I presume it's the
> > same deal as what you were talking about?
>
> Oops, I forgot to fix the pnpbios proc interface for this problem. I have
> to look into it some more. None the less this is not a big problem. If
> it boots you're in good shape.

Cool, thanks. :)

> Could you, however send me the output of lspnp for /proc/bus/pnp/boot/13.

1 [13:28:05] hogarth@theirongiant:/proc/bus/pnp>> lspnp -bvv 13
13 PNP0f13 input device: mouse
flags: [input] [dynamic]
allocated resources:
irq 12 [high edge]
possible resources:
irq 12 [high edge]

> This will not fault. Also could you try lspnp on /proc/bus/pnp/14. If

1 [13:27:59] hogarth@theirongiant:/proc/bus/pnp>> lspnp -vv 14
14 PNP0501 communications device: RS-232
flags: [dynamic]
allocated resources:
io 0x03f8-0x03ff [16-bit decode]
irq 4 [high edge]
possible resources:
[start dep fn]
io 0x03f8-0x03ff [16-bit decode]
irq 4 [high edge]
[start dep fn]
io 0x02f8-0x02ff [16-bit decode]
irq 3 [high edge]
[start dep fn]
io 0x03e8-0x03ef [16-bit decode]
irq 4 [high edge]
[start dep fn]
io 0x02e8-0x02ef [16-bit decode]
irq 3 [high edge]
[end dep fn]


> all is well this one should not fault.

Neither faulted.

> by the way
>
> /proc/bus/pnp/*.* = current
> /proc/bus/pnp/boot/*.* = boot
>
> current config has the problem but boot does not. I'll work on a patch to
> fix this.

Sweet. Thanks. :)

--
All people are equal,
But some are more equal then others.
- George W. Bush Jr, President of the United States
September 21, 2002 (Abridged version of security speech)

2002-11-07 14:26:30

by David Woodhouse

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)


[email protected] said:
> Buggy PnP bios please provide dmidecode output for that box

We should really have an extra taint flag for 'We have run untrusted BIOS
code'.

--
dwmw2


2002-11-07 14:48:56

by David Woodhouse

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)


[email protected] said:
> Relatively pointless given that there are more and more boxes out
> there that won't boot without ACPI these days.

There are also more and more boxes out there which won't run X without the
nvidia driver loaded. Does that mean we shouldn't bother to record that
information either?

I'm not necessarily suggesting we should automatically ignore all reports
with the 'BIOS' taint flag set as we do the 'Proprietary' flag; just that
it should be reported.

--
dwmw2


2002-11-07 14:46:45

by Dave Jones

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Thu, Nov 07, 2002 at 02:33:01PM +0000, David Woodhouse wrote:

> We should really have an extra taint flag for 'We have run untrusted BIOS
> code'.

Relatively pointless given that there are more and more boxes out there
that won't boot without ACPI these days.

Dave

--
| Dave Jones. http://www.codemonkey.org.uk

2002-11-07 15:41:04

by Dave Jones

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

On Thu, Nov 07, 2002 at 02:55:30PM +0000, David Woodhouse wrote:

> There are also more and more boxes out there which won't run X without the
> nvidia driver loaded.

Crap. The OSS driver works fine, just not as accelerated.

> I'm not necessarily suggesting we should automatically ignore all reports
> with the 'BIOS' taint flag set as we do the 'Proprietary' flag; just that
> it should be reported.

I don't see what it would buy us.

Dave

--
| Dave Jones. http://www.codemonkey.org.uk

2002-11-07 15:44:28

by David Woodhouse

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)


[email protected] said:
> Crap. The OSS driver works fine, just not as accelerated.

Ah. It must have got a lot better since I last tried it then -- last time I
looked it wouldn't work on the newer chips at all. I had to use the vesa
driver instead.

> I don't see what it would buy us.

It makes it clear that untrusted and undebuggable code is running, just
like the 'Proprietary' flag does.

--
dwmw2


2002-11-07 15:48:46

by Brian Gerst

[permalink] [raw]
Subject: Re: 2.5.45 / boottime oops (pnp bios I think)

David Woodhouse wrote:
> [email protected] said:
>
>> Relatively pointless given that there are more and more boxes out
>>there that won't boot without ACPI these days.
>
>
> There are also more and more boxes out there which won't run X without the
> nvidia driver loaded. Does that mean we shouldn't bother to record that
> information either?
>
> I'm not necessarily suggesting we should automatically ignore all reports
> with the 'BIOS' taint flag set as we do the 'Proprietary' flag; just that
> it should be reported.

You only need the binary driver for 3D support. XFree86 runs fine
without it for 2D.

--
Brian Gerst