Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3658987pxb; Mon, 24 Jan 2022 14:40:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJxHkub+ExztztCvHnN+R1WJWNlUBprWYFaxRUUihiUaXLQDuGdppEcxOix2wX3fH/47jP+y X-Received: by 2002:a17:90a:4407:: with SMTP id s7mr486123pjg.126.1643064004909; Mon, 24 Jan 2022 14:40:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643064004; cv=none; d=google.com; s=arc-20160816; b=WyoF0Y6iCBABwHcdmyP0A61jEONJobVxFSKrnJ9vZJshA5EoLMGXFTsPvsa6Dm3lIy HM+fkgmeOfrW1zlf63gfA6xVeQKgZzGweiizJ/r7BVKfWTzfsAu0Wx4zoPpHo+6Y0gS0 J+FCcZJ5Wz3G+KmEBTEqCvfkxEvbmaJNxlxPvf8Hs4RsvlLrt8wuPPsKSbDPlRu74Nzp w7UfVXn6FpuQg932h6SL/+r1i5hZVhqH/6kwDSp6dElZorIX7VVtGR/gVyQqgwRS1Z3k jUN56qriw2b25uZCjMazqYHZfCFhiHf8zGPl8RrtPplY9f8A/dYpLoMHNketYT2OKKvQ bECg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=gpvGOVPxT1Y8xM7aSxRscCFgE4xqr8U1LPPnsEikEWg=; b=bHrXR0Z3KVPUFep9f/9+MHo0fMBpFaITEVew2vNuje/6r90AxIReEGrY/GoRM0QOSu kxybZiNL6CRmvx90/VWWTLWMrgxCKGjeSBKBIJBsl8mS2pm17Jo9NrHjuUvppexa5zz3 QAA1El3Dx/7N2+2GeDGEfwjtQ5/IfgG9jKABVbxneo679M3PfN5VmWy4zdlBXqzlbh3R ux2V4MhbN5sQ+sffln1dRB97SiyFLIbdvt/4Zd9jX13mQbny5McNIPgDdjU43QsHnjvj j7cO7N2ValnftW/dLhzTspJW5pGWrk88qbBr10TWbN+BTy2C5a/wJLrxjv3QunL26BeK 0iJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=shexEMPQ; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c2si4887816plg.458.2022.01.24.14.39.53; Mon, 24 Jan 2022 14:40:04 -0800 (PST) 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=pass header.i=@linuxfoundation.org header.s=korg header.b=shexEMPQ; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1835244AbiAXWfv (ORCPT + 99 others); Mon, 24 Jan 2022 17:35:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1456718AbiAXVjy (ORCPT ); Mon, 24 Jan 2022 16:39:54 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 18B17C0419CB; Mon, 24 Jan 2022 12:26:40 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id AC4B76150D; Mon, 24 Jan 2022 20:26:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94D08C340E5; Mon, 24 Jan 2022 20:26:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643055999; bh=Ps18ta2PSjn+ctkFGbm3u5EjvOxYZsiEunta9c6c+Vk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=shexEMPQcSnN0tzktB/Sg2EAvjMIG9P8Dv2p0uPqxmdXQqqbXIKcSji3l2IYblsWq HJgV68nq7Kq0HwDPei6MKJX9ORj+OuJ0FoVJ4+k8NlWzzUwKkf+7VgOzETuo/NF/7q 32spHKY1np3m/5FKZ5lrNuFE4xguf3eFyB3MpdCA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Aya Levin , Gal Pressman , Saeed Mahameed , Sasha Levin Subject: [PATCH 5.15 337/846] net/mlx5e: Fix page DMA map/unmap attributes Date: Mon, 24 Jan 2022 19:37:34 +0100 Message-Id: <20220124184112.545502437@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184100.867127425@linuxfoundation.org> References: <20220124184100.867127425@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Aya Levin [ Upstream commit 0b7cfa4082fbf550595bc0e40f05614bd83bf0cd ] Driver initiates DMA sync, hence it may skip CPU sync. Add DMA_ATTR_SKIP_CPU_SYNC as input attribute both to dma_map_page and dma_unmap_page to avoid redundant sync with the CPU. When forcing the device to work with SWIOTLB, the extra sync might cause data corruption. The driver unmaps the whole page while the hardware used just a part of the bounce buffer. So syncing overrides the entire page with bounce buffer that only partially contains real data. Fixes: bc77b240b3c5 ("net/mlx5e: Add fragmented memory support for RX multi packet WQE") Fixes: db05815b36cb ("net/mlx5e: Add XSK zero-copy support") Signed-off-by: Aya Levin Reviewed-by: Gal Pressman Signed-off-by: Saeed Mahameed Signed-off-by: Sasha Levin --- drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c | 4 ++-- drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c index 7b562d2c8a196..279cd8f4e79f7 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c @@ -11,13 +11,13 @@ static int mlx5e_xsk_map_pool(struct mlx5e_priv *priv, { struct device *dev = mlx5_core_dma_dev(priv->mdev); - return xsk_pool_dma_map(pool, dev, 0); + return xsk_pool_dma_map(pool, dev, DMA_ATTR_SKIP_CPU_SYNC); } static void mlx5e_xsk_unmap_pool(struct mlx5e_priv *priv, struct xsk_buff_pool *pool) { - return xsk_pool_dma_unmap(pool, 0); + return xsk_pool_dma_unmap(pool, DMA_ATTR_SKIP_CPU_SYNC); } static int mlx5e_xsk_get_pools(struct mlx5e_xsk *xsk) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c index 29a6586ef28dc..0015545d5235b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -271,8 +271,8 @@ static inline int mlx5e_page_alloc_pool(struct mlx5e_rq *rq, if (unlikely(!dma_info->page)) return -ENOMEM; - dma_info->addr = dma_map_page(rq->pdev, dma_info->page, 0, - PAGE_SIZE, rq->buff.map_dir); + dma_info->addr = dma_map_page_attrs(rq->pdev, dma_info->page, 0, PAGE_SIZE, + rq->buff.map_dir, DMA_ATTR_SKIP_CPU_SYNC); if (unlikely(dma_mapping_error(rq->pdev, dma_info->addr))) { page_pool_recycle_direct(rq->page_pool, dma_info->page); dma_info->page = NULL; @@ -293,7 +293,8 @@ static inline int mlx5e_page_alloc(struct mlx5e_rq *rq, void mlx5e_page_dma_unmap(struct mlx5e_rq *rq, struct mlx5e_dma_info *dma_info) { - dma_unmap_page(rq->pdev, dma_info->addr, PAGE_SIZE, rq->buff.map_dir); + dma_unmap_page_attrs(rq->pdev, dma_info->addr, PAGE_SIZE, rq->buff.map_dir, + DMA_ATTR_SKIP_CPU_SYNC); } void mlx5e_page_release_dynamic(struct mlx5e_rq *rq, -- 2.34.1