Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Apr 2011 21:56:28 +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: r220931 - head/sys/sparc64/sparc64
Message-ID:  <201104212156.p3LLuSPb013962@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Thu Apr 21 21:56:28 2011
New Revision: 220931
URL: http://svn.freebsd.org/changeset/base/220931

Log:
  - Use the streaming cache unless BUS_DMA_COHERENT is specified. Since
    r220375 all drivers enabled in the sparc64 GENERIC should be either
    correctly using bus_dmamap_sync(9) calls or supply BUS_DMA_COHERENT
    when appropriate or as a workaround for missing bus_dmamap_sync(9)
    calls (sound(4) drivers and partially sym(4)). In at least some
    configurations taking advantage of the streaming cache results in
    a modest performance improvement.
  - Remove the memory barrier for BUS_DMASYNC_PREREAD which as the
    comment already suggested is bogus.
  - Add my copyright for having implemented several things like support
    for the Fire and Oberon IOMMUs, taking over PROM IOMMU mappings etc.

Modified:
  head/sys/sparc64/sparc64/iommu.c

Modified: head/sys/sparc64/sparc64/iommu.c
==============================================================================
--- head/sys/sparc64/sparc64/iommu.c	Thu Apr 21 21:15:11 2011	(r220930)
+++ head/sys/sparc64/sparc64/iommu.c	Thu Apr 21 21:56:28 2011	(r220931)
@@ -28,6 +28,7 @@
 /*-
  * Copyright (c) 1999-2002 Eduardo Horvath
  * Copyright (c) 2001-2003 Thomas Moestl
+ * Copyright (c) 2007, 2009 Marius Strobl <marius@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -77,7 +78,6 @@ __FBSDID("$FreeBSD$");
  * - When running out of DVMA space, return EINPROGRESS in the non-
  *   BUS_DMA_NOWAIT case and delay the callback until sufficient space
  *   becomes available.
- * - Use the streaming cache unless BUS_DMA_COHERENT is specified.
  */
 
 #include "opt_iommu.h"
@@ -564,17 +564,8 @@ static __inline int
 iommu_use_streaming(struct iommu_state *is, bus_dmamap_t map, bus_size_t size)
 {
 
-	/*
-	 * This cannot be enabled yet, as many driver are still missing
-	 * bus_dmamap_sync() calls.  As soon as there is a BUS_DMA_STREAMING
-	 * flag, this should be reenabled conditionally on it.
-	 */
-#ifdef notyet
 	return (size >= IOMMU_STREAM_THRESH && IOMMU_HAS_SB(is) &&
 	    (map->dm_flags & DMF_COHERENT) == 0);
-#else
-	return (0);
-#endif
 }
 
 /*
@@ -1182,9 +1173,6 @@ iommu_dvmamap_sync(bus_dma_tag_t dt, bus
 
 	if ((map->dm_flags & DMF_LOADED) == 0)
 		return;
-	/* XXX This is probably bogus. */
-	if ((op & BUS_DMASYNC_PREREAD) != 0)
-		membar(Sync);
 	if ((map->dm_flags & DMF_STREAMED) != 0 &&
 	    ((op & BUS_DMASYNC_POSTREAD) != 0 ||
 	    (op & BUS_DMASYNC_PREWRITE) != 0)) {



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