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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 948F7C48BC1 for ; Wed, 14 Feb 2024 13:46:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=qZ0BMK+/RYR8w9DavIT4m71TCmIjfyCP9ILpbHR3tF0=; b=Gncisvp42ddCScZTFrLW32uuZ3 rcc/xoDdjTAZscIuNT5xFW5zF77WN4W9MsXRrHy668GPn8INy2KLIZ2doLrldCIax/SjEChJQxasX 7wrZEVutbGA4pIMcQZOrbv1cd7HHdFtv0qjJP0okx9qhbFK7g0u7z13t8jSHzc/Y8SO9xJE65Ssid HF9uJuE5TVDrqx1CvTOD9DnOfG/bF+jnK4i8ZFZlH32lRbxRMCGMAzogC2pWfW4kMWTp576wAHfwG FIIBPwurT0O6WsONqQgBthg8472mc+EX2PPSlpUMhA3Pn7DTVU+xUi9ncH4NveJ2MWI60bzNS71HS wdeaXcsw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1raFaE-0000000D3lw-0z4Z; Wed, 14 Feb 2024 13:45:54 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1raEQ2-0000000CpAj-1vLZ for linux-arm-kernel@bombadil.infradead.org; Wed, 14 Feb 2024 12:31:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Type:Cc:To:From:Subject: Message-ID:References:Mime-Version:In-Reply-To:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=9KPK5FCNE9zxEgfix6ahooLeTfePYk7EUjPQG8oQi2w=; b=gr1uBOkCsb7FhnpVxLRImGW2Uk 7CpIWDHU9H55DtWV3k0b5NfxXe33/I9ScqP8PBbWsDQLkL63RiMt9A4Ee6yk1UjSvFXxjJyjleVDb Nu00PthgFdaordbd1W/SjgsvbCFNtPJslrpL/X5pl7hf0kuWPAem01k7Uij8U4spCnN0VR4yDj2S5 QGY63X3K7tmEgUQieb94cRT0NaecwyKp/Ee/MtPBJdJ98UuBgwzBc1LCjUCEygxsaH6b0kZu6Hyoh Pk6vAFOnmSHUzPhIqdIqq7VfI7RHgkBsq22OvgCDMKl9ZBUfQF+yznUxpnN3ErGXsChvK/qWSxLXw MevdpBOQ==; Received: from mail-wr1-x449.google.com ([2a00:1450:4864:20::449]) by desiato.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1raEPw-0000000GEFp-28wn for linux-arm-kernel@lists.infradead.org; Wed, 14 Feb 2024 12:31:17 +0000 Received: by mail-wr1-x449.google.com with SMTP id ffacd0b85a97d-33b316fcaecso2041994f8f.3 for ; Wed, 14 Feb 2024 04:31:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1707913871; x=1708518671; darn=lists.infradead.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=9KPK5FCNE9zxEgfix6ahooLeTfePYk7EUjPQG8oQi2w=; b=CmknjW5ZiOsnhZ7vgzC1z+SIhMFSPf4+uHLAeg2mslpJte8HpZRTmB6666O1rESbkB /uTJwym4vA35q7YdcchyvWtkPabAo8hn3+SG5EQJlZAAnKPctonuwZ6/6y1bBTBojBfx egXxsGTHJyd1JwW3YXdKqIgcvkUj3W5uo4LDXE1hYdu297awWd/jBlIASQXqK/lxADJl VZbmTUnPfr1YEmzmz9j6bXZMkBFtTOwHVvzeIShvtrRoxtqSGqOkxYycR3JMQx3jEwdN EOyuaPeLrVDsyeGWYXj0oW+0s0JbUDJmo/YS4ja6kDx574ezGBaVxJLRfQQC/Ap6vdzL kTNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707913871; x=1708518671; 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=9KPK5FCNE9zxEgfix6ahooLeTfePYk7EUjPQG8oQi2w=; b=doD0Y+Jk7v+1xV3y5iddFC3CNf9sua0MJijrEYae9MjdSSzY3xUsdFUFbBXEc+cCjU 2yV7ifacg8BCj9/Iy9Wl4vyirANyMhoMipqBE0pIdzaHdhmBqeD4Yt4lEiMN1OyCWsK5 /YekTIlZxxd8bmLft92jrcSqvAq/t2RsMudicxJLu35s0nRRe4piZDBAUQCi4afVSngX NI6oV1/BS4jyLFB0L6wXlofRY21HtIYq9XNZkRU4yiKoCKFX695vw3/hcrEK/J31Z2fk 4NoCgj7Em/Cg+hMl0kXGC4CoWJWUIQ0kNO6W8PhvUa6IW4HxT0sXz5AUCmwINJtwNDd7 zM7Q== X-Gm-Message-State: AOJu0YwxbhSWfOCINMU+/ywFgjlrG1BS7N3GW5GTLJvgoOPMoUQf3731 lSk5nRxE96YWcHa0CmFKDEPLIlGqaidezyYQ9pk278reTdq1UDFXlJEpealqs1Db0qR7bpqmxFk CMHyv3USJpbx3t9JQbc3gjSFA6HfRU3k+5zAUi3FMeRDBeL+8CBKuE3IVMqffyCDc8sRclyjUod ysjSbDEER5u+cD/EGAFn7NAvVnGyZ5EjIqyLb55OY7 X-Google-Smtp-Source: AGHT+IF0q5bOQz/3msxwYVGq0tsMlHO2zp4p+XInYuX9wSfRsvMiHwy7UcX6ucJsX/6CRdlrmCjAwni1 X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a05:6000:a0f:b0:33c:e1db:710e with SMTP id co15-20020a0560000a0f00b0033ce1db710emr7723wrb.8.1707913870961; Wed, 14 Feb 2024 04:31:10 -0800 (PST) Date: Wed, 14 Feb 2024 13:29:26 +0100 In-Reply-To: <20240214122845.2033971-45-ardb+git@google.com> Mime-Version: 1.0 References: <20240214122845.2033971-45-ardb+git@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=5018; i=ardb@kernel.org; h=from:subject; bh=CItFEmQ61JD6u+vUYuXJZMKoPIeXpt5+N3BV4b917tI=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIfXMJs1V3T83/F87c9+lKLdZXfdizs5ntP8eWa4TJXnnz 6++3Yc2d5SyMIhxMMiKKbIIzP77bufpiVK1zrNkYeawMoEMYeDiFICJJNQy/M+0X3tXV2j1lxPv lkcle17V5lNeICnSZ92myevn+2/OGR+G/xGPMk//aju9SH71o/Xzr+/L4twf837uttxti9MES9k WR3ECAA== X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog Message-ID: <20240214122845.2033971-85-ardb+git@google.com> Subject: [PATCH v8 40/43] arm64: Enable 52-bit virtual addressing for 4k and 16k granule configs From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Catalin Marinas , Will Deacon , Marc Zyngier , Mark Rutland , Ryan Roberts , Anshuman Khandual , Kees Cook X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240214_123112_786870_9FF830C6 X-CRM114-Status: GOOD ( 16.36 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ard Biesheuvel Update Kconfig to permit 4k and 16k granule configurations to be built with 52-bit virtual addressing, now that all the prerequisites are in place. While at it, update the feature description so it matches on the appropriate feature bits depending on the page size. For simplicity, let's just keep ARM64_HAS_VA52 as the feature name. Note that LPA2 based 52-bit virtual addressing requires 52-bit physical addressing support to be enabled as well, as programming TCR.TxSZ to values below 16 is not allowed unless TCR.DS is set, which is what activates the 52-bit physical addressing support. While supporting the converse (52-bit physical addressing without 52-bit virtual addressing) would be possible in principle, let's keep things simple, by only allowing these features to be enabled at the same time. Signed-off-by: Ard Biesheuvel --- arch/arm64/Kconfig | 17 ++++++++------- arch/arm64/kernel/cpufeature.c | 22 ++++++++++++++++---- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 9ca3316d6379..eed8fef08a10 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -368,7 +368,9 @@ config PGTABLE_LEVELS default 3 if ARM64_64K_PAGES && (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39 default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47 + default 4 if ARM64_16K_PAGES && (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48 + default 5 if ARM64_4K_PAGES && ARM64_VA_BITS_52 config ARCH_SUPPORTS_UPROBES def_bool y @@ -396,13 +398,13 @@ config BUILTIN_RETURN_ADDRESS_STRIPS_PAC config KASAN_SHADOW_OFFSET hex depends on KASAN_GENERIC || KASAN_SW_TAGS - default 0xdfff800000000000 if (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) && !KASAN_SW_TAGS - default 0xdfffc00000000000 if ARM64_VA_BITS_47 && !KASAN_SW_TAGS + default 0xdfff800000000000 if (ARM64_VA_BITS_48 || (ARM64_VA_BITS_52 && !ARM64_16K_PAGES)) && !KASAN_SW_TAGS + default 0xdfffc00000000000 if (ARM64_VA_BITS_47 || ARM64_VA_BITS_52) && ARM64_16K_PAGES && !KASAN_SW_TAGS default 0xdffffe0000000000 if ARM64_VA_BITS_42 && !KASAN_SW_TAGS default 0xdfffffc000000000 if ARM64_VA_BITS_39 && !KASAN_SW_TAGS default 0xdffffff800000000 if ARM64_VA_BITS_36 && !KASAN_SW_TAGS - default 0xefff800000000000 if (ARM64_VA_BITS_48 || ARM64_VA_BITS_52) && KASAN_SW_TAGS - default 0xefffc00000000000 if ARM64_VA_BITS_47 && KASAN_SW_TAGS + default 0xefff800000000000 if (ARM64_VA_BITS_48 || (ARM64_VA_BITS_52 && !ARM64_16K_PAGES)) && KASAN_SW_TAGS + default 0xefffc00000000000 if (ARM64_VA_BITS_47 || ARM64_VA_BITS_52) && ARM64_16K_PAGES && KASAN_SW_TAGS default 0xeffffe0000000000 if ARM64_VA_BITS_42 && KASAN_SW_TAGS default 0xefffffc000000000 if ARM64_VA_BITS_39 && KASAN_SW_TAGS default 0xeffffff800000000 if ARM64_VA_BITS_36 && KASAN_SW_TAGS @@ -1310,7 +1312,7 @@ config ARM64_VA_BITS_48 config ARM64_VA_BITS_52 bool "52-bit" - depends on ARM64_64K_PAGES && (ARM64_PAN || !ARM64_SW_TTBR0_PAN) + depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN help Enable 52-bit virtual addressing for userspace when explicitly requested via a hint to mmap(). The kernel will also use 52-bit @@ -1357,10 +1359,11 @@ choice config ARM64_PA_BITS_48 bool "48-bit" + depends on ARM64_64K_PAGES || !ARM64_VA_BITS_52 config ARM64_PA_BITS_52 - bool "52-bit (ARMv8.2)" - depends on ARM64_64K_PAGES + bool "52-bit" + depends on ARM64_64K_PAGES || ARM64_VA_BITS_52 depends on ARM64_PAN || !ARM64_SW_TTBR0_PAN help Enable support for a 52-bit physical address space, introduced as diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 94f035f6c421..0be9296e9253 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -2703,15 +2703,29 @@ static const struct arm64_cpu_capabilities arm64_features[] = { }, #ifdef CONFIG_ARM64_VA_BITS_52 { - .desc = "52-bit Virtual Addressing (LVA)", .capability = ARM64_HAS_VA52, .type = ARM64_CPUCAP_BOOT_CPU_FEATURE, - .sys_reg = SYS_ID_AA64MMFR2_EL1, - .sign = FTR_UNSIGNED, + .matches = has_cpuid_feature, .field_width = 4, +#ifdef CONFIG_ARM64_64K_PAGES + .desc = "52-bit Virtual Addressing (LVA)", + .sign = FTR_SIGNED, + .sys_reg = SYS_ID_AA64MMFR2_EL1, .field_pos = ID_AA64MMFR2_EL1_VARange_SHIFT, - .matches = has_cpuid_feature, .min_field_value = ID_AA64MMFR2_EL1_VARange_52, +#else + .desc = "52-bit Virtual Addressing (LPA2)", + .sys_reg = SYS_ID_AA64MMFR0_EL1, +#ifdef CONFIG_ARM64_4K_PAGES + .sign = FTR_SIGNED, + .field_pos = ID_AA64MMFR0_EL1_TGRAN4_SHIFT, + .min_field_value = ID_AA64MMFR0_EL1_TGRAN4_52_BIT, +#else + .sign = FTR_UNSIGNED, + .field_pos = ID_AA64MMFR0_EL1_TGRAN16_SHIFT, + .min_field_value = ID_AA64MMFR0_EL1_TGRAN16_52_BIT, +#endif +#endif }, #endif {}, -- 2.43.0.687.g38aa6559b0-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel