Subject: kern/34202: Accessing cd device on alpha causes kernel trap
To: None <,,>
From: None <>
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
Name: Dave Huang         |  Mammal, mammal / their names are called /
INet: |  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++
System: NetBSD 4.99.1 NetBSD 4.99.1 (YERFABLE) #222: Sun Aug 13 05:58:06 CDT 2006 alpha
Architecture: alpha
Machine: alpha
	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.

Attempt to access a CD on an alpha.