Subject: kern/34202: Accessing cd device on alpha causes kernel trap
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <khym@azeotrope.org>
List: netbsd-bugs
Date: 08/14/2006 23:25:00
>Number: 34202
>Category: kern
>Synopsis: Accessing cd device on alpha causes kernel trap
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Aug 14 23:25:00 +0000 2006
>Originator: Dave Huang
>Release: NetBSD 4.99.1
>Organization:
Name: Dave Huang | Mammal, mammal / their names are called /
INet: khym@azeotrope.org | they raise a paw / the bat, the cat /
FurryMUCK: Dahan | dolphin and dog / koala bear and hog -- TMBG
Dahan: Hani G Y+C 30 Y++ L+++ W- C++ T++ A+ E+ S++ V++ F- Q+++ P+ B+ PA+ PL++
>Environment:
System: NetBSD yerfable.azeotrope.org 4.99.1 NetBSD 4.99.1 (YERFABLE) #222: Sun Aug 13 05:58:06 CDT 2006 khym@yerfable.azeotrope.org:/usr2/obj.alpha/sys/arch/alpha/compile/YERFABLE alpha
Architecture: alpha
Machine: alpha
>Description:
Any attempt to open the cd(4) device on NetBSD-current/alpha causes a kernel unaligned access fault. E.g.
# mount -t cd9660 -r /dev/cd1a /cdrom
CPU 0: fatal kernel trap:
CPU 0 trap entry = 0x4 (unaligned access fault)
CPU 0 a0 = 0xfffffe000c805ace
CPU 0 a1 = 0x2c
CPU 0 a2 = 0x1
CPU 0 pc = 0xfffffc00005d775c
CPU 0 ra = 0xfffffc00003dec24
CPU 0 pv = 0xfffffc00005d7720
CPU 0 curlwp = 0x0
panic: trap
Stopped at netbsd:cpu_Debugger+0x4: ret zero,(ra)
db> t
cpu_Debugger() at netbsd:cpu_Debugger+0x4
panic() at netbsd:panic+0x1d8
trap() at netbsd:trap+0x368
XentUna() at netbsd:XentUna+0x20
--- unaligned access fault (from ipl 4) ---
cia_swiz_io_read_multi_4() at netbsd:cia_swiz_io_read_multi_4+0x3c
wdc_datain_pio() at netbsd:wdc_datain_pio+0xd4
wdc_atapi_intr() at netbsd:wdc_atapi_intr+0x8ec
wdcintr() at netbsd:wdcintr+0x124
pciide_compat_intr() at netbsd:pciide_compat_intr+0x18
alpha_shared_intr_dispatch() at netbsd:alpha_shared_intr_dispatch+0x6c
sio_iointr() at netbsd:sio_iointr+0x3c
interrupt() at netbsd:interrupt+0x1e4
XentInt() at netbsd:XentInt+0x1c
--- interrupt (from ipl 0) ---
idle() at netbsd:idle+0x4c
mi_switch() at netbsd:mi_switch+0x250
ltsleep() at netbsd:ltsleep+0x39c
scsipi_execute_xs() at netbsd:scsipi_execute_xs+0x24c
scsipi_command() at netbsd:scsipi_command+0xe0
read_cd_capacity() at netbsd:read_cd_capacity+0x1cc
cdopen() at netbsd:cdopen+0x1f4
spec_open() at netbsd:spec_open+0x324
VOP_OPEN() at netbsd:VOP_OPEN+0x44
vn_open() at netbsd:vn_open+0x368
sys_open() at netbsd:sys_open+0x104
syscall_plain() at netbsd:syscall_plain+0x154
XentSys() at netbsd:XentSys+0x5c
--- syscall (5) ---
--- user mode ---
Even a simple "dd if=/dev/rcd1c of=/dev/null bs=2k count=1" will cause
the trap.
I'm not sure, but I believe this started with the switch to gcc 4; I
first noticed it with a -current kernel from July 6 sources, and I'm still seeing a problem with a kernel from August 13 sources.
>How-To-Repeat:
Attempt to access a CD on an alpha.
>Fix:
>Unformatted: