Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Nov 2008 22:09:03 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r185108 - head/sys/dev/dcons
Message-ID:  <200811192209.mAJM933q029939@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Wed Nov 19 22:09:03 2008
New Revision: 185108
URL: http://svn.freebsd.org/changeset/base/185108

Log:
  Given that the buffer dcons_crom(4) exposes is used for both input
  and output, set BUS_DMA_COHERENT when creating the DMA map used for
  loading the buffer. As a side-effect this solves locking issues on
  sparc64 when dcons(4) calls bus_dmamap_sync(9) while in an interrupt
  filter, which are executed in a critical section, and iommu(4) has
  to use a sleep lock when taking advantage of the streaming buffer.
  
  Reported and tested by:	kensmith
  Approved by:		simokawa

Modified:
  head/sys/dev/dcons/dcons_crom.c

Modified: head/sys/dev/dcons/dcons_crom.c
==============================================================================
--- head/sys/dev/dcons/dcons_crom.c	Wed Nov 19 21:12:26 2008	(r185107)
+++ head/sys/dev/dcons/dcons_crom.c	Wed Nov 19 22:09:03 2008	(r185108)
@@ -229,7 +229,7 @@ dcons_crom_attach(device_t dev)
 		/*lockarg*/&Giant,
 #endif
 		&sc->dma_tag);
-	bus_dmamap_create(sc->dma_tag, 0, &sc->dma_map);
+	bus_dmamap_create(sc->dma_tag, BUS_DMA_COHERENT, &sc->dma_map);
 	bus_dmamap_load(sc->dma_tag, sc->dma_map,
 	    (void *)dcons_conf->buf, dcons_conf->size,
 	    dmamap_cb, sc, 0);



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