Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Mar 2003 12:51:11 -0500 (EST)
From:      Andre Guibert de Bruet <andy@siliconlandmark.com>
To:        current@freebsd.org
Subject:   Double fault with IBM microdrives and CompactFlash (LONG)
Message-ID:  <20030301120003.R91528@alpha.siliconlandmark.com>

next in thread | raw e-mail | index | archive | help
Hi,

I just tried using my FreeBSD laptop to unload pictures off of a 340MB IBM
microdrive (Model: DMDM-10340, P/N: 22L0046) using the IBM PC Card adapter
(P/N: 31L9315). The laptop in question is a stock Dell Latitude C800 with
a 1Ghz P3, 512MB of RAM and a 20GB ATA66 drive.

I got a double "page fault in kernel mode" message shortly after inserting
the drive. I rebooted then tried using the same adapter with a 128MB
Viking CompactFlash card, and I got the same problem. Now, I've used this
adapter under Windows XP, and it works, so it's not defective. I use the
same cardbus slots for my wi0 interface (PRISM II-based), so I know both
slots work. I recvsup'ed to make sure that I have all the latest committed
fixes. Here's what uname says:

FreeBSD 5.0-CURRENT #0: Sat Mar  1 11:04:18 EST 2003
root@omikron.properkernel.com:/usr/src/sys/i386/compile/OMIKRON

The following messages print out when the double faults occur. I didn't
have a serial console hooked up at the time, so I copied what was on the
screen as best I could... :-)


pccard1: Allocation failed for cfe 0
ata2 at port 0x100-0x10f irq 10 function 0 config 1 on pccard1

Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x0
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0x0
stack pointer           = 0x10:0xd68d0b74
frame pointer           = 0x10:0xd68d0bb0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 9 (cbb1)
kernel: type 12 trap, code=0
Stopped at      0:

Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x0
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xc0388d20
stack pointer           = 0x10:0xd68d0978
frame pointer           = 0x10:0xd68d097c
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 9 (cbb1)
      kernel: type 12 trap, code=0
db> tr


Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x0
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xc0388d20
stack pointer           = 0x10:0xd68d0860
frame pointer           = 0x10:0xd68d0864
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = resume, IOPL = 0
current process         = 9 (cbb1)
kernel: type12 trap, code=0
db> show registers
cs                 0x8
ds                 0xc1560010
es                 0xc0140010  an_attach+0x450
fs                 0xd68d0018
ss                       0x10
eax                0xc156332c
ecx                0xc048b8b8
edx                0xc156332c
ebx                      0x10
esp                0xd68d0b74
ebp                0xd68d0bb0
esi                      0x80
edi                0xc1508200
eip                         0
efl                   0x10246
dr0                         0
dr1                         0
dr2                         0
dr3                         0
dr4                0xffff0ff0
dr5                     0x400
dr6                0xffff0ff0
dr7                     0x400
0:

Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x0
fault code              = supervisor read, page not present
instruction pointer     = 0x8:c0388d20
stack pointer           = 0x10:0xd68d0878
frame pointer           = 0x10:0xd68d087c
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1 def32 1, gran 1
processor eflags        = resume, IOPL = 0
current process         = 9 (cbb1)
      kernel: type 12 trap code=0
db>call sync
0
db>

If I do not remove the card, doing a "call sync" never finishes. It
appears as if this problem is 100% reproducible.

Any ideas?

Thanks,

> Andre Guibert de Bruet | Enterprise Software Consultant >
> Silicon Landmark, LLC. | http://siliconlandmark.com/    >

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030301120003.R91528>