From nobody Tue Dec 16 15:25:48 2025 Received: from mail-wm1-f73.google.com (mail-wm1-f73.google.com [209.85.128.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 243192750FD for ; Tue, 20 May 2025 10:41:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737721; cv=none; b=RnHrKp48p9rT2v80IFCXWEsQPrin2U8/76gS8eLpp2upWBr26sm8zpDh3pTjHK8UN9Enuwr6I+MYCuq9kAM4nLKOT1PY9HBiG7anD7j7APsoVC/9JecjjtgiE1IQOThKu1sdqd55a4GTGmIqVv9ySdgDMUkXANC76yCY+2efqaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737721; c=relaxed/simple; bh=vbW4J15gT0Anek7l1UlLR4VB3Z3pNTgkHhKTuT6ywMY=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=N2polUxDSF9WsjWkllRQTMkrFsCMW1NLms5nqq4tW5NY1wTDoZwM6Z6QE1vdhOrVsUon58x25BwXn7TcSV6nD3nJxkWpHJxYr82YeOMbVug/2MirP7KFoJvTlHbdG9OxQvVixzKEWRZOGYwgsLd5bJsdPy+LYiME6PZB6Ku1jzA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=WOAIdj3j; arc=none smtp.client-ip=209.85.128.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="WOAIdj3j" Received: by mail-wm1-f73.google.com with SMTP id 5b1f17b1804b1-43d4d15058dso11127985e9.0 for ; Tue, 20 May 2025 03:41:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747737718; x=1748342518; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=2i089Y2WwQ9qQU2NJo6zV7zkt8mG6d9ipwjqGuYXJek=; b=WOAIdj3j3nQceSYc6ecI4eOZCw+cCA68+Pesnwlr2A0hMWpm8ivfhZFWplC+p2/L/8 Lh8yBZAGRrY4s0Mp4em0+lh6hJx/N1Dknom4joAnkNzJLRd5bk+eS0vrpVmx8hKCvWnk K/kPXfXUJs4uBiuBdhVh+RgiJnqvfUEm6Vt52JXu95sdtjUXjXnXwxENnMGIKC6/FXtL y2VAGNMRbYl7YLOFfJwRTMW1LdUYNBa+6Jw5uP62UWH8r0nx7Pk8RQF6Zq4F2pl6vonE nB4HY+6XF2Bmefh3OHGLMM9OELIPzCBoO0PfjJpr56T2nJFYw4sTCNYTrdfaSQEzqoxx bpKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747737718; x=1748342518; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2i089Y2WwQ9qQU2NJo6zV7zkt8mG6d9ipwjqGuYXJek=; b=U36NwFZRmWJbMD4reglhyl59W6k52j0tXhwShRgbIvaD7KdLqk3g+Zkz24tXLa4NVF 3iCJQftwxhDRH1YBOnSrQ8nb4pdc124MptZyacOuiFKglTeV+U2gkP8G6QSbQnt+ot22 Q/67wId7hcrY+AhAdmAXVxuAuHjtE9f58pSprBh4CGOdZej2DUfyeohTKpAEuFUjxH+3 lmI6W3f4//b2q4VMRCD/bKVlAefsPUM3M+aIMS3qHRtj2jmLoK4eA9DJOt9UjP6X9T5A IWXqCNvi1/IGLM4UbE+yHqROSQg/vO9kW9bqqGjNEFl3npo4oe8vinI3JmUdszDrBeeg 0dFg== X-Gm-Message-State: AOJu0Yx/tQoThHv/rJUSiahuo0SugFglE+xhc12mUeGKP888nb8Ahf0k r7UGD8V4EBihnrd+6RELn5yfbxwG6FlBlMGvxDx8kJ1ReznuuBJ3l08Eoc2ejmf/Ry21MqIVVli /GLvsh3Qes7qBneWuUm855Q/PluMCVKtDy4IioXJXXSuE0o3Vc2pKtZSO+VxTDVviEm3511qSoF UBRILCh2YM4RDwNNQNYWR4lVl0uRKgMw6KLQ== X-Google-Smtp-Source: AGHT+IFBU8TCAwpTPuGWuckj9SBjBaf7waNzV9OC3co6AKbdhaL4TZkNRZwAWSi7F8QhIX62Kn75NxdT X-Received: from wmbfm26.prod.google.com ([2002:a05:600c:c1a:b0:442:f8e9:a2ac]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:4706:b0:43c:f629:66f3 with SMTP id 5b1f17b1804b1-442fd63b22cmr140816855e9.18.1747737718459; Tue, 20 May 2025 03:41:58 -0700 (PDT) Date: Tue, 20 May 2025 12:41:40 +0200 In-Reply-To: <20250520104138.2734372-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250520104138.2734372-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1605; i=ardb@kernel.org; h=from:subject; bh=gDhtt2gsfPR+q9p6uoVx2wiSpQ+yOS3VasjQVtcD7TY=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUMnJjX9SePeX/u85N9le6jy7bg/6UjMvek6854f7tprn 1/5S4ejo5SFQYyDQVZMkUVg9t93O09PlKp1niULM4eVCWQIAxenAEwkpIrhf6T7o+2qxTPMc34s /H8mevdUscnWWc96NIs3bzx27tbpHQIM/502GM4q+LSJe6qh16eUO28e7zXo12Jl2XvwefFb3vb cdBYA X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250520104138.2734372-10-ardb+git@google.com> Subject: [PATCH v5 1/7] x86/mm: Decouple MAX_PHYSMEM_BITS from LA57 state From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Ard Biesheuvel , Ingo Molnar , Linus Torvalds , Brian Gerst , "Kirill A. Shutemov" , Borislav Petkov Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel As the Intel SDM states, MAXPHYADDR is up to 52 bits when running in long mode, and this is independent from the number of levels of paging. I.e., it is permitted for a 4-level hierarchy to use 52-bit output addresses in the descriptors, both for next-level tables and for the mappings themselves. So set MAX_PHYSMEM_BITS to 52 in all cases for x86_64, and drop the MAX_POSSIBLE_PHYSMEM_BITS definition, which becomes redundant as a result. Signed-off-by: Ard Biesheuvel --- arch/x86/include/asm/pgtable_64_types.h | 2 -- arch/x86/include/asm/sparsemem.h | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm= /pgtable_64_types.h index 4604f924d8b8..1481b234465a 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h @@ -56,8 +56,6 @@ extern unsigned int ptrs_per_p4d; #define P4D_SIZE (_AC(1, UL) << P4D_SHIFT) #define P4D_MASK (~(P4D_SIZE - 1)) =20 -#define MAX_POSSIBLE_PHYSMEM_BITS 52 - /* * 3rd level page */ diff --git a/arch/x86/include/asm/sparsemem.h b/arch/x86/include/asm/sparse= mem.h index 3918c7a434f5..550b6d73ae22 100644 --- a/arch/x86/include/asm/sparsemem.h +++ b/arch/x86/include/asm/sparsemem.h @@ -26,7 +26,7 @@ # endif #else /* CONFIG_X86_32 */ # define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */ -# define MAX_PHYSMEM_BITS (pgtable_l5_enabled() ? 52 : 46) +# define MAX_PHYSMEM_BITS 52 #endif =20 #endif /* CONFIG_SPARSEMEM */ --=20 2.49.0.1101.gccaa498523-goog From nobody Tue Dec 16 15:25:48 2025 Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0D3B92797B0 for ; Tue, 20 May 2025 10:42:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737723; cv=none; b=TjCoat2iW1wMQmPfjlphwHExntEjdjZkv1ZFgnKCCnWXiCbkgmpcJBZ74BdDuzKWoSfyl/AvjcGTbQomxKURMqLcPUl/m94dPVh6aX+wPWrK6xssLETiGvFc1QfdeT3WGK4xefrWisnmkm8Fb0Pfm46y0f3rjN6HGk4GMhsg9G4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737723; c=relaxed/simple; bh=+MyvW2EHsxt/O0++0RVZnEf3VvLfJdqD1fhOcXenVDc=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=oJODeXHtctJPN3DKBo9z8Kr0bU5Af8RhvuJn4RTDCQqtwCGn3Yuprue1GYJZkeRFODxXC15PAMxEJ00xfiw3Q0N4c0BH4qtBEvOgFD/SAJfZ/o4fBGcDiEy4giYd+CoH8w+XC7P1VEnhBJF/jOemWudkX2geARdOPiaZKWZZJbc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=NqWgXk4H; arc=none smtp.client-ip=209.85.221.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="NqWgXk4H" Received: by mail-wr1-f73.google.com with SMTP id ffacd0b85a97d-3a35bf8377fso3639885f8f.1 for ; Tue, 20 May 2025 03:42:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747737720; x=1748342520; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=uj4Q+He/H++iaFQMlkeqyoPnpvIYhWgw+w5Luxphrzs=; b=NqWgXk4HzUKqaAA5TnkDr3pWQqWX8w1M79X5+mG37dTlz7YlRwyWD6i8vq2iqS3J37 ZaH1XE/N8N22o68DJ1qXBNB4KPMh3t3BxhWxMEpeOOyUnAGXK1G5XPzTPJWApNtbqYYB vAZTOHRMIqjJx8GbKQ7iX/HEHtYWb8AdUhO1ectYGRHHyaHSiKU/cMahJDxwHVDYeE88 dFv8EA4RvQQcKZO76vNbB6ibRVEnquDqjqfDgLNiwFNr9CoP3wvOBwbOgY9kb+rra4qk 0QO0a3IXTkH7OEPjyeithaReb9ueL3S2PLteQMsNgz0vu3a8kYWgULpytYR3T8k2u6ZC ZwFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747737720; x=1748342520; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=uj4Q+He/H++iaFQMlkeqyoPnpvIYhWgw+w5Luxphrzs=; b=PD85TnOUj429K+zHaQN8NvpnQaCsqbJFcJFUapp9OpmSb6LmBQ1dmh5sQVAsWdt8fG JEaj7LoIH+fORHBnJNEL4VgbUyL4/TwSfHSvF3UFp9w+uzeOIWGxM/dLj8Gi4yxQas+a rN0MLB6gJsO/mycI/LGAn/NqdJGtxJ2l76a1kPCL8EwDvrQvXQzFtj1UTMAT2938fPeP 7S+THiLLFzrnmEEEGdqtwWE8VGo+bwkEQftCv05llPQ8kurl0XUeGFZw52XWUgl8oMm8 CazGG5B8MKGeG/47tZpN3fhE15NHuuopJnGieFRTwEAQmJkC5uj28ofxlhiDo8DHgSsP TRsg== X-Gm-Message-State: AOJu0Yy0N+17xHTP3utxZRzFu0n//asG9ljS1IGDBgGOKftzUIfLxE+i D0CJADaRWg/s/VwmNcFHG+z85Y8Hv3oajwHc+YshZQNzUTL8rb0iXytHvAosyp9bYY7WmkZ+jCu Z10CTvlkS7i04aS1Xmrd8y7cnwggx4swArYlUwEb4hFZVJxdj7hrahbsBuhyYpa/WdrRa2qIpnc plCdYvlf7SeM6Fclb8Lpg24AlRVO1QKmXqtg== X-Google-Smtp-Source: AGHT+IEFV2sngwYRGFYToKf8y9KYHxToadVmLd1SCpMth0+HYqiItVgv6B+MSkf4Ru4ObRXR4goGxOPZ X-Received: from wrbef4.prod.google.com ([2002:a05:6000:2184:b0:3a3:6ead:f185]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:adf:f30f:0:b0:3a3:60f0:e2eb with SMTP id ffacd0b85a97d-3a360f0e520mr11371461f8f.33.1747737720434; Tue, 20 May 2025 03:42:00 -0700 (PDT) Date: Tue, 20 May 2025 12:41:41 +0200 In-Reply-To: <20250520104138.2734372-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250520104138.2734372-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=6598; i=ardb@kernel.org; h=from:subject; bh=FaTVq0lH0XHnDqaF/OcYxL33XT0OcqBaLolXkM/upfQ=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUMnJj2v5EOi9IttT52WiRwM+dit/cv/LaPtkxmNy0+lv 5zJO8+oo5SFQYyDQVZMkUVg9t93O09PlKp1niULM4eVCWQIAxenAEzkz3mGf4aSppkzte1+37w7 OzvO7b36OxHlay8euN96eHy71Ypqv1KG/1UG3gfmpgacDHaPLX+/9VGo2kyWFYfu/mUJuppoLmX ozwUA X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250520104138.2734372-11-ardb+git@google.com> Subject: [PATCH v5 2/7] x86/mm: Use a single cache hot per-CPU variable to record pgdir_shift From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Ard Biesheuvel , Ingo Molnar , Linus Torvalds , Brian Gerst , "Kirill A. Shutemov" , Borislav Petkov Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Shrink the global variable 'pgdir_shift' to a single byte, and move it to the cache hot per-CPU variable section so that it can be accessed virtually for free. Set the variable from asm code before entering C so that C code is guaranteed to always consistently observe the correct value. For the decompressor, provide an alternative that tests the CR4.LA57 control bit directly - this is more costly in principle but this should not matter for the early boot code, and the LA57 control bit is guaranteed to be in sync with the number of paging levels in use. Signed-off-by: Ard Biesheuvel --- arch/x86/boot/compressed/misc.h | 6 +++++- arch/x86/boot/compressed/pgtable_64.c | 2 -- arch/x86/boot/startup/map_kernel.c | 1 - arch/x86/include/asm/page_64_types.h | 2 +- arch/x86/include/asm/pgtable_64_types.h | 13 +++++++++++-- arch/x86/kernel/head64.c | 2 -- arch/x86/kernel/head_64.S | 5 +++++ arch/x86/mm/pgtable.c | 4 ++++ 8 files changed, 26 insertions(+), 9 deletions(-) diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/mis= c.h index db1048621ea2..97b80d08f03c 100644 --- a/arch/x86/boot/compressed/misc.h +++ b/arch/x86/boot/compressed/misc.h @@ -28,6 +28,10 @@ #define __pa(x) ((unsigned long)(x)) #define __va(x) ((void *)((unsigned long)(x))) =20 +#ifdef CONFIG_X86_64 +#define pgdir_shift() (native_read_cr4() & X86_CR4_LA57 ? 48 : 39) +#endif + #include #include #include @@ -189,7 +193,7 @@ static inline int count_immovable_mem_regions(void) { r= eturn 0; } #endif =20 /* ident_map_64.c */ -extern unsigned int __pgtable_l5_enabled, pgdir_shift, ptrs_per_p4d; +extern unsigned int __pgtable_l5_enabled, ptrs_per_p4d; extern void kernel_add_identity_map(unsigned long start, unsigned long end= ); =20 /* Used by PAGE_KERN* macros: */ diff --git a/arch/x86/boot/compressed/pgtable_64.c b/arch/x86/boot/compress= ed/pgtable_64.c index bdd26050dff7..898a4e66e401 100644 --- a/arch/x86/boot/compressed/pgtable_64.c +++ b/arch/x86/boot/compressed/pgtable_64.c @@ -12,7 +12,6 @@ =20 /* __pgtable_l5_enabled needs to be in .data to avoid being cleared along = with .bss */ unsigned int __section(".data") __pgtable_l5_enabled; -unsigned int __section(".data") pgdir_shift =3D 39; unsigned int __section(".data") ptrs_per_p4d =3D 1; =20 /* Buffer to preserve trampoline memory */ @@ -123,7 +122,6 @@ asmlinkage void configure_5level_paging(struct boot_par= ams *bp, void *pgtable) =20 /* Initialize variables for 5-level paging */ __pgtable_l5_enabled =3D 1; - pgdir_shift =3D 48; ptrs_per_p4d =3D 512; } =20 diff --git a/arch/x86/boot/startup/map_kernel.c b/arch/x86/boot/startup/map= _kernel.c index 332dbe6688c4..06306c5d016f 100644 --- a/arch/x86/boot/startup/map_kernel.c +++ b/arch/x86/boot/startup/map_kernel.c @@ -24,7 +24,6 @@ static inline bool check_la57_support(void) return false; =20 __pgtable_l5_enabled =3D 1; - pgdir_shift =3D 48; ptrs_per_p4d =3D 512; =20 return true; diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/pa= ge_64_types.h index 7400dab373fe..e1fccd9116c3 100644 --- a/arch/x86/include/asm/page_64_types.h +++ b/arch/x86/include/asm/page_64_types.h @@ -48,7 +48,7 @@ /* See Documentation/arch/x86/x86_64/mm.rst for a description of the memor= y map. */ =20 #define __PHYSICAL_MASK_SHIFT 52 -#define __VIRTUAL_MASK_SHIFT (pgtable_l5_enabled() ? 56 : 47) +#define __VIRTUAL_MASK_SHIFT (pgdir_shift() + 8) =20 #define TASK_SIZE_MAX task_size_max() #define DEFAULT_MAP_WINDOW ((1UL << 47) - PAGE_SIZE) diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm= /pgtable_64_types.h index 1481b234465a..3ee747f596e3 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h @@ -7,6 +7,7 @@ #ifndef __ASSEMBLER__ #include #include +#include =20 /* * These are used to make use of C type-checking.. @@ -23,6 +24,15 @@ typedef struct { pmdval_t pmd; } pmd_t; =20 extern unsigned int __pgtable_l5_enabled; =20 +#ifndef pgdir_shift +DECLARE_PER_CPU_CACHE_HOT(u8, __pgdir_shift); + +static __always_inline __attribute_const__ u8 pgdir_shift(void) +{ + return this_cpu_read_stable(__pgdir_shift); +} +#endif /* pgdir_shift */ + #ifdef USE_EARLY_PGTABLE_L5 /* * cpu_feature_enabled() is not available in early boot code. @@ -36,7 +46,6 @@ static inline bool pgtable_l5_enabled(void) #define pgtable_l5_enabled() cpu_feature_enabled(X86_FEATURE_LA57) #endif /* USE_EARLY_PGTABLE_L5 */ =20 -extern unsigned int pgdir_shift; extern unsigned int ptrs_per_p4d; =20 #endif /* !__ASSEMBLER__ */ @@ -44,7 +53,7 @@ extern unsigned int ptrs_per_p4d; /* * PGDIR_SHIFT determines what a top-level page table entry can map */ -#define PGDIR_SHIFT pgdir_shift +#define PGDIR_SHIFT pgdir_shift() #define PTRS_PER_PGD 512 =20 /* diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 533fcf5636fc..e2d9e709ec01 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -52,8 +52,6 @@ SYM_PIC_ALIAS(next_early_pgt); pmdval_t early_pmd_flags =3D __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_= NX); =20 unsigned int __pgtable_l5_enabled __ro_after_init; -unsigned int pgdir_shift __ro_after_init =3D 39; -EXPORT_SYMBOL(pgdir_shift); unsigned int ptrs_per_p4d __ro_after_init =3D 1; EXPORT_SYMBOL(ptrs_per_p4d); =20 diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 3e9b3a3bd039..d35b75a5f892 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -71,6 +71,11 @@ SYM_CODE_START_NOALIGN(startup_64) xorl %edx, %edx wrmsr =20 + movq %cr4, %rax + btl $X86_CR4_LA57_BIT, %eax + jnc 0f + movb $48, PER_CPU_VAR(__pgdir_shift) +0: call startup_64_setup_gdt_idt =20 /* Now switch to __KERNEL_CS so IRET works reliably */ diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index 62777ba4de1a..a7eaeaa595f8 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -46,6 +46,10 @@ void ___pud_free_tlb(struct mmu_gather *tlb, pud_t *pud) } =20 #if CONFIG_PGTABLE_LEVELS > 4 +DEFINE_PER_CPU_CACHE_HOT(u8, __pgdir_shift) =3D 39; +EXPORT_SYMBOL_GPL(__pgdir_shift); +SYM_PIC_ALIAS(__pgdir_shift); + void ___p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d) { paravirt_release_p4d(__pa(p4d) >> PAGE_SHIFT); --=20 2.49.0.1101.gccaa498523-goog From nobody Tue Dec 16 15:25:48 2025 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E261427A911 for ; Tue, 20 May 2025 10:42:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737725; cv=none; b=hvpU+hFsf6IzycIrY/n0NGY6dTceBZDVyIkwi4oFtP7vuC3l72tRIfaQYrKAyyiv2cwnP8kTxOlMLjSudw0nQdyy92Lmx09hM95qnDILEwLHli0Vj2+PAITkxGgeWX3aEIE2vr2C0HCbvJIlnn5Yzzm86TMyOOLf3bcWHu0hLyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737725; c=relaxed/simple; bh=ASR+jV5TgnZQZ861z46SDezzxeRHr9pTxTTUfsE+mJ4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=forxvT7GVtuAuFZ2XIeMFBCjYjLX8HfZPEWd8lPJBk23XLQreDadcrlVbY0lMJjwPEQ1lf2Yl9h5cT9wqlqN7gj9posRLPpsm2zqbj5qKb3Bya9fxB9mbrcnIJv7tevKKgLduKXUdMON3h0KET6Zv5952U7/yxk+KL6q8BjMKi0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=QH5ktQww; arc=none smtp.client-ip=209.85.128.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="QH5ktQww" Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-442dc702850so8813295e9.1 for ; Tue, 20 May 2025 03:42:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747737722; x=1748342522; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=9mhuFA2bAHGjz8pRwM1FCEnHmd1njh6GkBXwvQOfkdo=; b=QH5ktQwwDaR2OjjLvyUhI0eUU2a++EsSqOO1ZOgiAJgbXhyRsVHzPtLYqH1yVb0/Ee IgomKhWS5RVx13yT171RD/gvqhXZMsLr9IK+zGfeOz0gWPVvrtkZ2hB0WdL6q85Hcwz6 2QQ8y4euChHxhbEviqdXAvkaT7Na7YkKALk+9T8IbqYgwI9WyTzdWVj2tfaSRons0vhM Em0C1FPi5UyzYPmVrxLECjq236ONG3jqUkcLiY7yiHjHXEE6Uoiar45iLXfbx/d3Tb4/ CbICpTtSlxP7U060Gei/Up4R+RLekApnZUxm1fAy7L/5+Q8LOB8h3B3PEfW6H62Ud1b3 m8EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747737722; x=1748342522; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9mhuFA2bAHGjz8pRwM1FCEnHmd1njh6GkBXwvQOfkdo=; b=IPySVlBj7Pn5WlaF3QT3826FvQ4ev9Bzufxi3VMg+XEN3M1NEKk5SHbosJX4j9AZT6 Fx0uknuTpG+ZUD38PEjbjv8RayV4aOusYDySXFlFX2cm2wE7+7Nt4sMlmxv2YaDzLYxR aOLD49sL+iOCveTjuc/RqR6oxfFMbFJDKrOmM9mV5rWApUt+kfaPRNp9EKSlsK9hJLYJ ENyP52ifecndGkhtgKS7DcoBM/jv1tSMJEaqCr56pBXf6waEE6+9VqPB42OE5bA7McUw pXejfhxGi+LcDeSWvCN8gm0jiLWLtvSf9JTBE25Q2kyVp9bbOQZ9AX4ywYplyzBF98Xa Ajbw== X-Gm-Message-State: AOJu0YxprEsHP/XJJ3Yhjsi3asUcFRBsQRCijABu69f1kfLJM4+T0fFt 74mI5gm9dqRqJfEMYu7CaczJaM/s0g9iFRa5BF6TFDAELhPNe6oX42fVBEgVx7W3kwz/3EEtJWS RKdMFQ3aBPGS9kS3XJ2jhCXKrm/br/6m30naOTFnDpiJPKiWAVbgDmLS+hj+jDiAfvVA7icZ0oO l1dahUzy09Wmb7m3qiHIP2z1Q9LANYDkqnPQ== X-Google-Smtp-Source: AGHT+IGnFijJmn0CEVd+WMOWzafC9axuO+b9uF5lsaikk3x/FRH/dCjsy1q1cvdDHDEKqhj6/cg35sMi X-Received: from wmbjh8.prod.google.com ([2002:a05:600c:a088:b0:43c:fe64:2de3]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:5493:b0:43d:878c:7c40 with SMTP id 5b1f17b1804b1-442fd618f0dmr185307315e9.10.1747737722313; Tue, 20 May 2025 03:42:02 -0700 (PDT) Date: Tue, 20 May 2025 12:41:42 +0200 In-Reply-To: <20250520104138.2734372-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250520104138.2734372-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=3569; i=ardb@kernel.org; h=from:subject; bh=DUkmfhtrvIjpe2gbvWTJxbHzvGFyCsYxLJtY1nh4YRk=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUMnJtPs3h2Dh4ymiTuUHe+t6+985JjzveJJJ0fIBPGbW gaHl7Z0lLIwiHEwyIopsgjM/vtu5+mJUrXOs2Rh5rAygQxh4OIUgIl8/M3I8OOx2DqDmttmea0L OoybS9yuOUseKYo/1HXpxUyxO0wHpRkZ/v87mqFhLXs3NWBKis3Cc9yn7JiaOF+87UqrEu2MufC ECwA= X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250520104138.2734372-12-ardb+git@google.com> Subject: [PATCH v5 3/7] x86/mm: Define PTRS_PER_P4D in terms of pgdir_shift() From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Ard Biesheuvel , Ingo Molnar , Linus Torvalds , Brian Gerst , "Kirill A. Shutemov" , Borislav Petkov Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Define the value of PTRS_PER_P4D in terms of pgdir_shift(), which can be accessed cheaply, removing the need for a global variable that needs to be kept in sync manually. Signed-off-by: Ard Biesheuvel --- arch/x86/boot/compressed/misc.h | 2 +- arch/x86/boot/compressed/pgtable_64.c | 2 -- arch/x86/boot/startup/map_kernel.c | 1 - arch/x86/include/asm/pgtable_64_types.h | 4 +--- arch/x86/kernel/head64.c | 2 -- 5 files changed, 2 insertions(+), 9 deletions(-) diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/mis= c.h index 97b80d08f03c..3157f2fbc593 100644 --- a/arch/x86/boot/compressed/misc.h +++ b/arch/x86/boot/compressed/misc.h @@ -193,7 +193,7 @@ static inline int count_immovable_mem_regions(void) { r= eturn 0; } #endif =20 /* ident_map_64.c */ -extern unsigned int __pgtable_l5_enabled, ptrs_per_p4d; +extern unsigned int __pgtable_l5_enabled; extern void kernel_add_identity_map(unsigned long start, unsigned long end= ); =20 /* Used by PAGE_KERN* macros: */ diff --git a/arch/x86/boot/compressed/pgtable_64.c b/arch/x86/boot/compress= ed/pgtable_64.c index 898a4e66e401..965fca150e68 100644 --- a/arch/x86/boot/compressed/pgtable_64.c +++ b/arch/x86/boot/compressed/pgtable_64.c @@ -12,7 +12,6 @@ =20 /* __pgtable_l5_enabled needs to be in .data to avoid being cleared along = with .bss */ unsigned int __section(".data") __pgtable_l5_enabled; -unsigned int __section(".data") ptrs_per_p4d =3D 1; =20 /* Buffer to preserve trampoline memory */ static char trampoline_save[TRAMPOLINE_32BIT_SIZE]; @@ -122,7 +121,6 @@ asmlinkage void configure_5level_paging(struct boot_par= ams *bp, void *pgtable) =20 /* Initialize variables for 5-level paging */ __pgtable_l5_enabled =3D 1; - ptrs_per_p4d =3D 512; } =20 /* diff --git a/arch/x86/boot/startup/map_kernel.c b/arch/x86/boot/startup/map= _kernel.c index 06306c5d016f..5d3c6108f1c3 100644 --- a/arch/x86/boot/startup/map_kernel.c +++ b/arch/x86/boot/startup/map_kernel.c @@ -24,7 +24,6 @@ static inline bool check_la57_support(void) return false; =20 __pgtable_l5_enabled =3D 1; - ptrs_per_p4d =3D 512; =20 return true; } diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm= /pgtable_64_types.h index 3ee747f596e3..d8e39c479387 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h @@ -46,8 +46,6 @@ static inline bool pgtable_l5_enabled(void) #define pgtable_l5_enabled() cpu_feature_enabled(X86_FEATURE_LA57) #endif /* USE_EARLY_PGTABLE_L5 */ =20 -extern unsigned int ptrs_per_p4d; - #endif /* !__ASSEMBLER__ */ =20 /* @@ -61,7 +59,7 @@ extern unsigned int ptrs_per_p4d; */ #define P4D_SHIFT 39 #define MAX_PTRS_PER_P4D 512 -#define PTRS_PER_P4D ptrs_per_p4d +#define PTRS_PER_P4D (pgdir_shift() & 1 ?: MAX_PTRS_PER_P4D) #define P4D_SIZE (_AC(1, UL) << P4D_SHIFT) #define P4D_MASK (~(P4D_SIZE - 1)) =20 diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index e2d9e709ec01..fe0770f468c3 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -52,8 +52,6 @@ SYM_PIC_ALIAS(next_early_pgt); pmdval_t early_pmd_flags =3D __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_= NX); =20 unsigned int __pgtable_l5_enabled __ro_after_init; -unsigned int ptrs_per_p4d __ro_after_init =3D 1; -EXPORT_SYMBOL(ptrs_per_p4d); =20 unsigned long page_offset_base __ro_after_init =3D __PAGE_OFFSET_BASE_L4; EXPORT_SYMBOL(page_offset_base); --=20 2.49.0.1101.gccaa498523-goog From nobody Tue Dec 16 15:25:48 2025 Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 30BD127BF83 for ; Tue, 20 May 2025 10:42:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737728; cv=none; b=Vh1VZK6GheZb0jYppRljl/U0GMOryj+SmVUaSGgECphCiCwT+OZGIHyAUaWShEo10zV05LUEnTtkW22iLlOoEwTiQXRFCzxKGEgT39i2EUl06r8Q730PCVgn1F24LpvrudkPlQvDzzLE9XAb2sWv0/6j2MYdvNuJ8oejJUf5pow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737728; c=relaxed/simple; bh=Q/7c3l+91pbtc17vrK7cILgBOCunvE8RUgZNX7LVw60=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=pkviJtfDpxdargUZyvOZRYmtGUDblFvG7b3GgNHXgdeFSBzY9VFL14KR8rl+2ve+so/CKunNmmnOImn79WdMW8uXIuCQ0lP63i5EAHaba0H6XjFKJrU/M8wGEcHI3IvhAFWjRBw6VMYJffIc7FvQq45WjdQduegGfHwpABBDFOA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=YGaZYt0h; arc=none smtp.client-ip=209.85.221.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="YGaZYt0h" Received: by mail-wr1-f73.google.com with SMTP id ffacd0b85a97d-3a364d2d0efso1793234f8f.3 for ; Tue, 20 May 2025 03:42:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747737724; x=1748342524; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=UzzgPYn9cxoLx+6WnOiRl/qSjy4IoyGOuShg+cjvCTg=; b=YGaZYt0hP7nfSfPrkla8NA4eEFz0fzVdtDC9AowwkKhI8J/YFCDxLF6dRKrhwfSevx dOWrpivwQB/EpkB5GLcYOA7KB/jvd1ZkKIPa7guSnX/Ra6NtKLlzYrHAQivcX3l7FIcP 93SL6ToSE1wGzex1UoOTFZQjv5hisX37HczWBKCVLh/PxhbkQ0uBR3Sp93gwMohV7gmt O0LBhXjPgNQXt6Le4Ea9PqFqU2zEWT1Gp728hIH1T0hjad7YsL3Qoengfyea6jb754nL sGjSQKMcSv7ETMTb9m9Q1ERWC6uCKQ3tIhAvEEO+mLf44k+wxGOLaHSj0gpn4+jSwG+n uaiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747737724; x=1748342524; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UzzgPYn9cxoLx+6WnOiRl/qSjy4IoyGOuShg+cjvCTg=; b=Lck3jKm8REFd1Q8tB1a7vHplNZX5EERI49vK/1DipL564jitK9woevDHoRJB3XpzF1 iq9YwH+NKv741nlGB88Lm6W7V7435iRaMgFwPde6taSIfJhcdbvcXIILr38hcv4Uo8D+ mlerVZo21NfisJR0w9AzzEHJ8DWC4xfAS+xFS/k3p0mof65g7O7Y+J2SwC4l2jL0Kg0K IdW5t/KwgedsX11P7m+pylaJkkCgJ0GmePWuPyXzcziY/d4IQGd7mkDQ8oBv6Bum+vYG A6N5nEo5wT617gtVocgBWZueE7lTUzIlaa9V+kZIFu8pNqTn9usGcF3zJbY7pDDvvnxe G0Cw== X-Gm-Message-State: AOJu0Yw+dMSCc5C+pN01cLLx1q9uWqWaNne0sMbZ/d/qY8h5heF0GZWx 5A83PVvhXNy2TKgwyJccV926j67J40lrsl4HUSICAlpdaqlBZytk1up/FteU7X3mgx4+VTdz1jU TWcSjKDoIZcV/Xo3zzY7K7Y/pYqrzxCwcBWVjnDGgIzdPI1EqdgR7msiRoFwla16GU2knFxfek5 ZLd3lcZrawpTaeRXUF89Yiq+bvMLFCXh+JBg== X-Google-Smtp-Source: AGHT+IFsawcw2NGnFlpOSHlJWwHmRFAq5IgBEopLDgG3RYCT6XjQl9IYryczR3ia7dvV+MZIM+cYzQ5y X-Received: from wmpz20.prod.google.com ([2002:a05:600c:a14:b0:440:6128:9422]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:4201:b0:3a3:72e2:1e5b with SMTP id ffacd0b85a97d-3a372e21f5fmr4698777f8f.56.1747737724333; Tue, 20 May 2025 03:42:04 -0700 (PDT) Date: Tue, 20 May 2025 12:41:43 +0200 In-Reply-To: <20250520104138.2734372-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250520104138.2734372-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1461; i=ardb@kernel.org; h=from:subject; bh=anD6k9uPC5CYROI2u53OYyoXCysohBYXUpvvBhyybY0=; b=kA0DAAgWMG4JVi59LVwByyZiAGgsXGqgjrEYpWVcAACdt68sR/l4thpmMySNtnOUhoskFJTlV oh1BAAWCAAdFiEEEJv97rnLkRp9Q5odMG4JVi59LVwFAmgsXGoACgkQMG4JVi59LVzfogEAtQ/5 zN0YAmaIkdzsgmQRSKF3JXLZspUpf5e/18Da4+oBAMRfiLnDtg17pPfchGKoBNnqabrJxpVh9lY JomJ1eTQD X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250520104138.2734372-13-ardb+git@google.com> Subject: [PATCH v5 4/7] x86/mm: Derive pgtable_l5_enabled() from pgdir_shift() From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Ard Biesheuvel , Ingo Molnar , Linus Torvalds , Brian Gerst , "Kirill A. Shutemov" , Borislav Petkov Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Instead of using two versions of pgtable_l5_enabled() which go out of sync a few times during boot, use a single implementation, and base it on pgdir_shift(), which can be accessed cheaply when running in the core kernel. This is the most efficient way to obtain this information without relying on code patching, on which the 'late' implementation depends today (via the ternary alternative in cpu_feature_enabled()). Signed-off-by: Ard Biesheuvel --- arch/x86/include/asm/pgtable_64_types.h | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm= /pgtable_64_types.h index d8e39c479387..ed847a90cf4f 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h @@ -33,18 +33,8 @@ static __always_inline __attribute_const__ u8 pgdir_shif= t(void) } #endif /* pgdir_shift */ =20 -#ifdef USE_EARLY_PGTABLE_L5 -/* - * cpu_feature_enabled() is not available in early boot code. - * Use variable instead. - */ -static inline bool pgtable_l5_enabled(void) -{ - return __pgtable_l5_enabled; -} -#else -#define pgtable_l5_enabled() cpu_feature_enabled(X86_FEATURE_LA57) -#endif /* USE_EARLY_PGTABLE_L5 */ +/* PGDIR shift =3D=3D 39 -> L5 disabled, 48 -> L5 enabled */ +#define pgtable_l5_enabled() !(pgdir_shift() & 1) =20 #endif /* !__ASSEMBLER__ */ =20 --=20 2.49.0.1101.gccaa498523-goog From nobody Tue Dec 16 15:25:48 2025 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3520527BF99 for ; Tue, 20 May 2025 10:42:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737729; cv=none; b=eSNbBRLtLAvY1Uq+kfjns3qsbClgVxf9TSpDum1AM4qVAPmdkayd+9s+uSWOjvWMxkb+i1MpyU1hhLFn8zm/g18oGRIaIiao+BSo52QYLnjKeTfy23LCJt2F9dBC0lCX4Ei2uKzi1T9wNnAhs6ZvhyksJltrk9zST20E8rEChWo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737729; c=relaxed/simple; bh=W45HmT31ninpjRwuuev/CEMZQel6YkRqcj7JoSvkj8k=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=OP3tMVUwqdDmN3PaqPITLsKfmyWP+o1r35iAXmclMi1t2+BWTVI1xlmqrVw4DzWXqtd7FtgJKHuU1NOnP6zYiJIe11QLt/HRTuYtR8VL3NYKH+pTc3JWcV9LG33h3zxik0zb1tGoht4GIQ41deYOIQop8WCOfG0ZpZdwTniVMqM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=P8CNxTYM; arc=none smtp.client-ip=209.85.128.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="P8CNxTYM" Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-43d0830c3f7so38639765e9.2 for ; Tue, 20 May 2025 03:42:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747737726; x=1748342526; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=fZy+IDBXzgKLanKZ+xE2V66+tUBkSAhldyPA1OsbtpY=; b=P8CNxTYMy3gGp85smoz3PY14N4/5QvF891lWS4TZr0AFwrqPD6k5Hj9tVPyeE4d2SS /PsfoVA1XJv36UEE+yqxKhmNUJ73LAY5CJt2YVamvIfrC3A1JtHZu3luoqzhG1eATUKD /VcYvkLekh9SgRSJGuIA+nkUco7pv1NhFscmNLHw/foFtbApR80pK1DVE9TmdYFkPtZY zrbPPPECYLwlnwebOKvOtZdZ2qOqq46hDR7ZxGFJDDeKg3mNoSE3KRJ1g58t43Eg0U2O HaTE5E0Lr16FgxNKfJJ+vRXeAUd+HlUOJev8Z4gbD74iVbbMt+6gSkI8tAXkHDQeYm1V So/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747737726; x=1748342526; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=fZy+IDBXzgKLanKZ+xE2V66+tUBkSAhldyPA1OsbtpY=; b=RikIHpNPXfF4C+I9hzaMwWA9fucVRiT0t0/piiE8MF27jt4dDx8Sx8RIkA69YagDBJ jj3GyJ+tBh5vxgXRbnA5W7xn6WwSnwHJ7Nz9hb1HtA1E15AeHCkbjQSAb9d60YO+6LO7 f+PjUhOJyiTlaPJYnLvC7uei85UdafajLUAcTLge10CBM/9PdTkkaVajo7vqbw/k0kj8 rIbF6mgxCv16M/vzpFNfopgtjezRZYKMuHDkNbwCBYXvgDKtd3Pk8IcaegIELE1UgoEG ss/mufbMyKU6i+9I9K2J6ULc0PHnJHw0eA+lu4DAM2pTNpJkjoJLVwLpLXiktLyND1ZD aaUw== X-Gm-Message-State: AOJu0Yy4Bzn6wWyaOvaA0w/I6xFXu1WCK5uoH5OzI/vskTY2aLL1Ep09 rmaPbYZc35JOQjWYQ7d+jUZMuNFkbb+/M7Lv9pEDELGr2cEEy8NXEXg6gG9z6LL7lzmXnTQV/KQ mcakl6jULovBoS7Su145wFrIV4rfLaliwri/MoNNbC5/NRVpDzFrjQbvxJdguq34Uioxz4fL75S Q8+gAzQ9Fz3j4GeA2ybT4YOYX6L53uFZ/mAQ== X-Google-Smtp-Source: AGHT+IG21xn4BDd/lcmmmbmv++gdXJKOAo/qD1hl2zhpIFaXJF2i00ZU0FZcxZJwvhs0XzRg9BSSLN1y X-Received: from wmrm14.prod.google.com ([2002:a05:600c:37ce:b0:43c:f7c3:c16e]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:3554:b0:442:ccfa:fa with SMTP id 5b1f17b1804b1-442fd671f7emr149158615e9.27.1747737726496; Tue, 20 May 2025 03:42:06 -0700 (PDT) Date: Tue, 20 May 2025 12:41:44 +0200 In-Reply-To: <20250520104138.2734372-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250520104138.2734372-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=2931; i=ardb@kernel.org; h=from:subject; bh=EiXObQsxSUMA1XlkIY52ZfeO4kPGYTYzqe8TcVZxEnw=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUMnJmfl1JzwVZ/O7M4Us1P68I7z7Qb7Nw8uqW6psk++W xO3U+hgRykLgxgHg6yYIovA7L/vdp6eKFXrPEsWZg4rE8gQBi5OAZjIXBNGhmm/uewWM9Z8tMrr 12SoWrJb6pBsgFzg353x5i2PRIOzljMyXD3mUJ8trBhoor7pabap1uX3dtV3p97XfSOet9B4S2s 1PwA= X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250520104138.2734372-14-ardb+git@google.com> Subject: [PATCH v5 5/7] x86/boot: Drop USE_EARLY_PGTABLE_L5 definitions From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Ard Biesheuvel , Ingo Molnar , Linus Torvalds , Brian Gerst , "Kirill A. Shutemov" , Borislav Petkov Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel Drop USE_EARLY_PGTABLE_L5 definitions, which no longer have any effect. Signed-off-by: Ard Biesheuvel --- arch/x86/boot/compressed/misc.h | 3 --- arch/x86/boot/startup/sme.c | 9 --------- arch/x86/kernel/cpu/common.c | 3 --- arch/x86/kernel/head64.c | 3 --- arch/x86/mm/kasan_init_64.c | 3 --- 5 files changed, 21 deletions(-) diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/mis= c.h index 3157f2fbc593..7f79c426f542 100644 --- a/arch/x86/boot/compressed/misc.h +++ b/arch/x86/boot/compressed/misc.h @@ -16,9 +16,6 @@ =20 #define __NO_FORTIFY =20 -/* cpu_feature_enabled() cannot be used this early */ -#define USE_EARLY_PGTABLE_L5 - /* * Boot stub deals with identity mappings, physical and virtual addresses = are * the same, so override these defines. diff --git a/arch/x86/boot/startup/sme.c b/arch/x86/boot/startup/sme.c index 70ea1748c0a7..a6c25d005991 100644 --- a/arch/x86/boot/startup/sme.c +++ b/arch/x86/boot/startup/sme.c @@ -25,15 +25,6 @@ #undef CONFIG_PARAVIRT_XXL #undef CONFIG_PARAVIRT_SPINLOCKS =20 -/* - * This code runs before CPU feature bits are set. By default, the - * pgtable_l5_enabled() function uses bit X86_FEATURE_LA57 to determine if - * 5-level paging is active, so that won't work here. USE_EARLY_PGTABLE_L5 - * is provided to handle this situation and, instead, use a variable that - * has been set by the early boot code. - */ -#define USE_EARLY_PGTABLE_L5 - #include #include #include diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 8feb8fd2957a..256613b24bd4 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -1,7 +1,4 @@ // SPDX-License-Identifier: GPL-2.0-only -/* cpu_feature_enabled() cannot be used this early */ -#define USE_EARLY_PGTABLE_L5 - #include #include #include diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index fe0770f468c3..5e5da6574a83 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -5,9 +5,6 @@ * Copyright (C) 2000 Andrea Arcangeli SuSE */ =20 -/* cpu_feature_enabled() cannot be used this early */ -#define USE_EARLY_PGTABLE_L5 - #include #include #include diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c index 0539efd0d216..7c4fafbd52cc 100644 --- a/arch/x86/mm/kasan_init_64.c +++ b/arch/x86/mm/kasan_init_64.c @@ -1,9 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 #define pr_fmt(fmt) "kasan: " fmt =20 -/* cpu_feature_enabled() cannot be used this early */ -#define USE_EARLY_PGTABLE_L5 - #include #include #include --=20 2.49.0.1101.gccaa498523-goog From nobody Tue Dec 16 15:25:48 2025 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 42C2E27CCE3 for ; Tue, 20 May 2025 10:42:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737732; cv=none; b=NNiaUxZPjT61nTRhfl+QVJ0+7waco+pN/sP7VS24T/psRAMJhNaz0KsCeb4StMsLD4HcvrABVn9DxFeWi2DY/C9iviSMr55vceuKfIGrfl90dcWdx/6KNludlDggGSZN7PcsqVChHF0klCqx8sd021XN52BFRuJSxnKvuNYSWrE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737732; c=relaxed/simple; bh=smcEn5xuoSoyzet+/jPXo0e2FShvYyfWm91gjV2aYQ8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=mEfs5/YNppvrFg0vDYWd/ZATDHMvHNO8XOYtLsiewpesC/eprqtSqMC4vdXSzCsviwhikwiFF6KwxFNFYJ6Ssni/BGNSvgDVOfSXWolcQaq7HB9UWk7W3ZQlVyy+28IqRp8DdCVmJWZb/HI6END13J7jnhUWP1NDen6FNdgzC2I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=1lKOooIa; arc=none smtp.client-ip=209.85.221.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="1lKOooIa" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-3a36e6b7404so1420511f8f.0 for ; Tue, 20 May 2025 03:42:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747737728; x=1748342528; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Ahzczk0+naUyrZTVIcCeBV1wVjE8c2wdirB75pAPflg=; b=1lKOooIa+F+428vJLAF2LOEvGtpPPayECPhvqjclNh/aRiMkvn3INmDe24jmeSdUCr 0MulQ0tA/caw92B1shQYrvLdUwJzhNWtJ5TyYtdmeuQjnY6serv+cT3HrnB/9c06pqdU gKLIrTkuCsDUGWkKoR4E5W/RaJqiGgdIxWLAVGSo42YBQbnxzvFUtHcCcb/D3W3Hv1x2 1GN4AaqMl7gxsgB3rEo6Bljg1bxrkLl2wmT10n+xuobOPKARgHsgQBWkUvaudeumxoXj HOumdpWiEq1NeDobApGC4PSVSef50MgG5AdSBAickKopdp00nIzzFxTWEyQztfAoeeky GEjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747737728; x=1748342528; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Ahzczk0+naUyrZTVIcCeBV1wVjE8c2wdirB75pAPflg=; b=KmutzYgmZbnSvRPDV7mxCOAhZVGf4/h94sMWEhCHu6xy8r9P2HgzL2hxoDNtjJ99RN z+KhPI89BWvS82cwUgoatVHlZLINgUlIjwE8iPdFPXboAWLnaqGJpQg8dtDoXKSF8jjJ L9l6365CD6qZUM4mRPsKgczFVCtGYhZ33gD9OAqYSFFOKDPGj6/kdMi46Mn7I3QrFPzF p6V0QW0J/p4ElPkFJQ2s3ToAzJlSXUgFA5AZsTf2hNtdN336/Un60e8atHohhYzKdTBY 867Yzur3RpynOMKmIjuRoTefmSg7F6mFjH2FWGRZDz7ni1k6OeIvmgSmXPgLZRlpeXzH j2Vg== X-Gm-Message-State: AOJu0Yxaw+Dny3ZBU8Vbovb/aiw0jt7/qsBMRGsV9d1ybwzRLG6R7oBz zqOjpVGH3otRDCMSTO7PWK+DpDu2DTOaXIJo3uJBzcZcJGWasC2eoMb0zqFhvCzCrRG4CxuPxDo lFQ8AVVaoirLn3NmAZDcjFUhlyh7xX76bj/lj7DmHP+AcrOeenmDSbECfd2Lm71mKFhv7tA0d7G YPxcqcAi1mogteXBVDSzK6tcrD9INNfhv+Tw== X-Google-Smtp-Source: AGHT+IFf3Tl0mziMJzrvVu3v7W+x4TcXzDK5XfPPwOZpt3YclGoVMb0E1M3KDk0vyqCgQ+WbgLaGP5uu X-Received: from wmbbd17.prod.google.com ([2002:a05:600c:1f11:b0:442:ddf8:99dc]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:40dd:b0:3a3:77d7:a669 with SMTP id ffacd0b85a97d-3a377d7a688mr2969030f8f.52.1747737728564; Tue, 20 May 2025 03:42:08 -0700 (PDT) Date: Tue, 20 May 2025 12:41:45 +0200 In-Reply-To: <20250520104138.2734372-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250520104138.2734372-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=4047; i=ardb@kernel.org; h=from:subject; bh=AeoaX0bk1REUaKBmW4W6OvWZS0AahPeIlF2xjdvR5c8=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUMnJi/h8fSewhcBrV7bRcodfty/qG1cafTK9054Vz5je 2vPqXsdpSwMYhwMsmKKLAKz/77beXqiVK3zLFmYOaxMIEMYuDgFYCIcexn+l7MJlrk1lq3a+luW X7aX93nqdFOZBJd0ufsPWjSCTj44yPDPJizk+V9+Ps/dumdaDwa5K14wYKlWe8MuUP6r1EKsgIU DAA== X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250520104138.2734372-15-ardb+git@google.com> Subject: [PATCH v5 6/7] x86/boot: Drop 5-level paging related global variable From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Ard Biesheuvel , Ingo Molnar , Linus Torvalds , Brian Gerst , "Kirill A. Shutemov" , Borislav Petkov Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel The variable __pgtable_l5_enabled is no longer used so it can be dropped. Signed-off-by: Ard Biesheuvel --- arch/x86/boot/compressed/misc.h | 1 - arch/x86/boot/compressed/pgtable_64.c | 6 ------ arch/x86/boot/startup/map_kernel.c | 16 +--------------- arch/x86/include/asm/pgtable_64_types.h | 2 -- arch/x86/kernel/head64.c | 2 -- 5 files changed, 1 insertion(+), 26 deletions(-) diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/mis= c.h index 7f79c426f542..d6860b50afaf 100644 --- a/arch/x86/boot/compressed/misc.h +++ b/arch/x86/boot/compressed/misc.h @@ -190,7 +190,6 @@ static inline int count_immovable_mem_regions(void) { r= eturn 0; } #endif =20 /* ident_map_64.c */ -extern unsigned int __pgtable_l5_enabled; extern void kernel_add_identity_map(unsigned long start, unsigned long end= ); =20 /* Used by PAGE_KERN* macros: */ diff --git a/arch/x86/boot/compressed/pgtable_64.c b/arch/x86/boot/compress= ed/pgtable_64.c index 965fca150e68..4772919411a9 100644 --- a/arch/x86/boot/compressed/pgtable_64.c +++ b/arch/x86/boot/compressed/pgtable_64.c @@ -10,9 +10,6 @@ #define BIOS_START_MIN 0x20000U /* 128K, less than this is insane */ #define BIOS_START_MAX 0x9f000U /* 640K, absolute maximum */ =20 -/* __pgtable_l5_enabled needs to be in .data to avoid being cleared along = with .bss */ -unsigned int __section(".data") __pgtable_l5_enabled; - /* Buffer to preserve trampoline memory */ static char trampoline_save[TRAMPOLINE_32BIT_SIZE]; =20 @@ -118,9 +115,6 @@ asmlinkage void configure_5level_paging(struct boot_par= ams *bp, void *pgtable) if (!cmdline_find_option_bool("no5lvl") && native_cpuid_eax(0) >=3D 7 && (native_cpuid_ecx(7) & BIT(16))) { l5_required =3D true; - - /* Initialize variables for 5-level paging */ - __pgtable_l5_enabled =3D 1; } =20 /* diff --git a/arch/x86/boot/startup/map_kernel.c b/arch/x86/boot/startup/map= _kernel.c index 5d3c6108f1c3..328a343bc355 100644 --- a/arch/x86/boot/startup/map_kernel.c +++ b/arch/x86/boot/startup/map_kernel.c @@ -14,20 +14,6 @@ extern pmd_t early_dynamic_pgts[EARLY_DYNAMIC_PAGE_TABLES][PTRS_PER_PMD]; extern unsigned int next_early_pgt; =20 -static inline bool check_la57_support(void) -{ - /* - * 5-level paging is detected and enabled at kernel decompression - * stage. Only check if it has been enabled there. - */ - if (!(native_read_cr4() & X86_CR4_LA57)) - return false; - - __pgtable_l5_enabled =3D 1; - - return true; -} - static unsigned long __head sme_postprocess_startup(struct boot_params *bp, pmdval_t *pmd, unsigned long p2v_offset) @@ -97,7 +83,7 @@ unsigned long __head __startup_64(unsigned long p2v_offse= t, bool la57; int i; =20 - la57 =3D check_la57_support(); + la57 =3D pgtable_l5_enabled(); =20 /* Is the address too large? */ if (physaddr >> MAX_PHYSMEM_BITS) diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm= /pgtable_64_types.h index ed847a90cf4f..3c56b98b87b0 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h @@ -22,8 +22,6 @@ typedef unsigned long pgprotval_t; typedef struct { pteval_t pte; } pte_t; typedef struct { pmdval_t pmd; } pmd_t; =20 -extern unsigned int __pgtable_l5_enabled; - #ifndef pgdir_shift DECLARE_PER_CPU_CACHE_HOT(u8, __pgdir_shift); =20 diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 5e5da6574a83..137c93498601 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -48,8 +48,6 @@ unsigned int __initdata next_early_pgt; SYM_PIC_ALIAS(next_early_pgt); pmdval_t early_pmd_flags =3D __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_= NX); =20 -unsigned int __pgtable_l5_enabled __ro_after_init; - unsigned long page_offset_base __ro_after_init =3D __PAGE_OFFSET_BASE_L4; EXPORT_SYMBOL(page_offset_base); unsigned long vmalloc_base __ro_after_init =3D __VMALLOC_BASE_L4; --=20 2.49.0.1101.gccaa498523-goog From nobody Tue Dec 16 15:25:48 2025 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C7CD27F171 for ; Tue, 20 May 2025 10:42:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737733; cv=none; b=rrC92EsC6wBZqsmFmoivYRVaDG/DDKNuyijTW3ccsa5i9sNBPwsmQ7PWitkaBZCTg8ziWy6e/nqxNAuKGCoWl6apSRCxbvwWBnBM5cU4zMP92T4EH0urtMUJyTzrKQfF3D6uEmEdS4iDvu5J4KQcvU6MbQlCsxek2WJgvGwJqhc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747737733; c=relaxed/simple; bh=lIqPmrEeIkfT9o5Hp9bUhpJ6ilLaftkaOD4ciQyICAM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=ZW/zF/tJDFhuvkkGEEYjXGGtHO39K9451csMW658o43N0yUrMUQbXysF3BHFo5BFsXu9KKzLOGFGgAtUMMLzMLDRZUCuJWhXaaiRqD+1py05o1YyokuxGJN48q7AdpqRlWJlswxQbpAw4VaCC6e8gWGw5yHeXNd5G9/z9gSfwOw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=d7PM6UIT; arc=none smtp.client-ip=209.85.221.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--ardb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="d7PM6UIT" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-3a3683aa00eso1449784f8f.1 for ; Tue, 20 May 2025 03:42:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747737730; x=1748342530; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=48HSNwYzS4MdW1GYfppk4qhPWkku6mpAaebKvT0s29I=; b=d7PM6UITinggEHOkDN9s4+aVPAaUo2/vAnTeNUMtLWukVRfzG+Ady1ceWN25h0pjcE BGGtjWjxTax76PN+26n2Zj7evSqttO4ldkUXuOI6y2CjdXXkrs7m+jBlF8P3DHSJhg95 doLbp2I95FcWISUDOzsiFLFR+YaSZamepLNHelBYrC8tDyYw5IvbDf26dIiOCeiDZsXh BZh3/KQM0KPa/ygCXRDmZfy8yA2oRCG7LMONjiE6ngx6MDp+hFKsuiRP52BPbXaRUCbf 6YLzbrLbFHS42Y3Cp9t+jxmRkgV2zPo4sXYWQUZbGyx0k/4b2wg8FBxSde8dTU44CjuG JoCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747737730; x=1748342530; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=48HSNwYzS4MdW1GYfppk4qhPWkku6mpAaebKvT0s29I=; b=KOC/iFf8OYMXdxhjdMqSK1SFRWCEnwaBn38HttOusRqvgLkpwKFBBPQ4gTgwfmHHn6 MTWURDdTFu7dsvjuncArRLnwB3FCuoUJtkpag5YZcVEfwhQmoeroHnScuu7RmIheauGA PiK+w+1JGWraE2D2L2OyQxc0eCDKQ/Ki1y5aeUmPEd6H3NIaKFfuROLh9B2hzQa4L/bl bMEvSSqXe6mmcU2OcKW11QeQcoaW5u3ky6b3JJADYoPiyoLVNZIKfEvHOHuBEOxtDYvU XvX4ZXU3Cy+ZVJRzb+nwD9f+WoWP6jt02hXzmE98oKkI+iCydqYseaPU5a3IbNN1704G lv5g== X-Gm-Message-State: AOJu0YxqV7oSHVyL4rpXHEsoUAVGkK8ZCg3Let+Puyv1S6ekdArLcXeX rCWCXwil9jT55V7CCTkIi9HG1ULDEbn4b29COT/Zww2CBCQweBRHhWwm5+yxOyGBvovQg8xiXJ2 havmD0C1Mn2+VHHnb6IBZim30Z2P+nyYk4LwYzSr27tkjsMIArxSaaRgUwo2E9NHdaNpx++F4SW W2cCNMhXejPsW0bDuhY+m7ruTilnN1ld3Mjg== X-Google-Smtp-Source: AGHT+IG8GElBuy5Mhy+BcBGRYqfJGH91mMqquZF7EvcN/D8+2f3OWAPnmPAptHQtfdOM5e85CYQd4IH8 X-Received: from wmsp16.prod.google.com ([2002:a05:600c:1d90:b0:442:e9e9:c2a7]) (user=ardb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:420d:b0:3a3:760c:81a4 with SMTP id ffacd0b85a97d-3a3760c835fmr4336240f8f.24.1747737730457; Tue, 20 May 2025 03:42:10 -0700 (PDT) Date: Tue, 20 May 2025 12:41:46 +0200 In-Reply-To: <20250520104138.2734372-9-ardb+git@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250520104138.2734372-9-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1426; i=ardb@kernel.org; h=from:subject; bh=vLh1RD9b/M3vr5yS8QTbENrmgs8a7pup/j6J3eE/P2c=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIUMnpsDS4ZWR8J5mV+P2ckcLPqdchxfPk948q07ZIXSjK PWLqHRHKQuDGAeDrJgii8Dsv+92np4oVes8SxZmDisTyBAGLk4BmIj+DUaG1k2rrYRf8XxZnRYT NVU+xJvzrXj/sjqPsqtMaT/VPF6UMPzPCnK1O1aoYZ0v2SE6fe/W+hzJazI7u1VPZ0xYa8ata8o AAA== X-Mailer: git-send-email 2.49.0.1101.gccaa498523-goog Message-ID: <20250520104138.2734372-16-ardb+git@google.com> Subject: [PATCH v5 7/7] x86/boot: Remove KASAN workaround for 4/5 level paging switch From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Ard Biesheuvel , Ingo Molnar , Linus Torvalds , Brian Gerst , "Kirill A. Shutemov" , Borislav Petkov Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Ard Biesheuvel pgtable_l5_enabled() is no longer based on a CPU feature bit that might change values and confuse KASAN, so we no longer need to disable it temporarily. Signed-off-by: Ard Biesheuvel --- arch/x86/kernel/alternative.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index f3c68b586a95..e39823d8d1ae 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -589,16 +589,6 @@ void __init_or_module noinline apply_alternatives(stru= ct alt_instr *start, =20 DPRINTK(ALT, "alt table %px, -> %px", start, end); =20 - /* - * KASAN_SHADOW_START is defined using - * cpu_feature_enabled(X86_FEATURE_LA57) and is therefore patched here. - * During the process, KASAN becomes confused seeing partial LA57 - * conversion and triggers a false-positive out-of-bound report. - * - * Disable KASAN until the patching is complete. - */ - kasan_disable_current(); - /* * The scan order should be from start to end. A later scanned * alternative code can overwrite previously scanned alternative code. @@ -666,8 +656,6 @@ void __init_or_module noinline apply_alternatives(struc= t alt_instr *start, =20 text_poke_early(instr, insn_buff, insn_buff_sz); } - - kasan_enable_current(); } =20 static inline bool is_jcc32(struct insn *insn) --=20 2.49.0.1101.gccaa498523-goog