Subject: Re: NetBSD-1.5S-5 on U30
To: None <and@genesyslab.com, mrg@eterna.com.au>
From: None <eeh@netbsd.org>
List: port-sparc64
Date: 03/21/2001 00:48:41
	I saw this before sbus streaming cache was fixed by adding
	BUS_DMA_COHERENT flags to bus_dmamap_load in hme.c.
	I think iommu.c changes from BUS_DMA_COHERENT to BUS_DMA_STREAMING
	broke the driver(s). The fix should be straightforward
	replacing those defines in all sbus-related drivers to new define.
	The patch for hme.c is below.

		Andrey

	Index: hme.c
	===================================================================
	RCS file: /cvsroot/syssrc/sys/dev/ic/hme.c,v
	retrieving revision 1.20
	diff -c -r1.20 hme.c
	*** hme.c       2000/12/14 06:27:25     1.20
	--- hme.c       2001/03/21 00:27:56
	***************
	*** 232,238 ****
	        /* Load the buffer */
	        if ((error = bus_dmamap_load(dmatag, sc->sc_dmamap,
	            sc->sc_rb.rb_membase, size, NULL,
	!           BUS_DMA_NOWAIT|BUS_DMA_COHERENT)) != 0) {
	                printf("%s: DMA buffer map load error %d\n",
	                        sc->sc_dev.dv_xname, error);
	                bus_dmamem_free(dmatag, &seg, rseg);
	--- 232,238 ----
	        /* Load the buffer */
	        if ((error = bus_dmamap_load(dmatag, sc->sc_dmamap,
	            sc->sc_rb.rb_membase, size, NULL,
	!           BUS_DMA_NOWAIT|BUS_DMA_STREAMING)) != 0) {
	                printf("%s: DMA buffer map load error %d\n",
	                        sc->sc_dev.dv_xname, error);
	                bus_dmamem_free(dmatag, &seg, rseg);

This is actually exactly the opposite of what you
want.  BUS_DMA_STREAMING == !BUS_DMA_COHERENT.

Eduardo