Date: Thu, 16 Mar 2006 12:34:48 -0500 From: "Rong-En Fan" <grafan@gmail.com> To: "Scott Long" <scottl@samsco.org> Cc: stable@freebsd.org Subject: Re: 6.1 ata panic if dma enabled Message-ID: <6eb82e0603160934p6f795c26sbdd63ffda9cfe889@mail.gmail.com> In-Reply-To: <44198A7F.5030003@samsco.org> References: <6eb82e0603160732p4bb85504w7d3ef2baec8dd26f@mail.gmail.com> <44198A7F.5030003@samsco.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 3/16/06, Scott Long <scottl@samsco.org> wrote: > Rong-En Fan wrote: > > Hi, > > > > Recently, we upgrade a 4.11 box to 6.1-BETA2 by reinstall+newfs everyth= ing. > > After that, we found that if hw.ata.ata_dma=3D1 at boot, then as soon = as it > > starts fsck -p, it panics. It happens only if ad0 is setted to UDMA66 o= r above. > > My current solution is set hw.ata.ata_dma=3D0 in loader.conf and manual= ly > > turn DMA on ad0 to UDMA33 and rest ad4~ad7 to UDMA100. In the days of > > 4.x, there is something wrong with DMA on ad0, but it will fall back to > > PIO4 automatically without problem. We have been tried to 1) change the > > cable 2) change from primary ata controller to the second, 3) upgrade t= o > > RELENG_6 as of March 11, but all these are failed. There is no options = in > > bios to turn off DMA for the onboard ATA controller. > > Please review the release notes from the 6.1-BETA2 announcement. Fixes > went into 6.1 shortly after BETA2 was released, and are in BETA3 and BETA= 4. Upgrade to today's RELENG_6, it is the same. I'm not quite if this is hardware problem. But however, why can't ata fall back to PIO4 is DMA write error, just like 4.x does? ata0-master: pio=3DPIO4 wdma=3DWDMA2 udma=3DUDMA100 cable=3D80 wire ad0: setting PIO4 on 82C686B chip ad0: setting UDMA100 on 82C686B chip ad0: 38166MB <Seagate ST340016A 3.10> at ata0-master UDMA100 ad0: 78165360 sectors [19158C/16H/255S] 16 sectors/interrupt 1 depth queue /dev/ad0s1d: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/ad0s1d: clean, 624587 free (28411 frags, 74522 blocks, 1.9% fragmentat= ion) /dev/ad0s1e: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/ad0s1e: clean, 826458 free (466 frags, 103249 blocks, 0.0% fragmentati= on) ad0: WARNING - WRITE_DMA UDMA ICRC error (retrying request) LBA=3D191 ad0: WARNING - WRITE_DMA UDMA ICRC error (retrying request) LBA=3D191 ad0: FAILURE - WRITE_DMA status=3D51<READY,DSC,ERROR> error=3D84<ICRC,ABORTED> LBA=3D191 g_vfs_done():ad0s1a[WRITE(offset=3D65536, length=3D2048)]error =3D 5 mount: /dev/ad0s1a: Input/output error Mounting root filesystem rw failed, startup aborted Boot interrupted Enter root password, or ^D to go multi-user then I just continue..., finally it panics kernel trap 12 with interrupts disabled Fatal trap 12: page fault while in kernel mode fault virtual address =3D 0x24 fault code =3D supervisor read, page not present instruction pointer =3D 0x20:0xc04eeee5 stack pointer =3D 0x28:0xe4cfb4f0 frame pointer =3D 0x28:0xe4cfb500 code segment =3D base 0x0, limit 0xfffff, type 0x1b =3D DPL 0, pres 1, def32 1, gran 1 processor eflags =3D resume, IOPL =3D 0 current process =3D 168 (cp) [thread pid 168 tid 100044 ] Stopped at turnstile_broadcast+0x9: movl 0x24(%eax),%eax db> bt Tracing pid 168 tid 100044 td 0xc48de180 turnstile_broadcast(0) at turnstile_broadcast+0x9 _mtx_unlock_sleep(c068aca0,0,0,0) at _mtx_unlock_sleep+0x6c softdep_sync_metadata(c495d660) at softdep_sync_metadata+0x7d4 ffs_syncvnode(c495d660,1) at ffs_syncvnode+0x43d ffs_truncate(c495d660,200,0,880,c4695d00,c48de180) at ffs_truncate+0x77e ufs_direnter(c495d660,c49e1880,e4cfb92c,e4cfbbd0,0) at ufs_direnter+0x85d ufs_makeinode(81a4,c495d660,e4cfbbbc,e4cfbbd0) at ufs_makeinode+0x30f ufs_create(e4cfba84) at ufs_create+0x37 VOP_CREATE_APV(c0671100,e4cfba84) at VOP_CREATE_APV+0x3c VOP_CREATE(c495d660,e4cfbbbc,e4cfbbd0,e4cfbae0) at VOP_CREATE+0x34 vn_open_cred(e4cfbba8,e4cfbcc4,1a4,c4695d00,4) at vn_open_cred+0x20c vn_open(e4cfbba8,e4cfbcc4,1a4,4) at vn_open+0x29 kern_open(c48de180,804c1c8,0,602,21b6) at kern_open+0xd4 open(c48de180,e4cfbcf0) at open+0x22 syscall(3b,3b,3b,8060100,bfbfeec4) at syscall+0x337 Xint0x80_syscall() at Xint0x80_syscall+0x1f --- syscall (5, FreeBSD ELF32, open), eip =3D 0x28137ccf, esp =3D 0xbfbfec7c, ebp =3D 0xbfbfecc8 --- Regards, Rong-En Fan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6eb82e0603160934p6f795c26sbdd63ffda9cfe889>