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 EDB71C4332F for ; Fri, 15 Dec 2023 08:44:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 87C548D0123; Fri, 15 Dec 2023 03:44:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8057F8D0121; Fri, 15 Dec 2023 03:44:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6CD5B8D0123; Fri, 15 Dec 2023 03:44:29 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 5C9D98D0121 for ; Fri, 15 Dec 2023 03:44:29 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 27020C04EA for ; Fri, 15 Dec 2023 08:44:29 +0000 (UTC) X-FDA: 81568416258.08.72CC6E0 Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88]) by imf21.hostedemail.com (Postfix) with ESMTP id 113E81C0012 for ; Fri, 15 Dec 2023 08:44:26 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=O8cAb36Y; spf=none (imf21.hostedemail.com: domain of fabio.maria.de.francesco@linux.intel.com has no SPF policy when checking 192.55.52.88) smtp.mailfrom=fabio.maria.de.francesco@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702629867; 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=JfgwSx9MLlfnDdw7inRAgD1RuEgYGXNHCOCtslBaJpc=; b=sr9PiuJPOkWi96igang/gsRzIamx+uvbz7UnnpqWWMSReHIWtoUI3JpjE3K+uTS49m8XX/ r+sgCVUgZsVmSQxtttX3YL/lLI21wLWEr2siQ6deSyN5TWE9kiwJVJ/zQPSpyeBUSYOcj/ qpu996tPNi8MLLlFTG+jJkL7wuwQaRY= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=O8cAb36Y; spf=none (imf21.hostedemail.com: domain of fabio.maria.de.francesco@linux.intel.com has no SPF policy when checking 192.55.52.88) smtp.mailfrom=fabio.maria.de.francesco@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702629867; a=rsa-sha256; cv=none; b=BtZ24gw+pF8vvVZaDsBL+OOQFAMISyPbS44psWzEBNn89IzSWHchiSUt3YTOJ6zWd8P3sW KrlMOkfoaXb9b3PC1iUKexSqaT0LYAuD88YrYTb2EGQB0I8Vf1akQcIDk+HCL5oKK9X7dt 7Vv4VOzlCL7g6/wxCTgjiv1z/+8c7aY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1702629867; x=1734165867; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=pN6Za6QS6gH0Sone+vJpcFhDUA34F+4C+dHQJlQSAlc=; b=O8cAb36YlrQwh1ui5y0ssdpyqeVAfhyOwDHw4ZmqSpwVtf0lhnRJOMI5 PBItr4dnoTPxow73kpT/DxXzdQpMnnR3gl5Q/aSudJWBlaDYmbwBNK8I/ MfdnM1WJzWBWF3bU2KG3UH7nx5JlvHufaC8MwPIk9b7yova4Q82zCU2x8 6vV877yT0gDJtWbqmRCJPGBhbxuojOpum8hnmr0OCyNhYnIxDng3SL3Hu oFEXaYRSCDjGprsrWpagDR6BUaKojmpYazPlaHVcQlNgY8rAtqiFW/kuC xD3uzyzH+VjBrlAV6g892QjLUYrfj6QCZCleFNkeaTPUWN8BkdZLC9rEw A==; X-IronPort-AV: E=McAfee;i="6600,9927,10924"; a="426381358" X-IronPort-AV: E=Sophos;i="6.04,278,1695711600"; d="scan'208";a="426381358" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2023 00:44:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10924"; a="808895806" X-IronPort-AV: E=Sophos;i="6.04,278,1695711600"; d="scan'208";a="808895806" Received: from fdefranc-mobl3.ger.corp.intel.com (HELO fdefranc-mobl3.Hitronhub.home) ([10.213.25.64]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2023 00:44:22 -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 Subject: [PATCH] mm/memory: Replace kmap() with kmap_local_page() Date: Fri, 15 Dec 2023 09:43:40 +0100 Message-ID: <20231215084417.2002370-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: 113E81C0012 X-Rspam-User: X-Stat-Signature: rfq4qm4g4qnsjhzit4o8kfhi63joo3xc X-Rspamd-Server: rspam01 X-HE-Tag: 1702629866-31477 X-HE-Meta: U2FsdGVkX19rfVYiYrDqNpYVxDgbafkZH6/juiKkwxraHrRJdthRmluACKkTeanES9iRlrxRWb9Cdfw4lOIc2TSJXgDu3Z/GJ4V5DPMh/Ly6+Qks8LkbltOCiMwwaJUAs9DPxF6alDbZAKi16W8s9vS/D7aHS0gDiG4Z6YuUKZont4ZG96YPabjID4eMibNUwjvifdalD+6i3D8covmhbrbE8B1kPKQowcKouVkUxS+ylmt42b7OvAKqiTsZkHYbFoa/lNwId7OlfOsNT9MgfJPs39opkfZParsLZJy/1Y+o+EoBDaQL8yrSlP75bXnEjQrBB2lfH8TYiqCnatQ4Mgx/QljDO2c1ekq5N0yPuSnaCRdmlOJ2Znr0cmwkM8x02ZAMQRiFKJxEXUxiLRYBATdN3bFAH4W68gJseaxwZp6osB0jpRrYq7QyQWRdYBzZhCHS3Jtlw9/nNM8GfXJMNMxe+xCyw+xGANknNCdRFoM0uTjFqRYRRYih3LGCxbFy8wxBdvIrK+yNI+PLbMV0Q/frOrrME3clDqYKizIE+9jbFSHa/Ql/d+pNjTyb1F12J0oTnt6XuL8L3PSS/uvkWbzwr6+zl9jNahCbyUVZIYHXGsysoWutUNlw/dLtvxGKKCT3vwlFROZE/z+DXYcETASpJ83H7Hv6tZEcmMN2pviMIoNg0NIdnBIqvb23m7Qh68etLFq/J2dkRULXOProL7uu4EI92vYSvstFdhMOBrByV+1rZ/7BDw3bftZRdBRrjjZ57qQET2TlwExc6Wxqxxq4akjhb1bzLjM5OqXmvBah9PIzAm8piZz6SVYLVzT564hwoK2Cs4rBFmMIG3BTatmhgPh1r7kcoI4e5ZhcJCODzIBfAccfzmqJ/lzKCkmkKYSOw9+89lf57UFjHp0xcd36OUiWjyGOW8sKKpTrcYR92DAoumRc04R3n6wL7foukwO0arUv7OSHndlF8rT ua3kbZT0 EBlFdaOak2Sd7Txw4w6h4Z0TpIuktSjNPWm0z2YDO/105Dh09/7tV67lIko6UVbaJRjLtTIcAELtuKZPAIb4IW5lmECU8Np4eUxw22WEY66tGtejCJ2sbJC4qlpwMClVweJmrHnT+nidHqPkIGmx7/MchEbSEa4pyLWsB0UR6cF2h3T/HRsmaQ5ghch+fHFOqXqUu 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: 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