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 3A70DC48285 for ; Tue, 23 Jan 2024 16:01:14 +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=+UW/uc0YtVOLCI0yhe/eM8cLYD9SycUuoyiUcsPEC9o=; b=UyiaCoWpraUoj23MIDqriC3yed hWpnvClp9ZBIxVTesAoleQU4zwwbeA3j/8jG7nzvw9d3dKDoytR7osuKMfgDADkGbEU9YlwEbGvhS zDsCThjWnmAfcuHp9KeFDfm06tDgdPuw8+JnxYFjPP5SvREg9L1Lr3wlLIOy13in03mxX9hrOuncE 8D0tOAOk6eql4vSctxjrsge1Fj9p2EdiRhDbrb86IIFqQCxy21rSMilSgjA4Qd3fgYAEi7KJVXHgP YDmUURTQbQybhRFYaYOmkbqwe5YYnqajQXyd3XUD+xXanGncj60pK6tCwDIvfhwbu1OrOX0KU3+jp dL0B7Qng==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rSJCX-00HAwe-32; Tue, 23 Jan 2024 16:00:37 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rSICC-00GuWr-30 for linux-arm-kernel@bombadil.infradead.org; Tue, 23 Jan 2024 14:56:13 +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=H9Gxd+On0iANIztLwIDzI9X4qQe9MQm66Oh2fMvJ5jQ=; b=L6bxkP5zXO7Fcpp0S6wImBTEKm hpRmUxNHpnS8r+gjBpHHpEm7V4Lfsa4tpLlRhlxnQjnF3sMb7V0wjoOYeY1K8CsnPp7TyOaSd8sdF 4VGps1uD4xGNCUj7uYWpd/zBiSiVdEDl5l2gElNcQ6f+LjymyPZwoy32kTvnHELJ3Ue3eNEW47k45 qLLGpZts7A5luP9nMi18ALLWjoy80Rh9dqCEcSuvEDACKfg63aYRjiyRhGdjFrqt1Waie0hheyeTX S7uFzhxyz0xUeC6lBA+MHCOSaCIemBM1ikYLhdMhW3LbsDKSyXLPHNR0+bL7XZSRW9DHklO4QCju3 bbe/Or7Q==; 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 1rSICA-00000003vef-0Bth for linux-arm-kernel@lists.infradead.org; Tue, 23 Jan 2024 14:56:11 +0000 Received: by mail-wr1-x449.google.com with SMTP id ffacd0b85a97d-337d2ccaab0so2568065f8f.0 for ; Tue, 23 Jan 2024 06:56:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1706021768; x=1706626568; 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=H9Gxd+On0iANIztLwIDzI9X4qQe9MQm66Oh2fMvJ5jQ=; b=Jdo89uqjMg+WzJx73tMYZ2pMqJbQk1ncVf+ROs6cy7HAaKfNMgSG2pjz4SuFQ6WDr8 6ADbYiX1SiQoG9+ppu0xVOeVkHnt7kOgiACX+HzbhyWnbn+fLK7wGrb3GXJQVGygqxqe z8Fz6vddTJnUE8qcx46hCNquuMFOAhSRYScbomwsMT/mjtDcTySBE1188cHC6wrnn23A rfEjVW7AuKud9QSVel1NzRRQYUkA9wIkpKJFlf8ytZJMHOb9nZYC2jHzgLv/ikv+EuEi SY1WqXyIPfSahhkqEHOH+uVUYn5ja14R4P+TZSH8Np7Ghuzmr8mIZaSZqrYSxSwQQhTd SX3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706021768; x=1706626568; 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=H9Gxd+On0iANIztLwIDzI9X4qQe9MQm66Oh2fMvJ5jQ=; b=cyMzC9c6jjisIr4ooxbJoGGJDE24wTOaiAl+O+UmrdzWX37BnKZOI65uaDIKTDXbGq WhjHZISf+sy+PIMDupmCWCvnmsKyDf9drd9NntbAZGpskEBjOL1NQKrDjrDI7Xnl64rP 5Yd8ZLWvZfLZrb04ZNgtBT4Qx4Qb27NLXOysvD1ouHJNJC5hPyxC3V3RYqex1IeKm7FI /a4AL5C5FJBPniC627C50uzLJhTX54eujc1mPjjJ7NwprykIYycAVxRgcDuDxvnr/Apw /KDXpri/BtRKsvA4+5kO2xMA/Y5wb4igpLqGAtZGvgERQIvDnQRYzTonnFCAV+fBPkUs /cRA== X-Gm-Message-State: AOJu0YwKRVl+tymODIRIDXLmcasVUT0zRnwOAyrajD7mtDb3lDBLnRj8 gDfBIfUSGfnPF+AZDHaA7UnKv2Z4CQFAOwRlDExxqLFJSHO04nMPrsvV+vnqhduxkWUpegDmRkp jQMlVUV37JaoWiI38bW2onlM0tCVnq77fc5KcHwqEAUft3RbWIwPiveYo1naXZJ/glokyhZdxTj FfBc77NsaggOvlUJyZG6hqDbQykGL+J6qg7js8klU4 X-Google-Smtp-Source: AGHT+IHHX+AYUaLtXOIi5/0HLO6+Be9jYq+aSWT7vdliWA451s3bb99aQsyG3ouiaU3oVlcKhJXKSIqG X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a05:6000:71a:b0:337:dbc2:3584 with SMTP id bs26-20020a056000071a00b00337dbc23584mr17310wrb.0.1706021768693; Tue, 23 Jan 2024 06:56:08 -0800 (PST) Date: Tue, 23 Jan 2024 15:53:45 +0100 In-Reply-To: <20240123145258.1462979-52-ardb+git@google.com> Mime-Version: 1.0 References: <20240123145258.1462979-52-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=EK/sRPp8OqikWsFrvEepygSmQvpn2J/XAp8HZowH91o=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIXX9pT+TA+wYVNpvR5WvSrw3dTGniMqpFZ6bdy7hES2on pnhXLulo5SFQYyDQVZMkUVg9t93O09PlKp1niULM4eVCWQIAxenAEwkr4/hf8Wxx3fum505/b/8 163O7E9p67YvP3XwRbT+Lx3+Bt/HG0MZ/vA1f9bZzlEidLU28NXeOUef/rZqc2Z3v+mrXzGrT2z WZW4A X-Mailer: git-send-email 2.43.0.429.g432eaa2c6b-goog Message-ID: <20240123145258.1462979-98-ardb+git@google.com> Subject: [PATCH v7 46/50] 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-20240123_145610_182650_8B00734E X-CRM114-Status: GOOD ( 16.49 ) 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.429.g432eaa2c6b-goog _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel