Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp4259681ybz; Tue, 28 Apr 2020 08:19:52 -0700 (PDT) X-Google-Smtp-Source: APiQypLVp456UW2uPNVx2UEx5EqU3wvWQXquXSbbVK8dJzLiqMvekGMv5DcYfl04PnkDo2hszPt5 X-Received: by 2002:a17:906:6d95:: with SMTP id h21mr25145723ejt.66.1588087192528; Tue, 28 Apr 2020 08:19:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588087192; cv=none; d=google.com; s=arc-20160816; b=dvK+iVEdwC/reqX7vH1gwVsJ5H5TQeX7CpmjF2+wJ8vQFRHUxelNGnNarRp+TVplUb 4LvmiLnZZYksfK8RKZfgZkyOF/lH/hLAcjWNTc3UhPtE80KMjrJC1uLO9tBr/C+3ToWv zrQf4G6aoOkdbGFL8oymmkF3Cd0zIK3/bzyzPbztZc4O09b+OpxR3cIJ15xkpvqOSsbC EjsIM9mkOAItEMeJ0oOHMc0oULlt6pOh4CGiL7Rujx2ofpWy5vl/megH5RJIKWoEwIgJ FyUTaxu4TGPZfa73tbQ52HOukN5ZGVzsBZZpPFZM7AjoCiOkA4MJFX/F+HUJuQVuIfnE IX9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:reply-to:dkim-signature; bh=6RQa3/Ivl+erv2MC5JIerdVHsjcRsy5jElt25/tvg/I=; b=jmxkna7TZ/hAlrT/5C1rJbMym/tdQzz1Fr561HgYUOUQ6ibsywKheWXv6LiUOP9QAC Txygpk5V+KP8vnrunSblXn4QeH3Xm2SkW2I6kxz6RqMgmAo8TtbVKNU86E1mcETiuum2 /JwcMexwj7UJNpHwIHLER12Xzx3AXTvNMMbd+6ayF3CU1eF/xBW6wxYY2hjjVGrdbB5A uvIHv5sRTVjp7TL5J+Ej2jBeQR6DtcCTISwFTTSUUqI0+awHmm93uXJOmi8VKmci5qFU qM3ARTo4pJQeFLbkNSPBj9PjNrIP7ipLxa+Ft/vPB5EAp5wJ4JfkUlPgkE4mqQh5NOQC EaCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="c/rDYXyV"; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ha13si2003358ejb.390.2020.04.28.08.19.25; Tue, 28 Apr 2020 08:19:52 -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=pass header.i=@gmail.com header.s=20161025 header.b="c/rDYXyV"; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728085AbgD1PPU (ORCPT + 99 others); Tue, 28 Apr 2020 11:15:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41202 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727108AbgD1PPT (ORCPT ); Tue, 28 Apr 2020 11:15:19 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87D9EC03C1AB for ; Tue, 28 Apr 2020 08:15:19 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id 188so3220475wmc.2 for ; Tue, 28 Apr 2020 08:15:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=reply-to:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=6RQa3/Ivl+erv2MC5JIerdVHsjcRsy5jElt25/tvg/I=; b=c/rDYXyVx+iz8SQtNmdLLH9jiyFcXnPbgx93UfB9RgZOLHKZjwmjlrpMpBrqvtv6Fw e3pdYB7gxw+aEHxM30rDVR+kHPY1rl9jcotFrTRSnlHN/Sy7vvx+LPXJNZwgEggzcTWB LuNAmn0HSFJVT70SwHLf3sgYl/Kx3gKsWpMIEQtqM8k0x9ytKRe8td2LPY1rCkMV3dw7 psiw49gPvhkuxILNWN08yqhHImHmiI27uI55UfLBdsWcku7ZE2NvnEY2pv3lxOw5UkS9 RV6DV8J10tXn4Za5fUe0JvrTCtHazLo7gOx6UIJnFQwRYybjgD3lh2zZDTK0vKtWyWpe IJqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:subject:to:cc:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding:content-language; bh=6RQa3/Ivl+erv2MC5JIerdVHsjcRsy5jElt25/tvg/I=; b=MFTgEKGGn968/m/TAOYWMwd8UEQwDV03oeC2UZ8oio+XO1R2rRK0txU3zTXc3eqwPu bKqARY2ZA5Bo9sG22AG84bnxmxEhqcEu4F79ZPKn8MHL838lGHbgdxfzzeEHNQ7wpZKx jSF9a4ehC49OcUKvA1E1lOAO6xqZtr/QnaiON4Q9Y3Ik7UPKpjIN2ZuXRR3tA+ctKar1 uPp95CmTuHkTr+kHbQw1sHIC0OOgU11Lv410TVr4uP9ALW9noaIvepF0QecsBrQ2fRqu Jm18zIbDy1KxogNPC5TaOa6nAtyCzSXvCrVF/SyqAcpDt/1A9XpcnO4XoARQB/NoST6m ZFIg== X-Gm-Message-State: AGi0Pua1emrJK77M3DeORDDL9dGRXk4JKd0Z+fgHhrmfONprnegqKJhc chECHcNYTS1Kln/LBVk+T0Y= X-Received: by 2002:a7b:c5d4:: with SMTP id n20mr5373467wmk.92.1588086918255; Tue, 28 Apr 2020 08:15:18 -0700 (PDT) Received: from ?IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7? ([2a02:908:1252:fb60:be8a:bd56:1f94:86e7]) by smtp.gmail.com with ESMTPSA id 74sm26988379wrk.30.2020.04.28.08.15.17 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Apr 2020 08:15:17 -0700 (PDT) Reply-To: christian.koenig@amd.com Subject: Re: [RFC 10/17] drm: radeon: fix sg_table nents vs. orig_nents misuse To: Marek Szyprowski , dri-devel@lists.freedesktop.org, iommu@lists.linux-foundation.org, linaro-mm-sig@lists.linaro.org, linux-kernel@vger.kernel.org Cc: Daniel Vetter , Bartlomiej Zolnierkiewicz , David Airlie , intel-gfx@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, Christoph Hellwig , Benjamin Gaignard , Robin Murphy , Sumit Semwal , linux-arm-kernel@lists.infradead.org References: <20200428132005.21424-1-m.szyprowski@samsung.com> <20200428132005.21424-11-m.szyprowski@samsung.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <94c45ded-6544-a922-7177-8255b44c4cfa@gmail.com> Date: Tue, 28 Apr 2020 17:15:16 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20200428132005.21424-11-m.szyprowski@samsung.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am 28.04.20 um 15:19 schrieb Marek Szyprowski: > The Documentation/DMA-API-HOWTO.txt states that dma_map_sg returns the > numer of the created entries in the DMA address space. However the > subsequent calls to dma_sync_sg_for_{device,cpu} and dma_unmap_sg must be > called with the original number of entries passed to dma_map_sg. The > sg_table->nents in turn holds the result of the dma_map_sg call as stated > in include/linux/scatterlist.h. Adapt the code to obey those rules. > > Signed-off-by: Marek Szyprowski Reviewed-by: Christian König > --- > drivers/gpu/drm/radeon/radeon_ttm.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c > index 5d50c9e..4770880 100644 > --- a/drivers/gpu/drm/radeon/radeon_ttm.c > +++ b/drivers/gpu/drm/radeon/radeon_ttm.c > @@ -481,7 +481,7 @@ static int radeon_ttm_tt_pin_userptr(struct ttm_tt *ttm) > { > struct radeon_device *rdev = radeon_get_rdev(ttm->bdev); > struct radeon_ttm_tt *gtt = (void *)ttm; > - unsigned pinned = 0, nents; > + unsigned pinned = 0; > int r; > > int write = !(gtt->userflags & RADEON_GEM_USERPTR_READONLY); > @@ -522,8 +522,8 @@ static int radeon_ttm_tt_pin_userptr(struct ttm_tt *ttm) > goto release_sg; > > r = -ENOMEM; > - nents = dma_map_sg(rdev->dev, ttm->sg->sgl, ttm->sg->nents, direction); > - if (nents == 0) > + ttm->sg->nents = dma_map_sg(rdev->dev, ttm->sg->sgl, > + if (ttm->sg->nents == 0) > goto release_sg; > > drm_prime_sg_to_page_addr_arrays(ttm->sg, ttm->pages, > @@ -554,9 +554,9 @@ static void radeon_ttm_tt_unpin_userptr(struct ttm_tt *ttm) > return; > > /* free the sg table and pages again */ > - dma_unmap_sg(rdev->dev, ttm->sg->sgl, ttm->sg->nents, direction); > + dma_unmap_sg(rdev->dev, ttm->sg->sgl, ttm->sg->orig_nents, direction); > > - for_each_sg_page(ttm->sg->sgl, &sg_iter, ttm->sg->nents, 0) { > + for_each_sg_page(ttm->sg->sgl, &sg_iter, ttm->sg->orig_nents, 0) { > struct page *page = sg_page_iter_page(&sg_iter); > if (!(gtt->userflags & RADEON_GEM_USERPTR_READONLY)) > set_page_dirty(page);