From patchwork Mon Jan 28 20:57:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bhupesh Sharma X-Patchwork-Id: 10784781 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EF3321390 for ; Mon, 28 Jan 2019 20:58:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DCC3329AA8 for ; Mon, 28 Jan 2019 20:58:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D037229C61; Mon, 28 Jan 2019 20:58:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 41FD229AA8 for ; Mon, 28 Jan 2019 20:58:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=DwrUV3J8zMqGKoTPwN+JfUBsQWoH8IhBM8/rkNg5syw=; b=nmsoppbhg/a7ac/RkPqMoOyoyI dNmTKFdXXpGQneC/+YNWDovCmbkrmWt3tT8HOkTlmFEhMx8aIPzDCzdnattM75bUnB8CDOrJVgtPX dKuV7Ve2c1+UZlT10S5ySdVMVgmW/kIMGoW5FeIZK4kvsaWnR7Kj5pfmUbZwYq1HnTqRZL3oNdizC X9C1+4oGfwad/jZoO4tbjej7u6RdZBkT1B3lYZPzm9RF3YfdnIa9rXbgPxSmk3jz1tC4xuOwcvroC 3MAsokcblU99LxBCsVfk+knFlRoVgGh6UObGuS/BaqYZxE9dtqEBJsGMQ8d908XC2qcmpEcD4Bsr7 Qmen0/Ow==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1goDzB-0002P7-4g; Mon, 28 Jan 2019 20:58:29 +0000 Received: from mail-pl1-f195.google.com ([209.85.214.195]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1goDyp-00025O-P2 for linux-arm-kernel@lists.infradead.org; Mon, 28 Jan 2019 20:58:09 +0000 Received: by mail-pl1-f195.google.com with SMTP id e5so8292669plb.5 for ; Mon, 28 Jan 2019 12:58:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=GHnHUPZ9AIS/dpbTBE3AlHpiE3cNPGmxAHjPVpSOKXI=; b=kpT1qzBXxMwsIuSb8vJoQZC9shCapcvn1cOiIxffjqLnODGuAZaj5+UWoTGCH6p/Za +hUmE9Dbhf5ySMQWgq7WjxY6oORPB1Qwm6i4YXK9bhn7xY+AnW1ET9Fzyv3NjBe0Ziz1 KGT1a2KC24j9jeLuf8bsBM957ZTb1C0x7V1jjyfwF+z37yMCN8qqUQ1keXoG9IFhO2zr dQMebyCRHBbuptItierBJbKox0gCtTcyVrQu3Ryulb//GDGpGry780CmuHD2I31iYdTA Q0OETuIg+Jc+PJhQhstDo9g1vDCe8xDShistULjSzAs0Yb+VrmrWq5AGc9BZhODA++qK nsHg== X-Gm-Message-State: AJcUukdJtjTchmx29+fVIymqfnHKxkkKUwhebOVvhLyb/8feqYySaPqV SgkZrPF8tKQpLwppfLiePavuoku0pK0= X-Google-Smtp-Source: ALg8bN4orZzcqOHj8OHbMsFULsWO/IfKBSnX9lT44jv8xoAjql3zrlXz0azFqyDe4RMW4V9fQ7Gwag== X-Received: by 2002:a17:902:32c3:: with SMTP id z61mr23243591plb.114.1548709086535; Mon, 28 Jan 2019 12:58:06 -0800 (PST) Received: from localhost ([122.177.107.199]) by smtp.gmail.com with ESMTPSA id 85sm45807136pfw.17.2019.01.28.12.58.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Jan 2019 12:58:05 -0800 (PST) From: Bhupesh Sharma To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/2] arm64: Expose address bits (physical/virtual) via cpuinfo Date: Tue, 29 Jan 2019 02:27:55 +0530 Message-Id: <1548709076-22317-2-git-send-email-bhsharma@redhat.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1548709076-22317-1-git-send-email-bhsharma@redhat.com> References: <1548709076-22317-1-git-send-email-bhsharma@redhat.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190128_125807_993531_B3DF431E X-CRM114-Status: GOOD ( 15.61 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, steve.capper@arm.com, catalin.marinas@arm.com, bhsharma@redhat.com, ard.biesheuvel@linaro.org, will.deacon@arm.com, bhupesh.linux@gmail.com, kexec@lists.infradead.org, suzuki.poulose@arm.com MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP With ARMv8.2-LVA and LPA architecture extensions, arm64 hardware which supports these extensions can support upto 52-bit virtual and 52-bit physical addresses respectively. Since at the moment we enable the support of these extensions via CONFIG flags, e.g. - LPA via CONFIG_ARM64_PA_BITS_52, and - LVA via CONFIG_ARM64_FORCE_52BIT The easiest way a user can determine the physical/virtual addresses supported on the hardware, is via the '/proc/cpuinfo' interface. This patches enables the same. Signed-off-by: Bhupesh Sharma --- arch/arm64/include/asm/cpufeature.h | 59 ++++++++++++++++++++++++------------- arch/arm64/include/asm/sysreg.h | 19 ++++++++++++ arch/arm64/kernel/cpuinfo.c | 4 ++- 3 files changed, 61 insertions(+), 21 deletions(-) diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h index dfcfba725d72..2f1270ddc277 100644 --- a/arch/arm64/include/asm/cpufeature.h +++ b/arch/arm64/include/asm/cpufeature.h @@ -522,6 +522,45 @@ static inline bool system_supports_32bit_el0(void) return cpus_have_const_cap(ARM64_HAS_32BIT_EL0); } +static inline u32 id_aa64mmfr0_parange_to_phys_shift(int parange) +{ + switch (parange) { + case ID_AA64MMFR0_PARANGE_32: return PARANGE_32; + case ID_AA64MMFR0_PARANGE_36: return PARANGE_36; + case ID_AA64MMFR0_PARANGE_40: return PARANGE_40; + case ID_AA64MMFR0_PARANGE_44: return PARANGE_44; + case ID_AA64MMFR0_PARANGE_48: return PARANGE_48; + case ID_AA64MMFR0_PARANGE_52: return PARANGE_52; + /* + * A future PE could use a value unknown to the kernel. + * However, by the "D10.1.4 Principles of the ID scheme + * for fields in ID registers", ARM DDI 0487C.a, any new + * value is guaranteed to be higher than what we know already. + * As a safe limit, we return the limit supported by the kernel. + */ + default: return CONFIG_ARM64_PA_BITS; + } +} + +static inline u32 id_aa64mmfr0_pa_range_bits(void) +{ + u64 mmfr0; + + mmfr0 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR0_EL1); + return id_aa64mmfr0_parange_to_phys_shift(mmfr0 & 0x7); +} + +static inline u32 id_aa64mmfr2_va_range_bits(void) +{ + u64 mmfr2; + u32 val; + + mmfr2 = read_sanitised_ftr_reg(SYS_ID_AA64MMFR2_EL1); + val = cpuid_feature_extract_unsigned_field(mmfr2, + ID_AA64MMFR2_LVA_SHIFT); + return ((val == ID_AA64MMFR2_VARANGE_52) ? VARANGE_52 : VARANGE_48); +} + static inline bool system_supports_4kb_granule(void) { u64 mmfr0; @@ -636,26 +675,6 @@ static inline void arm64_set_ssbd_mitigation(bool state) {} extern int do_emulate_mrs(struct pt_regs *regs, u32 sys_reg, u32 rt); -static inline u32 id_aa64mmfr0_parange_to_phys_shift(int parange) -{ - switch (parange) { - case 0: return 32; - case 1: return 36; - case 2: return 40; - case 3: return 42; - case 4: return 44; - case 5: return 48; - case 6: return 52; - /* - * A future PE could use a value unknown to the kernel. - * However, by the "D10.1.4 Principles of the ID scheme - * for fields in ID registers", ARM DDI 0487C.a, any new - * value is guaranteed to be higher than what we know already. - * As a safe limit, we return the limit supported by the kernel. - */ - default: return CONFIG_ARM64_PA_BITS; - } -} #endif /* __ASSEMBLY__ */ #endif diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h index 72dc4c011014..70910b14b2f3 100644 --- a/arch/arm64/include/asm/sysreg.h +++ b/arch/arm64/include/asm/sysreg.h @@ -617,9 +617,22 @@ #define ID_AA64MMFR0_TGRAN64_SUPPORTED 0x0 #define ID_AA64MMFR0_TGRAN16_NI 0x0 #define ID_AA64MMFR0_TGRAN16_SUPPORTED 0x1 +#define ID_AA64MMFR0_PARANGE_32 0x0 +#define ID_AA64MMFR0_PARANGE_36 0x1 +#define ID_AA64MMFR0_PARANGE_40 0x2 +#define ID_AA64MMFR0_PARANGE_42 0x3 +#define ID_AA64MMFR0_PARANGE_44 0x4 #define ID_AA64MMFR0_PARANGE_48 0x5 #define ID_AA64MMFR0_PARANGE_52 0x6 +#define PARANGE_32 32 +#define PARANGE_36 36 +#define PARANGE_40 40 +#define PARANGE_42 42 +#define PARANGE_44 44 +#define PARANGE_48 48 +#define PARANGE_52 52 + #ifdef CONFIG_ARM64_PA_BITS_52 #define ID_AA64MMFR0_PARANGE_MAX ID_AA64MMFR0_PARANGE_52 #else @@ -646,6 +659,12 @@ #define ID_AA64MMFR2_UAO_SHIFT 4 #define ID_AA64MMFR2_CNP_SHIFT 0 +#define ID_AA64MMFR2_VARANGE_48 0x0 +#define ID_AA64MMFR2_VARANGE_52 0x1 + +#define VARANGE_48 48 +#define VARANGE_52 52 + /* id_aa64dfr0 */ #define ID_AA64DFR0_PMSVER_SHIFT 32 #define ID_AA64DFR0_CTX_CMPS_SHIFT 28 diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c index ca0685f33900..66583ac3be19 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -177,7 +177,9 @@ static int c_show(struct seq_file *m, void *v) seq_printf(m, "CPU architecture: 8\n"); seq_printf(m, "CPU variant\t: 0x%x\n", MIDR_VARIANT(midr)); seq_printf(m, "CPU part\t: 0x%03x\n", MIDR_PARTNUM(midr)); - seq_printf(m, "CPU revision\t: %d\n\n", MIDR_REVISION(midr)); + seq_printf(m, "CPU revision\t: %d\n", MIDR_REVISION(midr)); + seq_printf(m, "address sizes\t: %d bits physical, %d bits virtual\n\n", + id_aa64mmfr0_pa_range_bits(), id_aa64mmfr2_va_range_bits()); } return 0; From patchwork Mon Jan 28 20:57:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bhupesh Sharma X-Patchwork-Id: 10784783 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EC86D13B5 for ; Mon, 28 Jan 2019 20:58:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D6DF22B68A for ; Mon, 28 Jan 2019 20:58:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C4E722B6E1; Mon, 28 Jan 2019 20:58:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 668FB2B68A for ; Mon, 28 Jan 2019 20:58:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=EWXik0t7krmxlkw8BuxoFlAF3i70RlmHFuensgM58eg=; b=HwT9sjP9WdBCQW5EJZDkKXh+pd iJ2LCxm9Lilj0vwA0Re87twBv3JQMZhri+21hCACB1g+0dBbOm7hmR7hCae6aRzWZ5+8Xs+yriXzP qJK6EtzHWhtwqouwQuWhXivrfzPnAOhorZQyylMch1sjSWrESuf3QqEIS+gdwhIA6r422s2DNB0nP fBhAHSRuANP99FjMEVly3AFWVH41K61Lm/ge42JX2ytBpTCZGO385s/NZcRz2aM/uAiS6y6/6+HVr tNfBFOu12za0ekbXuOY9lAMZG2P+X2Nv225r/AJs8J4laz9L/vfNBlRAqUChRfJrwp1R64KeZGlF5 MjU7Z++Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1goDzd-0002l8-8x; Mon, 28 Jan 2019 20:58:57 +0000 Received: from mail-pf1-f195.google.com ([209.85.210.195]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1goDyt-00027D-80 for linux-arm-kernel@lists.infradead.org; Mon, 28 Jan 2019 20:58:16 +0000 Received: by mail-pf1-f195.google.com with SMTP id q1so8560773pfi.5 for ; Mon, 28 Jan 2019 12:58:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=JBpjXJf9B20HbiFiRciPMT3D43O2piGyXo3IixwsYxE=; b=dVWtqIAzjhZxVKe3SRmnxx8HML0JngOJ+9BHinK3/KOtcz8rZ3VL0A9EXfTVxMJ8nS Hr5zOGdGEpWxHzp0opwiQmHF0uLrPCbyaCoQPvHHg3OsrRTYDMZaJTA9VeGptVSW0Z3L G5LI9PHq52SYWHvg88OEj4Ci0sfVYjiqolo4BFiYS4Yy//C5eOhdlMDQ9nTbIF4E4GGC fOas7tDuvm2Cp2xeQIJ3Xe+ETEHFjB0Cw5sXMGrowyLenxsY8lh5jKNC2JJJMYM6j3mh nr43B73bS+12J8VkTB8f23wZuSLGI/+GHZZiNgaAjcT0Dm0HWCHi7WQNC2+43ePmTvWt tyLw== X-Gm-Message-State: AJcUukdd5IbMtfoXP3H8lXeFWCDCCpN4mxLLUI1hDfhC+ZQjvVIFKonC imWwBkESIWU3C02w+XsdKvqnT8DmdGo= X-Google-Smtp-Source: ALg8bN5UpH31w1NhGvwm39h3OpiQL7iA8x8SyKRrrCCFDmBhts3tWjty8vmbtRBEBVYEeBeBpVcxfQ== X-Received: by 2002:a62:160d:: with SMTP id 13mr23225210pfw.203.1548709090143; Mon, 28 Jan 2019 12:58:10 -0800 (PST) Received: from localhost ([122.177.107.199]) by smtp.gmail.com with ESMTPSA id r66sm54282302pfk.157.2019.01.28.12.58.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Jan 2019 12:58:09 -0800 (PST) From: Bhupesh Sharma To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 2/2] arm64: Expose PARange via ID_AA64MMFR0_EL1 and VARange via ID_AA64MMFR2_EL1 Date: Tue, 29 Jan 2019 02:27:56 +0530 Message-Id: <1548709076-22317-3-git-send-email-bhsharma@redhat.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1548709076-22317-1-git-send-email-bhsharma@redhat.com> References: <1548709076-22317-1-git-send-email-bhsharma@redhat.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190128_125811_613305_BB0959D7 X-CRM114-Status: GOOD ( 14.01 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, steve.capper@arm.com, catalin.marinas@arm.com, bhsharma@redhat.com, ard.biesheuvel@linaro.org, will.deacon@arm.com, bhupesh.linux@gmail.com, kexec@lists.infradead.org, suzuki.poulose@arm.com MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP ARMv8.2 architecture hardware extensions can support upto 52-bit physical addresses (ARMv8.2-LPA) and 52-bit virtual addresses (ARMv8.2-LVA). User-space utilities like 'makedumpfile' can try and use the getauxval() function to retrieve the underlying PARange and VARange values supported. An example implementation can be via the 'Appendix I: Example' shown in 'Documentation/arm64/cpu-feature-registers.txt'. A reference 'makedumpfile' implementation which uses a similar approach is available in [0]. So, we expose these properties via 'FTR_NONSTRICT' and 'FTR_VISIBLE' settings for 'ID_AA64MMFR0_PARANGE_SHIFT' and 'ID_AA64MMFR2_LVA_SHIFT'. [0]. https://github.com/bhupesh-sharma/makedumpfile/blob/9d7da4aad3efe79b448f48cc3454fcae46a316d6/arch/arm64.c#L499 Signed-off-by: Bhupesh Sharma --- arch/arm64/kernel/cpufeature.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index f6d84e2c92fe..5cfc08cbf147 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -194,7 +194,7 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr0[] = { * Differing PARange is fine as long as all peripherals and memory are mapped * within the minimum PARange of all CPUs */ - ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64MMFR0_PARANGE_SHIFT, 4, 0), + ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64MMFR0_PARANGE_SHIFT, 4, 0), ARM64_FTR_END, }; @@ -211,7 +211,7 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr1[] = { static const struct arm64_ftr_bits ftr_id_aa64mmfr2[] = { ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR2_FWB_SHIFT, 4, 0), ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR2_AT_SHIFT, 4, 0), - ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR2_LVA_SHIFT, 4, 0), + ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64MMFR2_LVA_SHIFT, 4, 0), ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR2_IESB_SHIFT, 4, 0), ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR2_LSM_SHIFT, 4, 0), ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR2_UAO_SHIFT, 4, 0),