Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Sep 2006 15:34:13 -0700 (PDT)
From:      =?ISO-8859-1?Q?Mikko_Ty=F6l=E4j=E4rvi?= <mbsd@pacbell.net>
To:        scottl@freebsd.org
Cc:        current@freebsd.org
Subject:   i386/busmda_machdep.c 1.81 broke if_bfe
Message-ID:  <20060924151759.D788@antec.home>

next in thread | raw e-mail | index | archive | help
Hi,

It seems to me that with version 1.81 of i386/busdma_machdep.c devices
that need bounce buffers, but do not use a filter function, will no
longer work.

The run_filter() function contains the logic to detect if a bounce
buffer is needed also when there is no filter function, so I believe
it has to be called for devices that are marked as BUS_DMA_COULD_BOUNCE
as well as for those that provide a filter function.

For example, this makes my bfe0 interface work again:

Index: busdma_machdep.c
===================================================================
RCS file: /net/cvs/home/ncvs/src/sys/i386/i386/busdma_machdep.c,v
retrieving revision 1.83
diff -u -b -r1.83 busdma_machdep.c
--- busdma_machdep.c	24 Sep 2006 19:24:26 -0000	1.83
+++ busdma_machdep.c	24 Sep 2006 21:45:39 -0000
@@ -286,7 +286,7 @@

  	if (newtag->lowaddr < ptoa((vm_paddr_t)Maxmem)
  	 || newtag->alignment > 1)
-		newtag->flags |= BUS_DMA_COULD_BOUNCE;
+		newtag->flags |= BUS_DMA_COULD_BOUNCE | BUS_DMA_USE_FILTER;

  	if (((newtag->flags & BUS_DMA_COULD_BOUNCE) != 0) &&
  	    (flags & BUS_DMA_ALLOCNOW) != 0) {


    $.02,
    /Mikko




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060924151759.D788>