cvs commit: src/sys/alpha/isa isa_dma.c src/sys/amd64/isa isa_dma.c src/sys/i386/isa isa_dma.c src/sys/ia64/isa isa_dma.c src/sys/pc98/pc98 isa_dma.c src/sys/isa isavar.h src/sys/vm vm_page.c

M. Warner Losh imp at bsdimp.com
Wed Sep 15 12:49:45 PDT 2004


In message: <20040915152822.GD36708 at green.homeunix.org>
            Brian Fundakowski Feldman <green at freebsd.org> writes:
: On Wed, Sep 15, 2004 at 12:09:51PM +0000, Poul-Henning Kamp wrote:
: > phk         2004-09-15 12:09:51 UTC
: > 
: >   FreeBSD src repository
: > 
: >   Modified files:
: >     sys/alpha/isa        isa_dma.c 
: >     sys/amd64/isa        isa_dma.c 
: >     sys/i386/isa         isa_dma.c 
: >     sys/ia64/isa         isa_dma.c 
: >     sys/pc98/pc98        isa_dma.c 
: >     sys/isa              isavar.h 
: >     sys/vm               vm_page.c 
: >   Log:
: >   Add new a function isa_dma_init() which returns an errno when it fails
: >   and which takes a M_WAITOK/M_NOWAIT flag argument.
: >   
: >   Add compatibility isa_dmainit() macro which whines loudly if
: >   isa_dma_init() fails.
: >   
: >   Problem uncovered by:   tegge
: 
: David Yeske is running into a problem with it failing in fdc(4).  I am not
: sure how 40KB of memory is too big for it to allocate... but I think it
: might be appropriate to try some sort of fallback.
: 
: --- /usr/src/sys/dev/fdc/fdc.c	Fri Aug 27 19:15:22 2004
: +++ tmp/fdc.c	Tue Sep  7 21:44:26 2004
: @@ -1334,7 +1334,11 @@
:  		if (!(fdc->flags & FDC_NODMA) && fdc->dmacnt++ == 0) {
:  			mtx_lock(&Giant);
:  			isa_dma_acquire(fdc->dmachan);
: -			isa_dmainit(fdc->dmachan, MAX_BYTES_PER_CYL);
: +			if (isa_dmainit(fdc->dmachan, MAX_BYTES_PER_CYL) != 0) {
: +				isa_dma_release(fdc->dmachan);
: +				fdc->dmacnt--;
: +				fdc->flags |= FDC_NODMA;
: +			}
:  			mtx_unlock(&Giant);
:  		}
:  	}

I have patches, improved by Tor and phk, that move the acquisision of
the dma buffer to attach.

The problem is that 40k isn't too big, but 40k below 16MB is very hard
after boon on large memory machines due to the amount of RAM allocated
in the boot process.

Warner


More information about the cvs-src mailing list