Date: Mon, 25 Jul 2011 14:39:23 +0000 (UTC) From: Marius Strobl <marius@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r224312 - stable/8/sys/sparc64/sparc64 Message-ID: <201107251439.p6PEdNIV060578@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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?201107251439.p6PEdNIV060578>