Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp2061601rwb; Fri, 12 Aug 2022 11:12:37 -0700 (PDT) X-Google-Smtp-Source: AA6agR4eButU5QDX4hG42dTK/vaqSOEdqL8poIJxd8MB0u5LeeYwC1dgOZ/bsqQw4lsl3yM52Hj0 X-Received: by 2002:aa7:c9c2:0:b0:440:b458:9403 with SMTP id i2-20020aa7c9c2000000b00440b4589403mr4667292edt.132.1660327956860; Fri, 12 Aug 2022 11:12:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660327956; cv=none; d=google.com; s=arc-20160816; b=zu4JMCtRMgQQTXwnstqdOh2fimIhREuaD8JqkiqZlP1rfkxhMHAr+ensaxOcNSNJMz shSHuHfQfybu9zRqgDSR1C5glE7uU9v/Tk7cTRUEqOkdfSPWkcV7PqAf5a6I66Pg872D xfYPmCrBkknQWcb2W5Uih7jyiu8LLl2wfNW8j1Twjp7ehI0R/OS4qPWdNNhR0QA48sAR CCdKlb70UfJZP/FEuvAYRnIoK1fHuU45k7i8pk1NfNUCRJDk802sl9tSVIjWFXYjBzpA cQk0ZZmXD9npTZRhdRELTAW+CkIkU/zqENfklrc8ODMtWj6vhh6B0DfupeZ9OEztdIdu 5Z6g== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=w8rPxxUwax5JSBYc+MunKfzJoBwcTejD8FTqXrjwB9Q=; b=kS5X4gNmQ/mfFTqPuA/UCW44E27ea/0m5ackt+B0HxeeLaxgua7twAzWYvUYDLAZgd DQpPKC3bNe4kgXgoqCQ4Y2XKa4boxUA+oN9vrFMLeP4RW4F64eiqHFPbRm5X3viM3M9S Ht+mHXZhrx8DvR/0ThnEa+/XMi1VsMk1HGq8ycovCsEFCxjTsmaBBT91SrOxG7MsNs8/ loGH5eolMqK3bmYBspSrPNG+2bOuK2ulliLyQJjaaFx2TbrCIk9NPFIdfeMYjnWoRDyA EfuVUJIGoHOCaVTmv9yEx3j09UzsXC5Blwm8ZUHz/iZhiQGODDuyx/HeBmvngTjhUfHK eWtA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ZwbNXCMd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i11-20020a1709064fcb00b007314bba0e9bsi2604517ejw.353.2022.08.12.11.12.03; Fri, 12 Aug 2022 11:12:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ZwbNXCMd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S238246AbiHLR6K (ORCPT + 99 others); Fri, 12 Aug 2022 13:58:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231526AbiHLR6D (ORCPT ); Fri, 12 Aug 2022 13:58:03 -0400 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84DD4B2859; Fri, 12 Aug 2022 10:58:02 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id h13so1955855wrf.6; Fri, 12 Aug 2022 10:58:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc; bh=w8rPxxUwax5JSBYc+MunKfzJoBwcTejD8FTqXrjwB9Q=; b=ZwbNXCMdTWEOw1KTNDeKg360UJPG1HCsisp9+uIXW+AigUK7JmFTPhWn7FWmgINCpT rY7PLkCGfIgguc5MJ32GWWbMwoRGbrciy52PmMX1/5lfI+D30PYnOCwwVfBKBtPaUO/j jYYLJn+GgsmN4Sun3E86Ttf/CyJOHKdJX0obiuUQjFrYu9dJaoyFzwwcqIuPBGKsMxPe M72hExseMtt+PHjI93iQSBcrxtHFZL/mjeY81Pz5VAWFt9PzKIBklpHqsfs4HOpWlXKp 1568kstFdwaTNQgqRboZuJDIWBp5MvvF5h0Q7MacN0YSXLEmyowtVOQpKpMF/mqMtWQ3 dQyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc; bh=w8rPxxUwax5JSBYc+MunKfzJoBwcTejD8FTqXrjwB9Q=; b=D14ZPtlzlq8c7e+6mQJOgk8oUVYy9cc9vIVSzKd4gEbgaO852DMrMsDOxA4o8NOIlO oNUq/1WKBfV3z6UgyYd8Vc2agud904zDIqPJUSWhD8kt6LeHOztAx/oZHjI2C0wxSp8z 7tY/0Jnfi8+3YMy+tCdB2wYM0Bss+ocVDntlwZAQtzi/3+XWSCXKO+TzgK/HjIs5eRP5 zJb14VBHMZdNpDkxN5r/rEeOnRiP1UE/hJHZ6nh3KmJgB8ZEk1DMSZroFshLx654Nkl1 kXxebbO63ETqJ/rSzl5K7Ld5vzKAUEpVz7CCH8NCv5dI9JrEz5Ogl27KaEcQzc76hWdE EwAw== X-Gm-Message-State: ACgBeo0vutrv3g2Q/YvFDBCMTk0gIuwhQiGaC1OZTLh3KZR88FKrUOcT GBD0O9DkOFd8lsuM9ylRK7X6WmtZLj0= X-Received: by 2002:a5d:5848:0:b0:222:c8cd:288 with SMTP id i8-20020a5d5848000000b00222c8cd0288mr2788260wrf.34.1660327081009; Fri, 12 Aug 2022 10:58:01 -0700 (PDT) Received: from localhost.localdomain (host-79-53-105-123.retail.telecomitalia.it. [79.53.105.123]) by smtp.gmail.com with ESMTPSA id c3-20020adffb03000000b002206236ab3dsm129831wrr.3.2022.08.12.10.57.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Aug 2022 10:57:59 -0700 (PDT) From: "Fabio M. De Francesco" To: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Pan, Xinhui" , David Airlie , Daniel Vetter , Sumit Semwal , Felix Kuehling , Nirmoy Das , Jonathan Kim , Philip Yang , Matthew Auld , Zack Rusin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org Cc: "Fabio M. De Francesco" , Ira Weiny Subject: [PATCH] drm/amd/amdgpu: Replace kmap() with kmap_local_page() Date: Fri, 12 Aug 2022 19:57:53 +0200 Message-Id: <20220812175753.22926-1-fmdefrancesco@gmail.com> X-Mailer: git-send-email 2.37.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org kmap() is being deprecated in favor of kmap_local_page(). There are two main problems with kmap(): (1) It comes with an overhead as mapping space is restricted and protected by a global lock for synchronization and (2) it also requires global TLB invalidation when the kmap’s pool wraps and it might block when the mapping space is fully utilized until a slot becomes available. With kmap_local_page() the mappings are per thread, CPU local, can take page faults, and can be called from any context (including interrupts). It is faster than kmap() in kernels with HIGHMEM enabled. Furthermore, the tasks can be preempted and, when they are scheduled to run again, the kernel virtual addresses are restored and are still valid. Since its use in amdgpu/amdgpu_ttm.c is safe, it should be preferred. Therefore, replace kmap() with kmap_local_page() in amdgpu/amdgpu_ttm.c. Suggested-by: Ira Weiny Signed-off-by: Fabio M. De Francesco --- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 3b4c19412625..c11657b5915f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -2301,9 +2301,9 @@ static ssize_t amdgpu_iomem_read(struct file *f, char __user *buf, if (p->mapping != adev->mman.bdev.dev_mapping) return -EPERM; - ptr = kmap(p); + ptr = kmap_local_page(p); r = copy_to_user(buf, ptr + off, bytes); - kunmap(p); + kunmap_local(ptr); if (r) return -EFAULT; @@ -2352,9 +2352,9 @@ static ssize_t amdgpu_iomem_write(struct file *f, const char __user *buf, if (p->mapping != adev->mman.bdev.dev_mapping) return -EPERM; - ptr = kmap(p); + ptr = kmap_local_page(p); r = copy_from_user(ptr + off, buf, bytes); - kunmap(p); + kunmap_local(ptr); if (r) return -EFAULT; -- 2.37.1