Date: Sun, 20 Dec 1998 14:24:43 -0800 (PST) From: Julian Elischer <julian@whistle.com> To: lcremean@tidalwave.net Cc: Howard <foxfair@FreeBSD.ORG>, current@FreeBSD.ORG Subject: Re: cvs commit: src/sys/pci pcisupport.c Message-ID: <Pine.BSF.3.95.981220141527.8357H-100000@current1.whistle.com> In-Reply-To: <19981220165642.A6616@tidalwave.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 20 Dec 1998, Lee Cremeans wrote: > On Sat, Dec 19, 1998 at 11:48:49PM -0800, Julian Elischer wrote: > > Whistle has some support for Cyrix 5530 UltraDMA support that will come in > > when cleaned up. > > Hm, cool. I wonder if it's at all similar to the Acer UDMA engine, which btw > I seem to have at least partially working at this point. (Streaming > transfers -- i.e. dd if=/dev/rwd0 of=/dev/null -- work, but if you, say, run > fsck or boot the system multi-user, it'll work fine for a few seconds, then > get some interrupt timeouts, then work again for a bit, then the cycle > repeats. I think the UDMA cycle time needs to be tweaked, but I'm not sure.) > > > > Unfortunatly the 5530 UDMA engine has some serious bugs. > > some of which can't be worked around from ide_pci.c alone.. > > Eeee, like what? > > -- > +--------------------------------------------------------------------+ > | Lee Cremeans -- Manassas, VA, USA (WakkyMouse on DALnet and WTnet)| > | lcremean@tidalwave.net| http://st-lcremean.tidalwave.net | > > > try: limit the maximum transfer in param.h to 64KB (It's presently 128KB) try: altering ide_pci_dmaverify to not allow DMA on transfers not on 16 (or larger) byte boundaries. (presently only dissallows odd transfers) try: removing the following code from ide_pci.c /* * Coalesce if physically contiguous and not crossing * 64k boundary. */ if ((prd_base + prd_count == nbase) && ((((nend - 1) ^ prd_base) & ~0xffff) == 0)) { prd_count += ncount; } else try: the following change in wd.c: (note mail will have munged this. do it by hand) *** wd.c 1998/07/13 08:23:01 1.172 --- wd.c 1998/11/18 01:04:50 *************** *** 1253,1260 **** if (du->dk_flags & (DKFL_DMA|DKFL_USEDMA)) { /* XXX SMP boxes sometimes generate an early intr. Why? */ if((wddma[du->dk_interface].wdd_dmastatus(du->dk_dmacookie) & WDDS_INTERRUPT) ! == 0) ! return; dmastat = wddma[du->dk_interface].wdd_dmadone(du->dk_dmacookie); } --- 1263,1269 ---- if (du->dk_flags & (DKFL_DMA|DKFL_USEDMA)) { /* XXX SMP boxes sometimes generate an early intr. Why? */ if((wddma[du->dk_interface].wdd_dmastatus(du->dk_dmacookie) & WDDS_INTERRUPT) ! != 0) dmastat = wddma[du->dk_interface].wdd_dmadone(du->dk_dmacookie); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95.981220141527.8357H-100000>