svn commit: r224312 - stable/8/sys/sparc64/sparc64
Marius Strobl
marius at FreeBSD.org
Mon Jul 25 14:39:23 UTC 2011
Author: marius
Date: Mon Jul 25 14:39:22 2011
New Revision: 224312
URL: http://svn.freebsd.org/changeset/base/224312
Log:
MFC: r220931
- Use the streaming cache unless BUS_DMA_COHERENT is specified. Since
r220375 (MFC'ed to stable/8 in r221191) 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:
stable/8/sys/sparc64/sparc64/iommu.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/geom/label/ (props changed)
Modified: stable/8/sys/sparc64/sparc64/iommu.c
==============================================================================
--- stable/8/sys/sparc64/sparc64/iommu.c Mon Jul 25 14:34:30 2011 (r224311)
+++ stable/8/sys/sparc64/sparc64/iommu.c Mon Jul 25 14:39:22 2011 (r224312)
@@ -28,6 +28,7 @@
/*-
* Copyright (c) 1999-2002 Eduardo Horvath
* Copyright (c) 2001-2003 Thomas Moestl
+ * Copyright (c) 2007, 2009 Marius Strobl <marius at 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)) {
More information about the svn-src-stable-8
mailing list