From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B006FC4332F for ; Thu, 14 Dec 2023 08:10:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0D65C8D00A3; Thu, 14 Dec 2023 03:10:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0864E8D00A2; Thu, 14 Dec 2023 03:10:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8F028D00A3; Thu, 14 Dec 2023 03:10:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D8C8E8D00A2 for ; Thu, 14 Dec 2023 03:10:52 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B56EDA1EA1 for ; Thu, 14 Dec 2023 08:10:52 +0000 (UTC) X-FDA: 81564702744.25.35C3C8A Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by imf28.hostedemail.com (Postfix) with ESMTP id 3979DC0009 for ; Thu, 14 Dec 2023 08:10:50 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=bdsoCwvR; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf28.hostedemail.com: domain of fabio.maria.de.francesco@linux.intel.com has no SPF policy when checking 192.198.163.11) smtp.mailfrom=fabio.maria.de.francesco@linux.intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702541450; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=CNTI+KMQLvhKnjeNbo+J/agOUmrbDWV8WlyDwZcJPxQ=; b=ApQhglJNqVW53V3uj3jepYoUQQv15hrS0c2GzCXUIj5SnSjWDbZm4FVNfKMKblCcxKuNwR 07jTy84c4zRccrFezIYCGvOtz3Q6reLCUlX5x00SJWhNU291MFY2b4Mx+ZP/+NVQ/bB4z3 8mTPsluEWL1gwerpuXKjGG/DomZPrEg= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=bdsoCwvR; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf28.hostedemail.com: domain of fabio.maria.de.francesco@linux.intel.com has no SPF policy when checking 192.198.163.11) smtp.mailfrom=fabio.maria.de.francesco@linux.intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702541450; a=rsa-sha256; cv=none; b=VwNHAVvBKJmE3ChXf6zsYG4rbI8cL9TPWC5/5tQa1BcRLGhiEAApwMZUv3d7W7hyo1RuXc 0bHMZAAXIXoRHjjYDxKpjK8kOspFDNBBEMTEk7OUF+L2UVvORjFmd17+YLT5c4bR1M16xr 87+kazylOt9l2OM1Y2jwzS5sVFBJZUM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1702541450; x=1734077450; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=i8XSla6hrQt6zIq4G6Aba+318oa4y1bEQ+Pf+qR2Hcw=; b=bdsoCwvR3foqn/M+zrwiIR6fl3TCc046RxZXgpMhM05ySQr6S1BBrmLo rqqsh9b+aN02N86elhl9H9EJFbNKFVW1/oA+a0X8KoXVFUfhuACJkn/Nu GqUEe8IaYTkkOJYTtosGOdNUYN8cDk4ElK+FAD9lHKgCJamEvnQenDzB8 M+VR40IECj9IcowHvFV27WQgoQ0oqf+DmV/2q7flOAtCYEoV5BGqT5ill IN9L0bs4Rc7K2DZn0YKLZ79AFNVwK18dCO1hdFffCUPYFr1cPGiKEepv9 K+ykv4AzL2xHFblHR2sJKnAhXgCD7eRRekG7pfwT3rC1p7rKC6/8ao0u8 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10923"; a="1903238" X-IronPort-AV: E=Sophos;i="6.04,274,1695711600"; d="scan'208";a="1903238" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2023 00:10:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10923"; a="803191192" X-IronPort-AV: E=Sophos;i="6.04,274,1695711600"; d="scan'208";a="803191192" Received: from mrejmak-mobl.ger.corp.intel.com (HELO fdefranc-mobl3.Hitronhub.home) ([10.213.24.154]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2023 00:10:45 -0800 From: "Fabio M. De Francesco" To: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: "Fabio M. De Francesco" , Ira Weiny , "Fabio M . De Francesco" Subject: [PATCH] mm/memory: Replace kmap() with kmap_local_page() Date: Thu, 14 Dec 2023 09:10:04 +0100 Message-ID: <20231214081039.1919328-1-fabio.maria.de.francesco@linux.intel.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 3979DC0009 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: t4nz5dbh3zczukqs7b859tac85omwysm X-HE-Tag: 1702541450-490897 X-HE-Meta: U2FsdGVkX1+yIkMulbZDLNmaowrssSOdycjSFsdbvaeQ/yfojmWRhXhjAY7yAbG728C/eiCcP7l7sSR6tFKxwChSZS4aViMyBN/ZsG4F7IA9D8VISx4ge4JgfyWZeS/feb/VeOnnjq9XdaCegU15HpBpO1qhxVfvq+9N2D4NQcfri73CLBi9hkU5T8sKWx8pYCacfOakN2/WjSBYLnerXH7OrwBk6aWStPjmsU0tH82Z6NMZdErD9/MxrC9R85LVLA7AFn7ptB3Dnpkr13FTB3QLYcI04Y7Gavtgu8F2IgzM0b/6SODk0Ar4IQZXLU3iufCksKEkWBk3jR4iJWbrjFVi/dMnyDu2EIAdM6Cd3E88OivTf+ew48duphVGvzVzU+TNbWnlbE4J4uIEd0toNAKGBe3v9JkRdjaU9QGyyYXQi3lwAar3j6wjmKWQuDhaipZeX/JCZC9CQkg2r2m/bGBxtOGh1oQZlPUWAiilIFaumbood4U/hNdYVOkc9suG+36YFIJrJntQnGQ2re46O5DHn7OLrq9cQbF9vV+bIkRJp9mE243PR0QSPDmGe1YJGa4H1Uwy2896ay2d3rP5YpMX15cg/1V8KhXb0loyN7ggaV+KjVuqmipkii47QtgLq3idj+yvyGc4UWf8th9t72MrtzPW6qnhuzNOm+5+fmY0RHYFYpjaRl72PPqtrFDAt1xgZtH+Aqzs4wlIbjdXxcHKNRBplx+WRA03TbEQGDZXEx/brw6NFs+nEO7eK2P4wTw1+WzjP1RHsNe7Ft9H7w9q0YWHajs415xtkN/pCmY0CkugwbieCnBcVjsz6YJzEWG+hk2LNWzGwhtjJ68a8nDHyfJBI30M1m2wpxwEz67b7KT9b29pOahJjYFS8eYreNGSbA0uiI1eDfDbvKGz6esQ0+M/MlWWo3PLw1fzIpJKL3BCYX43KCowJiguwh2i8R5Oh6cdqs92qhw9ORL lMwFKEe2 VlOTwBmNW9onTyeFvWSdVc1U9FphH2blhAeAPkIWj73tQRaePtn3qBbS8GIx0rUqHFWg5uwzbTF0B/t1kMTr2lSbetChJ9v4w3R9uD9ncur5fCFfEteddosmt3VJQBB/YIdQ2/zCb46Gv/KuGN/EBn9BT1GTRtFRS2EtmyWqvxPmsCoLZd6WoTPBW/6xO09CTgtxZRhWQwnU9WTaKP4VJIBP3IVmnpuZrrCre X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: "Fabio M. De Francesco" kmap() has been deprecated in favor of kmap_local_page(). Therefore, replace kmap() with kmap_local_page() in mm/memory.c. There are two main problems with kmap(): (1) It comes with an overhead as the 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. The tasks can be preempted and, when they are scheduled to run again, the kernel virtual addresses are restored and still valid. Obviously, thread locality implies that the kernel virtual addresses returned by kmap_local_page() are only valid in the context of the callers (i.e., they cannot be handed to other threads). The use of kmap_local_page() in mm/memory.c does not break the above-mentioned assumption, so it is allowed and preferred. Cc: Ira Weiny Signed-off-by: Fabio M. De Francesco --- mm/memory.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 7d9f6b685032..88377a107fbe 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -5852,7 +5852,7 @@ static int __access_remote_vm(struct mm_struct *mm, unsigned long addr, if (bytes > PAGE_SIZE-offset) bytes = PAGE_SIZE-offset; - maddr = kmap(page); + maddr = kmap_local_page(page); if (write) { copy_to_user_page(vma, page, addr, maddr + offset, buf, bytes); @@ -5861,8 +5861,7 @@ static int __access_remote_vm(struct mm_struct *mm, unsigned long addr, copy_from_user_page(vma, page, addr, buf, maddr + offset, bytes); } - kunmap(page); - put_page(page); + unmap_and_put_page(page, maddr); } len -= bytes; buf += bytes; -- 2.43.0