Subject: Re: kern/19269: alignment error in wd(4)
To: None <hamajima@ydc.co.jp>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: netbsd-bugs
Date: 12/04/2002 20:00:56
On Thu, Dec 05, 2002 at 12:37:37AM +0900, hamajima@ydc.co.jp wrote:
>
> >Number: 19269
> >Category: kern
> >Synopsis: alignment error in wd(4)
> >Confidential: no
> >Severity: critical
> >Priority: high
> >Responsible: kern-bug-people
> >State: open
> >Class: sw-bug
> >Submitter-Id: net
> >Arrival-Date: Wed Dec 04 07:38:00 PST 2002
> >Closed-Date:
> >Last-Modified:
> >Originator: HAMAJIMA Katsuomi
> >Release: NetBSD 1.6K
> >Organization:
> >Environment:
> System: NetBSD 1.6K (LROUTER) #2: Tue Dec 3 01:03:44 JST 2002 root@lr:/usr/src/sys/arch/hpcmips/compile/LROUTER
> Architecture: mipsel
> Machine: hpcmips
>
> LASER5 L-BOARD (NEC VR4122 rev0.3 180.633MHz)
> pciide0 at pci0 dev 16 function 0: Acer Labs M5229 UDMA IDE Controller (rev. 0xc2)
> pciide0: bus-master DMA support present
> pciide0: primary channel configured to native-PCI mode
> pciide0: using pciintr 0:16:0 for native-PCI interrupt
> wd0 at pciide0 channel 0 drive 0: <ST330630A>
> wd0: drive supports 16-sector PIO transfers, LBA addressing
> wd0: 29188 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 59777640 sectors
> wd0: 32-bit data port
> wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 4 (Ultra/66)
> wd0(pciide0:0:0): using PIO mode 3
> pciide0: secondary channel configured to native-PCI mode
> pciide0: disabling secondary channel (no drives)
>
> >Description:
> L-Router does not work with DMA mode, so pciide(4) use PIO mode.
>
> # /sbin/fdisk wd0
> trap: address error (store) in kernel mode
> status=0xf803, cause=0x14, epc=0x8017d898, vaddr=0xc3770a12
> curproc == NULL ksp=0xc4125a60
> Stopped at 0x8017d898: sw v0,0(s1)
> db> t
> __bs_rm_4+48 (801fbd80,b00001f0,0,c3770a12) ra 8017ab94 sz 40
> wdc_ata_bio_intr+34c (801fbd80,b00001f0,0,c3770a12) ra 80056f08 sz 48
> wdcintr+144 (801fbd80,b00001f0,0,c3770a12) ra 80188794 sz 32
> pciide_pci_intr+54 (801fbd80,b00001f0,0,c3770a12) ra 801807a4 sz 40
> config_connected_call+28 (801fbd80,b00001f0,0,c3770a12) ra 80193a54 sz 24
> hpcin_intr+44 (801fbd80,b00001f0,0,c3770a12) ra 80194cd4 sz 32
> vrgiu_intr+88 (801fbd80,b00001f0,0,c3770a12) ra 80192258 sz 40
> vrip_intr+c4 (801fbd80,b00001f0,0,c3770a12) ra 8017bf10 sz 48
> cpu_intr+cc (801fbd80,b00001f0,0,c3770a12) ra 8015691c sz 40
> mips3_KernIntr+84 (c4124000,0,988e,80204fa8) ra 8000115c sz 128
> cpu_switch+64 (c4124000,0,988e,80204fa8) ra 800ebed4 sz 24
> mi_switch+1dc (c4124000,0,988e,80204fa8) ra 800eb614 sz 48
> ltsleep+238 (c4124000,0,988e,80204fa8) ra 800e439c sz 48
> physio+25c (80177774,0,988e,80204fa8) ra 80177ee8 sz 72
> wdread+60 (80177774,0,988e,80204fa8) ra 80125af8 sz 40
> spec_read+d8 (80177774,0,988e,80204fa8) ra 800c9dd8 sz 80
> ufsspec_read+58 (80177774,0,988e,80204fa8) ra 80120e04 sz 24
> VOP_READ+40 (80a72cb0,c4125e78,0,c0006f00) ra 801203f0 sz 48
> 80120344+ac (80a72cb0,c4125e78,0,c0006f00) ra 800fbd08 sz 40
> dofileread+bc (80a72cb0,c4125e78,0,10000a12) ra 800fbc30 sz 96
> sys_read+a0 (80a72cb0,c4125e78,0,10000a12) ra 8015cdd0 sz 56
> syscall_plain+1d0 (80a72cb0,c4125e78,0,10000a12) ra 8015676c sz 80
> mips3_SystemCall+b0 (80a72cb0,c4125e78,0,10000a12) ra 30115000 sz 0
> PC 0x30115000: not in kernel space
> 0+30115000 (80a72cb0,c4125e78,0,10000a12) ra 0 sz 0
> User-level: curproc NULL
> (symbol name is hand translation. if symbol was wrong, I am sorry.)
>
> __bs_rm_4() is bus_space_read_multi_4() in hpcmips.
> vaddr=0xc3770a12 is not align for VR4122.
I don't know why the buffer is not aligned here, and we need to find why.
This would also cause problems for DMA operations.
--
Manuel Bouyer <bouyer@antioche.eu.org>
NetBSD: 23 ans d'experience feront toujours la difference
--