Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Mar 2003 11:29:02 -0500 (EST)
From:      Andre Guibert de Bruet <andy@siliconlandmark.com>
To:        current@FreeBSD.ORG
Subject:   Re: Double fault with IBM microdrives and CompactFlash (LONG)
Message-ID:  <20030302105316.P91528@alpha.siliconlandmark.com>
In-Reply-To: <20030301120003.R91528@alpha.siliconlandmark.com>
References:  <20030301120003.R91528@alpha.siliconlandmark.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Sat, 1 Mar 2003, Andre Guibert de Bruet wrote:

> I just tried using my FreeBSD laptop to unload pictures off of a 340MB IB=
M
> microdrive (Model: DMDM-10340, P/N: 22L0046) using the IBM PC Card adapte=
r
> (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 insertin=
g
> 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 committe=
d
> fixes. Here's what uname says:
<snip>
> pccard1: Allocation failed for cfe 0
> ata2 at port 0x100-0x10f irq 10 function 0 config 1 on pccard1
<snip>

I've since cvsup'ed, and upgraded this machine's kernel.

omikron# uname -a
FreeBSD omikron.properkernel.com 5.0-CURRENT FreeBSD 5.0-CURRENT #0: Sun Ma=
r  2 09:29:14 EST 2003     root@omikron.properkernel.com:/usr/src/sys/i386/=
compile/OMIKRON  i386

I also enabled dumps and managed to get a clean dump:

(kgdb) bt
#0  doadump () at ../../../kern/kern_shutdown.c:239
#1  0xc013bb55 in db_fncall (dummy1=3D0, dummy2=3D0, dummy3=3D3999,    dumm=
y4=3D0xd68d0964 "@\003E=C0\f") at ../../../ddb/db_command.c:546
#2  0xc013b8d2 in db_command (last_cmdp=3D0xc04037c0, cmd_table=3D0x0,    a=
ux_cmd_tablep=3D0xc03fdf94, aux_cmd_tablep_end=3D0xc03fdf98)    at ../../..=
/ddb/db_command.c:346
#3  0xc013b9e6 in db_command_loop () at ../../../ddb/db_command.c:470
#4  0xc013e76a in db_trap (type=3D12, code=3D0) at ../../../ddb/db_trap.c:7=
2
#5  0xc0388ad1 in kdb_trap (type=3D12, code=3D0, regs=3D0xd68d0b34)    at .=
=2E/../../i386/i386/db_interface.c:166
#6  0xc039a2f2 in trap_fatal (frame=3D0xd68d0b34, eva=3D0)    at ../../../i=
386/i386/trap.c:838
#7  0xc039a002 in trap_pfault (frame=3D0xd68d0b34, usermode=3D0, eva=3D0)  =
  at ../../../i386/i386/trap.c:757
#8  0xc0399b7d in trap (frame=3D      {tf_fs =3D -695402472, tf_es =3D -107=
2431088, tf_ds =3D -1051262960, tf_edi =3D -1051687936, tf_esi =3D 128, tf_=
ebp =3D -695399504, tf_isp =3D -695399584, tf_ebx =3D 16, tf_edx =3D -10512=
31700, tf_ecx =3D -1068976384, tf_eax =3D -1051231700, tf_trapno =3D 12, tf=
_err =3D 0, tf_eip =3D 0, tf_cs =3D 8, tf_eflags =3D 66118, tf_esp =3D -107=
2345719, tf_ss =3D -1051231700}) at ../../../i386/i386/trap.c:444
#9  0xc038a428 in calltrap () at {standard input}:96
#10 0xc01463d3 in ata_attach (dev=3D0x80) at ../../../dev/ata/ata-all.c:210
#11 0xc017b24a in pccard_compat_do_attach (bus=3D0xc40f8500, dev=3D0x80)   =
 at card_if.h:129
#12 0xc014a5bd in pccard_compat_attach (dev=3D0x10) at card_if.h:147
#13 0xc0254010 in device_probe_and_attach (dev=3D0x10) at device_if.h:39
#14 0xc0179f1f in pccard_attach_card (dev=3D0xc40f8500)    at ../../../dev/=
pccard/pccard.c:243
#15 0xc0181f08 in cbb_insert (sc=3D0xc15a2c00) at card_if.h:66
#16 0xc0181d2b in cbb_event_thread (arg=3D0xc15a2c00)    at ../../../dev/pc=
cbb/pccbb.c:914
#17 0xc022b634 in fork_exit (callout=3D0xc0181cb0 <cbb_event_thread>, arg=
=3D0x0,    frame=3D0x0) at ../../../kern/kern_fork.c:871

(kgdb) list ../../../dev/ata/ata-all.c:210
205             if (ch->devices & ATA_ATAPI_MASTER)
206                 if (ata_getparam(&ch->device[MASTER], ATA_C_ATAPI_IDENT=
IFY))
207                     ch->devices &=3D ~ATA_ATAPI_MASTER;
208     #ifdef DEV_ATADISK
209             if (ch->devices & ATA_ATA_MASTER)
210                 ad_attach(&ch->device[MASTER]);
211             if (ch->devices & ATA_ATA_SLAVE)
212                 ad_attach(&ch->device[SLAVE]);
213     #endif
214     #if DEV_ATAPIALL

File versions:
src/sys/dev/ata/ata-all.c     1.167
src/sys/dev/ata/ata-all.h     1.59
src/sys/dev/pccard/card_if.m  1.21
src/sys/dev/pccbb/pccbb.c     1.65
src/sys/kern/device_if.m      1.8
src/sys/kern/kern_fork.c      1.186
src/sys/pccard/pccard.c       1.156

The kernel config file that I'm using can be found at:
http://siliconlandmark.com/staff/andre/files/OMIKRON

If there's anything else that could be helpful, please don't hesitate to
ask! :-)

Thanks again,

> 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?20030302105316.P91528>