Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp2983866ybt; Mon, 29 Jun 2020 12:06:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwFbcr59JBIJDdP7DwNa9uQf5a4WgLvJNpH4CmpmncT5RA5MwbhrZX+V6qQhasjCfM5XwP9 X-Received: by 2002:a17:906:90c1:: with SMTP id v1mr14959703ejw.481.1593457614062; Mon, 29 Jun 2020 12:06:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593457614; cv=none; d=google.com; s=arc-20160816; b=kil2X//n0PUq2qJcurHUnL9wbu/u/8d+7K6oCAYVFKGKxjtcxPiEM3C/56BSyFEoTt mOyor40nrY+5MTC8mhx4WxWBl5oAaV4UX44oE4Ttt/Np6ZmXMkc/ULZA4Q4cZ55zNgMf ScnXDoahw5E88+6lZwffnzp3SWcVoJ9TI+FyC8G1R/5eH5USlHHkK8Q/5zEg5b9lg11A 4RCpIQFMP3SRhbajPYwldYzCWE8ylOjTqdGTx0qXY2ntGANGjwwX7GDdAHXXWMfTgoAt nBkzqjPL2C6kIor17jVNGGC6Lp4B4y7I4Z+3RjrYxIoxLf+R1mu0PspKQb5zMlBZFL91 abYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=3zpdI8UmwBB+KQo6imlBDm+KZhNuWD0HZ+7/RXg0Qeo=; b=tOjl5He4fE1NjWax9MBGJNibN9acaPjeEFTjA29H/i2Hyup5pAOZ0jiRjs3FPd0aoV PguvmxfoqL3KqN2mvxAkDMvdyLBg4CmWiH6kggs7T4MsWRUjF+gkLXBCh0FydR6YBNfh elrBRq6F2oT6X9ZFe+O5VWX/VhRaAKxqDefhOODUrJsrmhdVVPQS5XSIwTxgHgf/8vcU 02+EtHVGzImEr/R4u79OP7Iy8GESVcZhw8P7DzGeD9fbcgdUhX3ar9mFTdFQHDktIKzU g59US6+tT+Hy6145xbJcWUO9PrJL03ZgWZK6fZJVjzbJXR7MugVDjnIoCvynMh0VuHrs ajlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=casper.20170209 header.b=NJadWazr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d6si212961eds.492.2020.06.29.12.06.31; Mon, 29 Jun 2020 12:06:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=casper.20170209 header.b=NJadWazr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730482AbgF2TDX (ORCPT + 99 others); Mon, 29 Jun 2020 15:03:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730528AbgF2TCn (ORCPT ); Mon, 29 Jun 2020 15:02:43 -0400 Received: from casper.infradead.org (unknown [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E833C02A551; Mon, 29 Jun 2020 06:04:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=3zpdI8UmwBB+KQo6imlBDm+KZhNuWD0HZ+7/RXg0Qeo=; b=NJadWazrl8uT+evvJdr4n8PtH2 nN4b5x1zFCfERhYewoAOFG4wWd05hgltRhZJ0RGPRTXLipdAAzLtI8PU9/BoDctoMat+0tzS0xzFQ TD793hEyiDS8nNPtuOmVPI07LqkXURV44OS9OVYTMC0afYGlKfdBTtgOeHix3ULRykZOMaA2KOmCH TBkXODizBHR/Whz0vP73PdKkyl66g0m6sjBpYr7cfhODudFhNyJpn4/dV5gAY+bX++GifzTFMWF0m S/U6RvBOjEB/pHXtjc5GMOf2jTKtkMhUVXhrdnnFbCdWNy27QVeyacAys15VwZtdrpUlgF4iREWq1 Ea+R8kNw==; Received: from [2001:4bb8:184:76e3:c71:f334:376b:cf5f] (helo=localhost) by casper.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1jptSB-0004Xt-ER; Mon, 29 Jun 2020 13:04:08 +0000 From: Christoph Hellwig To: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= Cc: Magnus Karlsson , Jonathan Lemon , iommu@lists.linux-foundation.org, netdev@vger.kernel.org, bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] xsk: use dma_need_sync instead of reimplenting it Date: Mon, 29 Jun 2020 15:03:59 +0200 Message-Id: <20200629130359.2690853-5-hch@lst.de> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200629130359.2690853-1-hch@lst.de> References: <20200629130359.2690853-1-hch@lst.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use the dma_need_sync helper instead of (not always entirely correctly) poking into the dma-mapping internals. Signed-off-by: Christoph Hellwig --- net/xdp/xsk_buff_pool.c | 50 +++-------------------------------------- 1 file changed, 3 insertions(+), 47 deletions(-) diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c index 6733e2c59e4835..08b80669f64955 100644 --- a/net/xdp/xsk_buff_pool.c +++ b/net/xdp/xsk_buff_pool.c @@ -2,9 +2,6 @@ #include #include -#include -#include -#include #include "xsk_queue.h" @@ -124,48 +121,6 @@ static void xp_check_dma_contiguity(struct xsk_buff_pool *pool) } } -static bool __maybe_unused xp_check_swiotlb_dma(struct xsk_buff_pool *pool) -{ -#if defined(CONFIG_SWIOTLB) - phys_addr_t paddr; - u32 i; - - for (i = 0; i < pool->dma_pages_cnt; i++) { - paddr = dma_to_phys(pool->dev, pool->dma_pages[i]); - if (is_swiotlb_buffer(paddr)) - return false; - } -#endif - return true; -} - -static bool xp_check_cheap_dma(struct xsk_buff_pool *pool) -{ -#if defined(CONFIG_HAS_DMA) - const struct dma_map_ops *ops = get_dma_ops(pool->dev); - - if (ops) { - return !ops->sync_single_for_cpu && - !ops->sync_single_for_device; - } - - if (!dma_is_direct(ops)) - return false; - - if (!xp_check_swiotlb_dma(pool)) - return false; - - if (!dev_is_dma_coherent(pool->dev)) { -#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \ - defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL) || \ - defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) - return false; -#endif - } -#endif - return true; -} - int xp_dma_map(struct xsk_buff_pool *pool, struct device *dev, unsigned long attrs, struct page **pages, u32 nr_pages) { @@ -179,6 +134,7 @@ int xp_dma_map(struct xsk_buff_pool *pool, struct device *dev, pool->dev = dev; pool->dma_pages_cnt = nr_pages; + pool->dma_need_sync = false; for (i = 0; i < pool->dma_pages_cnt; i++) { dma = dma_map_page_attrs(dev, pages[i], 0, PAGE_SIZE, @@ -187,13 +143,13 @@ int xp_dma_map(struct xsk_buff_pool *pool, struct device *dev, xp_dma_unmap(pool, attrs); return -ENOMEM; } + if (dma_need_sync(dev, dma)) + pool->dma_need_sync = true; pool->dma_pages[i] = dma; } if (pool->unaligned) xp_check_dma_contiguity(pool); - - pool->dma_need_sync = !xp_check_cheap_dma(pool); return 0; } EXPORT_SYMBOL(xp_dma_map); -- 2.26.2