2002-03-04 01:56:15

by Martin Josefsson

[permalink] [raw]
Subject: Unable to handle kernel paging request when accessing /proc/bus/pnp/escd in 2.4.19-pre1-ac2

Hi,

I was just looking around in /proc/bus a little and I tried
'cat /proc/bus/pnp/escd' and I got this:

Unable to handle kernel paging request at virtual address ffffa00a
00007598
*pde = 00001063
Oops: 0000
CPU: 0
EIP: 0068:[<00007598>] Tainted: P
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00210086
eax: 000022ff ebx: 00806b06 ecx: 00000070 edx: 00000000
esi: 0000000a edi: 00200000 ebp: c6f87737 esp: c6f83eb0
ds: 0080 es: 0078 ss: 0018
Process cat (pid: 8454, stackpage=c6f83000)
Stack: 000a0002 00800000 00060078 7741757a 00000000 687a0070 6b1f3ee4 00180000
02460018 69740042 00960078 cb4c6000 0060000b 00000042 00800078 00000070
00000000 c01d3956 00000010 00200046 00000000 00200000 d0aa0018 c0110018
Call Trace: [<c01d3956>] [<c0110018>] [<c01d39ac>] [<c01d402f>] [<c014ed1a>]
[<c0130ec6>] [<c0106b1b>]
Code: Bad EIP value.

>>EIP; 00007598 Before first symbol <=====
Trace; c01d3956 <__pnp_bios_read_escd+ce/114>
Trace; c0110018 <apm_mainloop+38/a0>
Trace; c01d39ac <pnp_bios_read_escd+10/30>
Trace; c01d402e <proc_read_escd+6e/e8>
Trace; c014ed1a <proc_file_read+f2/194>
Trace; c0130ec6 <sys_read+96/e4>
Trace; c0106b1a <system_call+32/38>

I assume this is for ISA Plug 'n Pray devices. I currently have no such
devices in my machine (I have an old sb16 and an ne2k ISA NIC but none are
operating in pnpmode)

This is from my bootmessages:

isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
PnPBIOS: Found PnP BIOS installation structure at 0xc00f7540
PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0x68f4, dseg 0xf0000
PnPBIOS: 16 nodes reported by PnP BIOS; 16 recorded by driver
PnPBIOS: PNP0c02: ioport range 0x4d0-0x4d1 has been reserved
PnPBIOS: PNP0c02: ioport range 0xcf8-0xcff could not be reserved
PnPBIOS: PNP0c02: ioport range 0x400-0x43f has been reserved
PnPBIOS: PNP0c02: ioport range 0x440-0x44f has been reserved
PnPBIOS: PNP0c02: ioport range 0x290-0x297 has been reserved

It's an Award BIOS on a Tyan S1830S board.

and now that I ran 'dmesg' again I see this:
<3>PnPBIOS: get_stat_res: Unexpected status 0x8d

Hopefully someone knows what the problem is.

/Martin

Never argue with an idiot. They drag you down to their level, then beat you with experience.


2002-03-04 03:17:10

by Alan

[permalink] [raw]
Subject: Re: Unable to handle kernel paging request when accessing /proc/bus/pnp/escd

> I was just looking around in /proc/bus a little and I tried
> 'cat /proc/bus/pnp/escd' and I got this:

Your PnP BIOS appears to have choked

> EIP: 0068:[<00007598>] Tainted: P

^^^^ Trapped out in the BIOS (segment 0068)

Two things here. Firstly make sure Thomas gets the report so he can double
check it was called right. Secondly can try the following

--- arch/i386/kernel/traps.c~ Wed Feb 13 00:30:44 2002
+++ arch/i386/kernel/traps.c Mon Mar 4 03:13:16 2002
@@ -241,6 +241,20 @@

void die(const char * str, struct pt_regs * regs, long err)
{
+#ifdef CONFIG_PNPBIOS
+ if (regs->xcs == 0x60 || regs->xcs == 0x68)
+ {
+ extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
+ extern u32 pnp_bios_is_utter_crap;
+ pnp_bios_is_utter_crap = 1;
+ printk(KERN_CRIT "PNPBIOS fault.. attempting recovery.\n");
+ __asm__ volatile(
+ "movl %0, %%esp\n\t"
+ "jmp %1\n\t"
+ : "=a" (pnp_bios_fault_esp), "=b" (pnp_bios_fault_eip));
+ panic("do_trap: can't hit this");
+ }
+#endif
console_verbose();
spin_lock_irq(&die_lock);
bust_spinlocks(1);
@@ -272,20 +286,6 @@
if (vm86 && regs->eflags & VM_MASK)
goto vm86_trap;

-#ifdef CONFIG_PNPBIOS
- if (regs->xcs == 0x60 || regs->xcs == 0x68)
- {
- extern u32 pnp_bios_fault_eip, pnp_bios_fault_esp;
- extern u32 pnp_bios_is_utter_crap;
- pnp_bios_is_utter_crap = 1;
- printk(KERN_CRIT "PNPBIOS fault.. attempting recovery.\n");
- __asm__ volatile(
- "movl %0, %%esp\n\t"
- "jmp %1\n\t"
- : "=a" (pnp_bios_fault_esp), "=b" (pnp_bios_fault_eip));
- panic("do_trap: can't hit this");
- }
-#endif

if (!(regs->xcs & 3))
goto kernel_trap;