Skip site navigation (1)Skip section navigation (2)
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>