From patchwork Tue May 21 11:48:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?QmrDtnJuIFTDtnBlbA==?= X-Patchwork-Id: 13669343 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 CD4F6C25B74 for ; Tue, 21 May 2024 11:49:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5ED356B009A; Tue, 21 May 2024 07:49:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 598FD6B009B; Tue, 21 May 2024 07:49:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 436056B009C; Tue, 21 May 2024 07:49:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 25FC16B009A for ; Tue, 21 May 2024 07:49:00 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 0E8D01411F3 for ; Tue, 21 May 2024 11:48:58 +0000 (UTC) X-FDA: 82142231556.09.92AD0E9 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf11.hostedemail.com (Postfix) with ESMTP id 609DF40019 for ; Tue, 21 May 2024 11:48:55 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=o5nLepXe; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf11.hostedemail.com: domain of bjorn@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=bjorn@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1716292135; 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:in-reply-to:references:references:dkim-signature; bh=DxS7gl1tG68/oOAo3eCp2XGdbHDrgigFYs+jMjpC2vw=; b=L9qNxtU57niXzkpYJfe4J7PiFQh5OPiDPlu3sPRri+t+A5kP8AA/gFPcIDVNjmb/5WDuV+ Ax+GNtsmQ3+aTNYiW7mxGb6b5d1BbTAcM5QVLSeW1/I0is/rieBTqhD7jgCvZYsQHrFplO WwQBtJj/znISw8cExdfQo/gcl0OKTiE= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=o5nLepXe; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf11.hostedemail.com: domain of bjorn@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=bjorn@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1716292135; a=rsa-sha256; cv=none; b=buNT6eBggyaIX/84JnLPAdE4M4DbSdBpr4vROQYlZ3+k/pkIAVPld2IZdPjFNFoENjcsQg +9v5bHSZnYmP7hHbmB0zM0bJTDHUImaruM7d6IFXVqpI8rE/G2hA8zcDXammJ9BpEzkElD qeiPsZtMQDYAPPAmvJBTWcF1eYdEcsQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id A15556220F; Tue, 21 May 2024 11:48:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B1475C4AF09; Tue, 21 May 2024 11:48:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1716292134; bh=nfJcShROxet1Zcs9SjZc/rXdynjgyC+wVMctU8YOdM8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=o5nLepXejKU2VOMdC1SRZPZvOZANI4opdVRkd8+TPMDK5sR0P07NwX2ZJc79N4eQZ bfaqTkEl6t3lFSwKwGIAvi6aKuwLCtjqA4R28DwMCONu+LBEGDp5huVkPzSrGGxpd3 eAcze83sdvqq0s5ijrEJlIMQhBoRLsPinLO1fb+pp/i5dnM4oCQdFZahjroxJU+tqs ZfAsw+QYO295mUt8WJNF8A1EuNCBtYJdN32QaUsHu3K8cxyCjruvL8/XB8PAlIhEie b/8oz9DQETq8tgzZZdrqszIj0S0PXOjWIcDgLIx3Il4t+3513huBPyuUBrwrHotznV 5JmJyHV48MBQA== From: =?utf-8?b?QmrDtnJuIFTDtnBlbA==?= To: Alexandre Ghiti , Albert Ou , David Hildenbrand , Palmer Dabbelt , Paul Walmsley , linux-riscv@lists.infradead.org, Oscar Salvador Cc: =?utf-8?b?QmrDtnJuIFTDtnBlbA==?= , Andrew Bresticker , Chethan Seshadri , Lorenzo Stoakes , Santosh Mamila , Sivakumar Munnangi , Sunil V L , linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux-foundation.org Subject: [PATCH v3 2/9] riscv: mm: Pre-allocate vmemmap/direct map PGD entries Date: Tue, 21 May 2024 13:48:23 +0200 Message-Id: <20240521114830.841660-3-bjorn@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240521114830.841660-1-bjorn@kernel.org> References: <20240521114830.841660-1-bjorn@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 609DF40019 X-Stat-Signature: xq596bjki556m99eozta8xjpu8s7x3z6 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1716292135-626117 X-HE-Meta: U2FsdGVkX19i9JevgD2TuCVFMvh0YDGdhJiFPrYfbq+gJ8MklcWB6z7K8ucZ4cZDQcgNTE3Cxd0aRxxUj+95v93V9rGBRWjQyPdvEWfL5hBhCHep6ITePHy1pKUTrQd/IdYY3tlRq4oACFYsEFfS5ehofa29k3D6X/VxdoQZSEwfd/cuaeVpgezScz5J8gxq7Q61N11eyX5A2/7I28qKysue2KG+/jxROOS3rpzsAucadHcHsDt0cKqv1BvhTAyE3mv737ZBZjafDcXQGCsri0JhBNGilq2vFu+dZ3kExGf/KVmCa8OMgf/4LT0mBAA/Cn2tGOMepYEs9UALlj2ni8pJIyo2xFfnf7C8hem6WqDNLgqO+DN9Omrd9+epaNAC5rYF2I/iIedWltJNgGRXrih0tyD1Zn/U/vhJC674INIgC06lZ5vGH+2yS9sbi/fwAORLSI3POPugtbQB+bPDR2Pc+A+Wn2Pxly0VXoWJiTk81qLtrx8fT7pp3CFXL1MsirBeqlHdFOz1v1hurDV7Tpn7k5bxzJOqtbMF2I7NVWeuAsa1GV7B3v3zeTFXdNo1J2DAx511qUDCBJWdXWGrUaPs/kstte4wOfIGhjwgUAWLrVl0cAUvVR96l3Gbc93GzHOsLA64qjIReyuWtkQL+nlh0pFjJSze0WagZsJVmd2sdoQ34IKa1ENKaDCbYE8+/8Xngo90Sl9jlVY9TOqmGI5TVTDn5/TP4w61Q3LtZZg//UySgf85IylB+QET0oApBVy3Xv34fqpT63CTz85iMkqfHVyDAYuvVUwcnLlr/TS7XV7Cz4v1zjf2oBzQfs+PYEr5sZNDxeewWbcFRZKJwfe03r8/Tg4HXQNvGxHhJSK4XkAulhR57VTUrGXOnd1+WGdRczbFmsTepckYm0T18VPewcYF2hqeBWood9Kp+9dpG+6WARbEne6yFRXFyAg4ntnc4OcsTM1y/II4c6/ GIkK7FYT f3N6H36QEBTf9msOsj2gKlnKM2KKCXRnUVWeyXt3jme9IGQYzN0c4NZUySqkso2lcxZNYtlif1rDhd61TOJWK7D988oEf91PBDUZ9g9QkYYjr649voO2WCNJJrgBP+9Uh4obbXMrbrsZUBXUPbSzEQxRbeip00LoPv/D1eJgygSrIebzHZMy77NSGUBD1gwrvCs/fl9XozqHbjZtEEdqbXKYhUrDMYdCiPBpDfPAbj5Vor3ULppz3YqCIYKNZtwUFboe1TQKMZSIipwLefg/f8faBEfHtZAhfDcST2i1z+PWKgmxuOB7B49g/OKRl/oxcoCaa8Aj0nTVDQEF7zop+A7C2AjBTGGSqpxZfDHCO/r+4wgsS+acHgcw30vZDdvTGYNjJ 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: Björn Töpel The RISC-V port copies the PGD table from init_mm/swapper_pg_dir to all userland page tables, which means that if the PGD level table is changed, other page tables has to be updated as well. Instead of having the PGD changes ripple out to all tables, the synchronization can be avoided by pre-allocating the PGD entries/pages at boot, avoiding the synchronization all together. This is currently done for the bpf/modules, and vmalloc PGD regions. Extend this scheme for the PGD regions touched by memory hotplugging. Prepare the RISC-V port for memory hotplug by pre-allocate vmemmap/direct map entries at the PGD level. This will roughly waste ~128 worth of 4K pages when memory hotplugging is enabled in the kernel configuration. Reviewed-by: Alexandre Ghiti Signed-off-by: Björn Töpel --- arch/riscv/include/asm/kasan.h | 4 ++-- arch/riscv/mm/init.c | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/arch/riscv/include/asm/kasan.h b/arch/riscv/include/asm/kasan.h index 0b85e363e778..e6a0071bdb56 100644 --- a/arch/riscv/include/asm/kasan.h +++ b/arch/riscv/include/asm/kasan.h @@ -6,8 +6,6 @@ #ifndef __ASSEMBLY__ -#ifdef CONFIG_KASAN - /* * The following comment was copied from arm64: * KASAN_SHADOW_START: beginning of the kernel virtual addresses. @@ -34,6 +32,8 @@ */ #define KASAN_SHADOW_START ((KASAN_SHADOW_END - KASAN_SHADOW_SIZE) & PGDIR_MASK) #define KASAN_SHADOW_END MODULES_LOWEST_VADDR + +#ifdef CONFIG_KASAN #define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL) void kasan_init(void); diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index b66f846e7634..c98010ede810 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -1488,10 +1489,16 @@ static void __init preallocate_pgd_pages_range(unsigned long start, unsigned lon panic("Failed to pre-allocate %s pages for %s area\n", lvl, area); } +#define PAGE_END KASAN_SHADOW_START + void __init pgtable_cache_init(void) { preallocate_pgd_pages_range(VMALLOC_START, VMALLOC_END, "vmalloc"); if (IS_ENABLED(CONFIG_MODULES)) preallocate_pgd_pages_range(MODULES_VADDR, MODULES_END, "bpf/modules"); + if (IS_ENABLED(CONFIG_MEMORY_HOTPLUG)) { + preallocate_pgd_pages_range(VMEMMAP_START, VMEMMAP_END, "vmemmap"); + preallocate_pgd_pages_range(PAGE_OFFSET, PAGE_END, "direct map"); + } } #endif