Re: landisk DMA broken in NetBSD 6
Valery Ushakov <[email protected]> Tue, 5 Nov 2013 19:55:52 +0400
| Newsgroups | gmane.os.netbsd.ports.sh3 |
|---|---|
| Message-ID | <[email protected]> |
On Sun, Nov 18, 2012 at 02:08:31 +0000, John Klos wrote: > After upgrading aPlextor PX-EH25L to NetBSD 6, I noticed that the machine > would crash after a few hours of use and an fsck on another machine would > show all sorts of issues. I think the DMA problem never got fixed. After > compiling a NetBSD 6 kernel with DMA modes disabled, it seems fine: > > wd0 at atabus0 drive 0 > wd0: <HDT722525DLAT80> > wd0: drive supports 16-sector PIO transfers, LBA48 addressing > wd0: 232 GB, 484521 cyl, 16 head, 63 sec, 512 bytes/sect x 488397168 sectors > wd0: 32-bit data port > wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) > wd0(acardide0:0:0): using PIO mode 4 > > Doing a full cvs update of pkgsrc, then an fsck showed no problems. > > Does anyone have a clue about how best to fix this? Can you try reverting revision 1.15 (1.14.8.1 on netbsd-6): revision 1.14.8.1 date: 2012-04-06 21:28:04 +0400; author: riz; state: Exp; lines: +2 -7; Pull up following revision(s) (requested by tsutsui in ticket #160): sys/arch/landisk/landisk/bus_dma.c: revision 1.15 Don't call sh_dcache_inv_range() on BUS_DMASYNC_POSTREAD ops as other mips and arm ports. All cached data is cared on BUS_DMASYNC_PREREAD and invalidating cache without writeback could cause unexpected data loss if specified sync region is not cacheline aligned. This may fix "ffs_alloccg: map corrupted" panic on acardide IDE disks, which didn't happen on USB HDD. -uwe