From patchwork Mon Nov 13 17:42:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454257 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 686E7C4167D for ; Mon, 13 Nov 2023 17:44:19 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=pvb8qKOwz4oZGAgqDD+e9PrxbA/d+WhsQN3rAP4y9PY=; b=H5LXJ/PYQFB7GU GA38PyH9j28lSIAawS0QN34Lx6J69V9xFj2/CPfvLCXb7o81pAzdEU013EhlkMm6aXTexSTsi0gGE BpbQuKaw1NSKiE1zuLNw5yNZvo4yWODSl5zkBdP+ll1IvJo1vR86X4U77y1QSRhQOx2wKqdvGmjop PzngHlbRY+/mG4k33hBg0mSiB4SxWb9WI4M5VebOzcFWVLQZs7vvKx8R5dLsAZE3aO9N9kPLVYf7F 3fGy2PGnQcpwhDK9lXyF1Wd9sOcjqlwox0k0iYgJCQCQMKMJ4D/1sJKO3bEKvj1+Ch4U0E9M6JWJH XCOkvTOfny+p4TGIMqiQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayb-00EQ8M-1o; Mon, 13 Nov 2023 17:43:57 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayQ-00EPyw-1x for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:49 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id EF199CE17C5; Mon, 13 Nov 2023 17:43:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34441C433C7; Mon, 13 Nov 2023 17:43:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897424; bh=2/jpT2ThMNpF5uIulka4/RucBPTS/TEVnwOufL80Y8k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZdOCqQwwdfTo6fqv9v+Yq1poDjjMXq0ivHQPPjntOi4C2hUzE76Tyjzi+ytIGD86E 0AZadXivOc7KbvJwuPcEhYWnx5inBOGpvaPwz0n27Zm+jUdU6l7AyrhIbo8GklJl7P FH2hNngO75QJq2tmcBq15x3tmI7XV8/FlCnBNG9WuU19Esrycy/3M0LcHeL2rABh5K b1VBa0aIx+l7k2Uhec5SMjgugWbWH9hTbtwcVTmM3s9LU9QW/52vmbNsw4wPInWNLh c8ZeWKrcbzMHqo2zWebyUyDOJKfCiXwO/1Z8DAwhNHmDM6wscYltBlzG+YdU3U9Zhv gamOP6op30sEQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayL-00CkQ4-Oy; Mon, 13 Nov 2023 17:43:42 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 01/12] arm64: cpufeatures: Correctly handle signed values Date: Mon, 13 Nov 2023 17:42:33 +0000 Message-Id: <20231113174244.3026520-2-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094346_990011_278711BD X-CRM114-Status: GOOD ( 18.15 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Although we've had signed values for some features such as PMUv3 and FP, the code that handles the comparaison with some limit has a couple of annoying issues: - the min_field_value is always unsigned, meaning that we cannot easily compare it with a negative value - it is not possible to have a range of values, let alone a range of negative values Fix this by: - adding an upper limit to the comparison, defaulting to all bits being set to the maximum positive value - ensuring that the signess of the min and max values are taken into account A ARM64_CPUID_FIELDS_NEG() macro is provided for signed features, but nothing is using it yet. Signed-off-by: Marc Zyngier --- arch/arm64/include/asm/cpufeature.h | 1 + arch/arm64/kernel/cpufeature.c | 66 +++++++++++++++++++++++++---- 2 files changed, 58 insertions(+), 9 deletions(-) diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h index f6d416fe49b0..5f3f62efebd5 100644 --- a/arch/arm64/include/asm/cpufeature.h +++ b/arch/arm64/include/asm/cpufeature.h @@ -363,6 +363,7 @@ struct arm64_cpu_capabilities { u8 field_pos; u8 field_width; u8 min_field_value; + u8 max_field_value; u8 hwcap_type; bool sign; unsigned long hwcap; diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 646591c67e7a..e52d2c2b757f 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -140,12 +140,43 @@ void dump_cpu_features(void) pr_emerg("0x%*pb\n", ARM64_NCAPS, &system_cpucaps); } +#define __ARM64_EXPAND_RFV(reg, field, val) reg##_##field##_##val +#define __ARM64_MAX_POSITIVE(reg, field) \ + ((reg##_##field##_SIGNED ? \ + BIT(reg##_##field##_WIDTH - 1) : \ + BIT(reg##_##field##_WIDTH)) - 1) + +#define __ARM64_MIN_NEGATIVE(reg, field) BIT(reg##_##field##_WIDTH - 1) + +#define __ARM64_CPUID_FIELDS(reg, field, min_value, max_value) \ + .sys_reg = SYS_##reg, \ + .field_pos = reg##_##field##_SHIFT, \ + .field_width = reg##_##field##_WIDTH, \ + .sign = reg##_##field##_SIGNED, \ + .min_field_value = min_value, \ + .max_field_value = max_value, + +/* + * ARM64_CPUID_FIELDS() encodes a field with a range from min_value to + * an implicit maximum that depends on the sign-ess of the field. + * + * An unsigned field will be capped at all ones, while a signed field + * will be limited to the positive half only. + */ #define ARM64_CPUID_FIELDS(reg, field, min_value) \ - .sys_reg = SYS_##reg, \ - .field_pos = reg##_##field##_SHIFT, \ - .field_width = reg##_##field##_WIDTH, \ - .sign = reg##_##field##_SIGNED, \ - .min_field_value = reg##_##field##_##min_value, + __ARM64_CPUID_FIELDS(reg, field, \ + __ARM64_EXPAND_RFV(reg, field, min_value), \ + __ARM64_MAX_POSITIVE(reg, field)) + +/* + * ARM64_CPUID_FIELDS_NEG() encodes a field with a range from an + * implicit minimal value to max_value. This should be used when + * matching a non-implemented property. + */ +#define ARM64_CPUID_FIELDS_NEG(reg, field, max_value) \ + __ARM64_CPUID_FIELDS(reg, field, \ + __ARM64_MIN_NEGATIVE(reg, field), \ + __ARM64_EXPAND_RFV(reg, field, max_value)) #define __ARM64_FTR_BITS(SIGNED, VISIBLE, STRICT, TYPE, SHIFT, WIDTH, SAFE_VAL) \ { \ @@ -1470,11 +1501,28 @@ has_always(const struct arm64_cpu_capabilities *entry, int scope) static bool feature_matches(u64 reg, const struct arm64_cpu_capabilities *entry) { - int val = cpuid_feature_extract_field_width(reg, entry->field_pos, - entry->field_width, - entry->sign); + int val, min, max; + u64 tmp; + + val = cpuid_feature_extract_field_width(reg, entry->field_pos, + entry->field_width, + entry->sign); + + tmp = entry->min_field_value; + tmp <<= entry->field_pos; + + min = cpuid_feature_extract_field_width(tmp, entry->field_pos, + entry->field_width, + entry->sign); + + tmp = entry->max_field_value; + tmp <<= entry->field_pos; + + max = cpuid_feature_extract_field_width(tmp, entry->field_pos, + entry->field_width, + entry->sign); - return val >= entry->min_field_value; + return val >= min && val <= max; } static u64 From patchwork Mon Nov 13 17:42:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454260 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 DECB5C4167B for ; Mon, 13 Nov 2023 17:44:23 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=431mT9h6f4X9Q/DifrSFmsUE1Vg+4Ke6flNaT52u3/4=; b=RVIM566Qkkwjf5 3UaA2JwdqSA+shEeCKC0RoN03N42d15CFUDKiEZhtajDJMUbjwcwAgDlPuCJMY7wXX4BDu8BNPiOQ +FbDveuaYRA2jqg6Mn2W6UC6L+4hu0B37f/3TOljB2jvBwa36kvgXSfw2rHDTMl8dvvVhIJsX/M85 WjQxxKan0YfsKeGT2Mkpbc85tyVt8UfWtWk64lIrCVhlY6CKJplbu40ISNniwjMNz31RJFLXxmqIM +QB5FPIANQYciMCtpBlKzazJiXmbCJ9uAM555yl3jZ5fB+i/pg1ZVfTClpIufl929NOuDkS9rdvPd 7yFaf5KKTLOTV3b/EAuA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayT-00EQ3O-0I; Mon, 13 Nov 2023 17:43:49 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayP-00EPyv-2O for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:47 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 3CE5F60FD3; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A01D2C43391; Mon, 13 Nov 2023 17:43:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897424; bh=JPDliCysNAGaXceqZR+n1mYKUpMZcy9h1sqDdiU78iU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lAAAzI0+e8OMB4uVsbmcNBA09z82k8sDTTbqvT0mKIyOewMLzK6sXfUE2W6rywQGt DtanklzVP6evaAouzKlAna36jJ3wo6joNW5vIJzK16hjMTFJbDja9RrTLdOxAsm7qS 1ueB+/tLgYXGJtyzKZZvTEqt7yJyIBZedy1Sm3YAlUgmPM9biOy6tKjKbCJ03P65Z2 E1UyRMCMfC9pGQ2H4uz8mruv3OuraXwnI8KFaZndOEpe3hAy8cwyte2G9cYdVc93rE Ho2l1EvAU9nkormzdBCnSWXn6598C/fi+7YcSwujelyW+OIYRYqTdaoHnUDTCojrRI yd8C1H2th9IVg== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayM-00CkQ4-8O; Mon, 13 Nov 2023 17:43:42 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 02/12] arm64: cpufeature: Correctly display signed override values Date: Mon, 13 Nov 2023 17:42:34 +0000 Message-Id: <20231113174244.3026520-3-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094345_821175_FCAB6EE1 X-CRM114-Status: GOOD ( 12.11 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org When a field gets overriden, the kernel indicates the result of the override in dmesg. This works well with unsigned fields, but results in a pretty ugly output when the field is signed. Truncate the field to its width before displaying it. Signed-off-by: Marc Zyngier Reviewed-by: Oliver Upton --- arch/arm64/kernel/cpufeature.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index e52d2c2b757f..767a6f288755 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -950,7 +950,8 @@ static void init_cpu_ftr_reg(u32 sys_reg, u64 new) pr_warn("%s[%d:%d]: %s to %llx\n", reg->name, ftrp->shift + ftrp->width - 1, - ftrp->shift, str, tmp); + ftrp->shift, str, + tmp & (BIT(ftrp->width) - 1)); } else if ((ftr_mask & reg->override->val) == ftr_mask) { reg->override->val &= ~ftr_mask; pr_warn("%s[%d:%d]: impossible override, ignored\n", From patchwork Mon Nov 13 17:42:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454254 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 6553EC4332F for ; Mon, 13 Nov 2023 17:44: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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4TEpe2KuQz3JzfODu6ODORNYQ/vnj2nKiF021Kcn1uk=; b=N0CJI+krieAhVV BwNBlTy81TCOg1nnFWTHiahBSIgDDTWW4BKXtBS3siuScmCjUq0pDIFV08vn6SkVeCi9reinoHLVi KYiCXhMRD8tCwYLF0UEyGceRwpWm7yqFUhYEjfZfBlQRhOPQp3evGWHgK+MiG65hWN1L7rEvlpfIy Tuf1RGg71SJ6N+H0pGvWuZ4z/f0vWsqkaVB3rjjMtQAPLFjMr8jea73sSn7l3T58nxY2YT/OFimwk mqxughlCBVGrVfvA3pLsyOao3ERqdvH1Mhqd8qrd4atG/c2+/LUbmoaxUdAIRz+ZueowF/bqTBVEY WA6a/nFLD6BKS8117V+w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayS-00EQ2e-1Z; Mon, 13 Nov 2023 17:43:48 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayP-00EPyr-1r for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:46 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id EB63A60FDD; Mon, 13 Nov 2023 17:43:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 91D62C433D9; Mon, 13 Nov 2023 17:43:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897424; bh=A5I5Ank97gMJHjlMkiOS6x44usmfYJbXquzi5rguQ0s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IUwZHpKLldeJ8mo8atkd28gWqJSvvQo1goZyKIaJaZLXZFQ1WAeslXXHI14phk0eH 9Nbcx3UK5ipAd1gg8tQV+YOWCxw6BX/h/2f1CCZCmkcBPr8ZwDV91CjzCaIG42uAxi 0I4F29hZGwbJhVpH4w4tEQudHlKTPwABv00Yvmh6WA8UcfcUSOOfcuvEeP+Qb4aGA7 xAAoR3GRBmSo8kxRvdlXtt8oKx2N4ABwYnSAauvMt7nV9I+G3/KVZ+YqD8Q0W9dDUE 5yqoEZfbQ4bgEfovvpiOkjc2Gcq4GeXRtc1CGrMd4t882KMOxbasPTvLCxG95fzrmp F4jdjdeQG5aZg== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayM-00CkQ4-EI; Mon, 13 Nov 2023 17:43:42 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 03/12] arm64: sysreg: Add layout for ID_AA64MMFR4_EL1 Date: Mon, 13 Nov 2023 17:42:35 +0000 Message-Id: <20231113174244.3026520-4-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094345_658264_DE1947D0 X-CRM114-Status: UNSURE ( 9.77 ) X-CRM114-Notice: Please train this message. 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org ARMv9.5 has infroduced ID_AA64MMFR4_EL1 with a bunch of new features. Add the corresponding layout. This is extracted from the public ARM SysReg_xml_A_profile-2023-09 delivery, timestamped d55f5af8e09052abe92a02adf820deea2eaed717. Signed-off-by: Marc Zyngier --- arch/arm64/tools/sysreg | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg index 96cbeeab4eec..7fb3a4928256 100644 --- a/arch/arm64/tools/sysreg +++ b/arch/arm64/tools/sysreg @@ -1675,6 +1675,43 @@ UnsignedEnum 3:0 TCRX EndEnum EndSysreg +Sysreg ID_AA64MMFR4_EL1 3 0 0 7 4 +Res0 63:40 +UnsignedEnum 39:36 E3DSE + 0b0000 NI + 0b0001 IMP +EndEnum +Res0 35:28 +SignedEnum 27:24 E2H0 + 0b0000 IMP + 0b1110 NI_NV1 + 0b1111 NI +EndEnum +UnsignedEnum 23:20 NV_frac + 0b0000 NV_NV2 + 0b0001 NV2_ONLY +EndEnum +UnsignedEnum 19:16 FGWTE3 + 0b0000 NI + 0b0001 IMP +EndEnum +UnsignedEnum 15:12 HACDBS + 0b0000 NI + 0b0001 IMP +EndEnum +UnsignedEnum 11:8 ASID2 + 0b0000 NI + 0b0001 IMP +EndEnum +SignedEnum 7:4 EIESB + 0b0000 NI + 0b0001 ToEL3 + 0b0010 ToELx + 0b1111 ANY +EndEnum +Res0 3:0 +EndSysreg + Sysreg SCTLR_EL1 3 0 1 0 0 Field 63 TIDCP Field 62 SPINTMASK From patchwork Mon Nov 13 17:42:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454261 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 A5300C4332F for ; Mon, 13 Nov 2023 17:44:24 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7on6xhBXd/JxWKNmTouaS5mF4YqFRkCzzipKDDXCZuo=; b=duZvtahF0v8VOY X9PxAFOngSp2samcbTCqd1EB4GCOs+N9Z3kTratE3DDmuZW6w9pnNPsrGmkHtZrvGpp7bni5XbPFF Kk6l4WYv0b/oHLB6sxct02EBxILAj3BO9DHgDpAw2C2BUN4yqLp5Uijb4fBDerX/Q5lMJOZl4XRue QlgDU85mgOH2RLofOY50rFTiiwZphtuSZwsJPrXaUCOxmM5qTvvLD4uHgY+MRFB4BrqIzjtwvmIgQ fRHfR5V5YfxoXcQ1tbWvGdz24bUj3N2eG6+TNbwulPaQIsLakskSD+YrcExBb9G9d8faPDCjjkGJO 0347+xWG/2wouhD7mJ9g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2aye-00EQB6-0z; Mon, 13 Nov 2023 17:44:00 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayR-00EPzg-0a for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:49 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by ams.source.kernel.org (Postfix) with ESMTP id 8D9FDB80EE2; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8409C433CB; Mon, 13 Nov 2023 17:43:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897424; bh=/e5j7Zt5OXbydPm2a5Ik1iZwuYfegv0/VCYg4dYEwx0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Jn6AuRwNtA/yJbmPk2pzlzwijT9CrtcBp5izLXNG7znwNdB+vURHerhPTS+RPnWTU tasKXxwWwHCbKz9WKWy0VtZULT6JdJFgTMWFX6ryiHVVzV7TmQe0juBKOKp237EwCS pDvMqc1+jvl4vnkGgL/48xBUYYOdodbjnbdMNrkV6r291od65bnbvI5MRPP86+SB+k HCc7f738n5EYzHbQ/9caXR9UcNA9SOFYS3hbFXhODO36HVIvJemmeaJX8BO3FbGuFR Q91UR6Lf9oRKpvGLx3HXfiSCxND+LPRUlL2seRVaYuyWLRwYA/PrpOHjJBb2CzASNs e9aHsk3gHCNDw== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayM-00CkQ4-KG; Mon, 13 Nov 2023 17:43:42 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 04/12] arm64: cpufeature: Add ID_AA64MMFR4_EL1 handling Date: Mon, 13 Nov 2023 17:42:36 +0000 Message-Id: <20231113174244.3026520-5-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094347_485465_74D191DB X-CRM114-Status: GOOD ( 11.58 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add ID_AA64MMFR4_EL1 to the list of idregs the kernel knows about, and describe the E2H0 field. Signed-off-by: Marc Zyngier Reviewed-by: Oliver Upton --- arch/arm64/include/asm/cpu.h | 1 + arch/arm64/kernel/cpufeature.c | 7 +++++++ arch/arm64/kernel/cpuinfo.c | 1 + 3 files changed, 9 insertions(+) diff --git a/arch/arm64/include/asm/cpu.h b/arch/arm64/include/asm/cpu.h index f3034099fd95..d5ba6ec9f711 100644 --- a/arch/arm64/include/asm/cpu.h +++ b/arch/arm64/include/asm/cpu.h @@ -57,6 +57,7 @@ struct cpuinfo_arm64 { u64 reg_id_aa64mmfr1; u64 reg_id_aa64mmfr2; u64 reg_id_aa64mmfr3; + u64 reg_id_aa64mmfr4; u64 reg_id_aa64pfr0; u64 reg_id_aa64pfr1; u64 reg_id_aa64zfr0; diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 767a6f288755..41db7f993eef 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -438,6 +438,11 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr3[] = { ARM64_FTR_END, }; +static const struct arm64_ftr_bits ftr_id_aa64mmfr4[] = { + S_ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR4_EL1_E2H0_SHIFT, 4, 0), + ARM64_FTR_END, +}; + static const struct arm64_ftr_bits ftr_ctr[] = { ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_EXACT, 31, 1, 1), /* RES1 */ ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, CTR_EL0_DIC_SHIFT, 1, 1), @@ -755,6 +760,7 @@ static const struct __ftr_reg_entry { &id_aa64mmfr1_override), ARM64_FTR_REG(SYS_ID_AA64MMFR2_EL1, ftr_id_aa64mmfr2), ARM64_FTR_REG(SYS_ID_AA64MMFR3_EL1, ftr_id_aa64mmfr3), + ARM64_FTR_REG(SYS_ID_AA64MMFR4_EL1, ftr_id_aa64mmfr4), /* Op1 = 1, CRn = 0, CRm = 0 */ ARM64_FTR_REG(SYS_GMID_EL1, ftr_gmid), @@ -1079,6 +1085,7 @@ void __init init_cpu_features(struct cpuinfo_arm64 *info) init_cpu_ftr_reg(SYS_ID_AA64MMFR1_EL1, info->reg_id_aa64mmfr1); init_cpu_ftr_reg(SYS_ID_AA64MMFR2_EL1, info->reg_id_aa64mmfr2); init_cpu_ftr_reg(SYS_ID_AA64MMFR3_EL1, info->reg_id_aa64mmfr3); + init_cpu_ftr_reg(SYS_ID_AA64MMFR4_EL1, info->reg_id_aa64mmfr4); init_cpu_ftr_reg(SYS_ID_AA64PFR0_EL1, info->reg_id_aa64pfr0); init_cpu_ftr_reg(SYS_ID_AA64PFR1_EL1, info->reg_id_aa64pfr1); init_cpu_ftr_reg(SYS_ID_AA64ZFR0_EL1, info->reg_id_aa64zfr0); diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c index a257da7b56fe..a4205effca46 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -452,6 +452,7 @@ static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info) info->reg_id_aa64mmfr1 = read_cpuid(ID_AA64MMFR1_EL1); info->reg_id_aa64mmfr2 = read_cpuid(ID_AA64MMFR2_EL1); info->reg_id_aa64mmfr3 = read_cpuid(ID_AA64MMFR3_EL1); + info->reg_id_aa64mmfr4 = read_cpuid(ID_AA64MMFR4_EL1); info->reg_id_aa64pfr0 = read_cpuid(ID_AA64PFR0_EL1); info->reg_id_aa64pfr1 = read_cpuid(ID_AA64PFR1_EL1); info->reg_id_aa64zfr0 = read_cpuid(ID_AA64ZFR0_EL1); From patchwork Mon Nov 13 17:42:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454256 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 AE8ADC4332F for ; Mon, 13 Nov 2023 17:44:17 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=CrS6EF/b7wwjgXX1Yu6jS1xrb1MUN97+hAkQN+VeFOY=; b=pu7zHanPJriSUV cG9mB4ZyWclv05kh2BPqhnqdPMPNN+ERP12pqGr8KbBXw98Ly9AFkJMuNHXn6STsOjqusDgfzzR1y 31sZOkVaYpT4CKMn/MJ8jz5WpIjE+sCBWco67KiO02oMp+1Icp9LgmZz8/1/zWp9baQleQkA52qYm vHs91OHlnZBCcdfbHsedThUqnwvC5eHXxVbdL5X1E9Iz2WTyzyqrL8zkTNDc8/oZH81GdOYQ4Z65s JxUK4V3FUhnGvDsZKS7FZpwtJFt3oegqDBxQOfCfPPVZTeHGBlzP+8xqSyh8aXvi8knKRZRw7xhZ4 k1Q5qMAGe04cQN7sLw6g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2aya-00EQ7K-0z; Mon, 13 Nov 2023 17:43:56 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayP-00EPyy-32 for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:47 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 5EF7160FE5; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AC4E0C433CD; Mon, 13 Nov 2023 17:43:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897424; bh=lynjrJEz/BHjtI6s1T8jQIpyNGuzaukrA+2hTJuP2Mg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JRl3MXPU9/aZShzMizT5iDDZ/W4Qih2a7IP251CKZwMw615Sl33hn0ZfpRanjYv3Z Sx7Xx7eOmWZu9KVGkiur/uhBKdDy4ObWeBM9qyugQuBznq0EhzfY1CsQrANfJNfO5i E2ac7U/LQAlSdrdAUyBTSx2sOPgtK/J1VROLMZZtFpk9FF4jWWhbBVVRdQ8LihyEmt pMyPi2ECagAGKsTsI6xcu99UqtS/pDGbcIBS1TeVZmVXPhb6D5tkvVA/ixKfBzBymv OvKaKsXHjLgW3rKTqslBDWwT38nIJx3Hp8rQb52I8MNxi0BcPcow9sI9FcUVF+/DOG Sk6O3mYTxsW9w== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayM-00CkQ4-Qs; Mon, 13 Nov 2023 17:43:42 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 05/12] arm64: cpufeature: Detect E2H0 not being implemented Date: Mon, 13 Nov 2023 17:42:37 +0000 Message-Id: <20231113174244.3026520-6-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094346_022435_466A250E X-CRM114-Status: GOOD ( 11.87 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org FEAT_E2H0 is a new feature that indicates whether or not HCR_EL2.E2H can be set to 0. Amusingly, this feature is set to 0 when implemented, and otherwise negative. Add a new capability and detection infrastructure to detect the absence of FEAT_E2H0. Signed-off-by: Marc Zyngier Reviewed-by: Oliver Upton --- arch/arm64/kernel/cpufeature.c | 7 +++++++ arch/arm64/tools/cpucaps | 1 + 2 files changed, 8 insertions(+) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 41db7f993eef..e0d64e8b4851 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -2787,6 +2787,13 @@ static const struct arm64_cpu_capabilities arm64_features[] = { .matches = has_cpuid_feature, ARM64_CPUID_FIELDS(ID_AA64MMFR2_EL1, EVT, IMP) }, + { + .desc = "FEAT_E2H0 not implemented", + .capability = ARM64_HCR_E2H_RES1, + .type = ARM64_CPUCAP_SYSTEM_FEATURE, + .matches = has_cpuid_feature, + ARM64_CPUID_FIELDS_NEG(ID_AA64MMFR4_EL1, E2H0, NI) + }, {}, }; diff --git a/arch/arm64/tools/cpucaps b/arch/arm64/tools/cpucaps index b98c38288a9d..8866ea9bf995 100644 --- a/arch/arm64/tools/cpucaps +++ b/arch/arm64/tools/cpucaps @@ -52,6 +52,7 @@ HAS_TIDCP1 HAS_TLB_RANGE HAS_VIRT_HOST_EXTN HAS_WFXT +HCR_E2H_RES1 HW_DBM KVM_HVHE KVM_PROTECTED_MODE From patchwork Mon Nov 13 17:42:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454255 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 46584C4167B for ; Mon, 13 Nov 2023 17:44:11 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=E9zlsSdPmw+cgNOCwVnYoanzrq0pmmD2obiZzeOaDzQ=; b=d649UveXVCuqT9 sJEaoCs/kMK1jVqJqGW2PXHrQm1Auio+lJWFboUb7Rp4PD5n+f1nYC3A2ETXVdIHmxSI0SKEs4Y82 EHb/x7iMPYGd2mi/y/GQ81dpon9e/bGzwOPrZv9Pb5+akAz8kRe9luMqBjFm3zJeffsnbeQaoekmf WcOvtkNF5dfbFwIOVPHebMZFev66OfO/3Cb/eqNfvS98U3RgIurskbZ9xeZTN/NmX20IiiJ3xUzPA jzBMasAoTEd/jPbaRvRN7/7+GL5J8pWCITC+IH1zkSx9OvV2WFj0Ck5mVtNGMq3+AkCrzzvfz4eEQ drJIFA5YSuR7IdnBzkEg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayU-00EQ40-0M; Mon, 13 Nov 2023 17:43:50 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayP-00EPyx-2n for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:47 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 5707A60FE1; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 154CFC433C9; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897425; bh=FnZ4kYwF2iimP4yf8r3esEh3L5uELbTgTCOPS2apUzA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=caHPe0cKcuYSII5oXODMM9WHkTo24echQm5r7/micpY6XTdiQzi0vJZwPbrZ/94AR u1yq/olZmDsuju/RdsQR5sDxP47jnfYO+yYz2rg+wMji/EXsLuJfgLjLOi0mIk6xD1 HAGSfzrRZCjH6FS1Kf9ARNDM3FQKcjk8lVlvR7vqADyrPczvYg/LUYVJFuF/RFGWF5 kosFA8mepCPn0A12GfNnCt7fQXF39tY8SZne7o9SAqr9hwh6Y1oWkTb4cuKYfvjc73 tZiRzFjHFznJlVSZ8/dvuUA1H1Yqiy/Uq4FVlkrXcyCu+Kh+N6xLO+obthcNjmoOL4 GT97gduAEO1zg== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayN-00CkQ4-0W; Mon, 13 Nov 2023 17:43:43 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 06/12] arm64: cpufeature: Detect HCR_EL2.NV1 being RES0 Date: Mon, 13 Nov 2023 17:42:38 +0000 Message-Id: <20231113174244.3026520-7-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094345_948844_758E1708 X-CRM114-Status: GOOD ( 11.94 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org A variant of FEAT_E2H0 not being implemented exists in the form of HCR_EL2.E2H being RES1 *and* HCR_EL2.NV1 being RES0 (indicating that only VHE is supported on the host and nested guests). Add the necessary infrastructure for this new CPU capability. Signed-off-by: Marc Zyngier --- arch/arm64/kernel/cpufeature.c | 7 +++++++ arch/arm64/tools/cpucaps | 1 + 2 files changed, 8 insertions(+) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index e0d64e8b4851..a733c9a83f83 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -2794,6 +2794,13 @@ static const struct arm64_cpu_capabilities arm64_features[] = { .matches = has_cpuid_feature, ARM64_CPUID_FIELDS_NEG(ID_AA64MMFR4_EL1, E2H0, NI) }, + { + .desc = "FEAT_E2H0 not implemented (NV1 RES0)", + .capability = ARM64_HCR_NV1_RES0, + .type = ARM64_CPUCAP_SYSTEM_FEATURE, + .matches = has_cpuid_feature, + ARM64_CPUID_FIELDS_NEG(ID_AA64MMFR4_EL1, E2H0, NI_NV1) + }, {}, }; diff --git a/arch/arm64/tools/cpucaps b/arch/arm64/tools/cpucaps index 8866ea9bf995..fea24bcd6252 100644 --- a/arch/arm64/tools/cpucaps +++ b/arch/arm64/tools/cpucaps @@ -53,6 +53,7 @@ HAS_TLB_RANGE HAS_VIRT_HOST_EXTN HAS_WFXT HCR_E2H_RES1 +HCR_NV1_RES0 HW_DBM KVM_HVHE KVM_PROTECTED_MODE From patchwork Mon Nov 13 17:42:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454265 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 CC18DC4332F for ; Mon, 13 Nov 2023 17:44:34 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Xh31wkVRT6zz2IWCACRaeThPp1BBzeioMxaAx2I8sLI=; b=2454ZYIAGdb4KZ 0ZnbGg9Lk8M77WiSZv5KmPcLahqd9EBCUoTjeGqXG8irLPzlAtivolLYmg2glf6KXV6DFG8ZpNRo0 ZAmyr3uyJRNV/6uK5dQAGtLqXIvqwlZleCBS1KjlrL9g7rYWnBguqALOSVkm/Kn8TkpEXaPbkZPTc rd6MEhTJMGO8lzilgWfxm8cCSvM2o8eDdUiR/ZJ8E30vWu5YYCzhKN0bD2aKCktiXtJwF5alAgFwj aIAYxJOUq615ZhvIAsxPAMwsrtrCWoZr/R2I7wMUdALsaJUEg5VuY+kY5rR4n/f1v+GTXPLqL1OEk KGODLCpHsaPUfMhk5Vog==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayc-00EQ8n-0Z; Mon, 13 Nov 2023 17:43:58 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayR-00EQ03-1f for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:49 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id E068ECE1784; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 155D5C433D9; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897425; bh=mDtW4Z8A35acA1VEGJf/ya9n7T6SEZP2HzCfuJMDHcI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pmRBNJGaEz3mol0snFfXEoLkMTBJswLqCDKrxZtBJUiEv2rACqT8qmOEN8mN1i1ED DYVTpxNgudYABtA1xDC4lP8HiPRqlOykBnvANzBqPhn/7UtJtPRsqSJpaIHT0CQXs7 BV8FCmBH4TVkGc/dDbNRC2JtnVVJAEZvT40Y+4h/vBb9Uptcj0bmd7jV06cYx8yauE sMiraiHjkpkyjWO3Bh0JvjnD9la3AAILFGTrb3y1Xe4OaIgzPmguNoTkmHYuYSIjQt YMOHragIFmf7ZkJ25PN+nAvut5WLGXqnBV69U8bEU9quJO4ZrRZfOceVOip7G+9U8o ITHrFmZBmeB1A== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayN-00CkQ4-68; Mon, 13 Nov 2023 17:43:43 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 07/12] arm64: Treat HCR_EL2.E2H as RES1 when ID_AA64MMFR4_EL1.E2H0 is non-zero Date: Mon, 13 Nov 2023 17:42:39 +0000 Message-Id: <20231113174244.3026520-8-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094347_748438_FD0D0FB8 X-CRM114-Status: GOOD ( 12.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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org For CPUs that have ID_AA64MMFR4_EL1.E2H0 as non-zero, it is important to avoid the boot path that sets HCR_EL2.E2H=0. Fortunately, we already have this path to cope with fruity CPUs. Tweak init_el2 to look at ID_AA64MMFR4_EL1.E2H0 first. Signed-off-by: Marc Zyngier --- arch/arm64/kernel/head.S | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S index 7b236994f0e1..5853540f7809 100644 --- a/arch/arm64/kernel/head.S +++ b/arch/arm64/kernel/head.S @@ -584,25 +584,34 @@ SYM_INNER_LABEL(init_el2, SYM_L_LOCAL) mov_q x1, INIT_SCTLR_EL1_MMU_OFF /* - * Fruity CPUs seem to have HCR_EL2.E2H set to RES1, - * making it impossible to start in nVHE mode. Is that - * compliant with the architecture? Absolutely not! + * Compliant CPUs advertise their VHE-onlyness with + * ID_AA64MMFR4_EL1.E2H0=0b111x. HCR_EL2.E2H can be + * RES1 in that case. + * + * Fruity CPUs seem to have HCR_EL2.E2H set to RES1, but + * don't advertise it (they predate this relaxation). */ + mrs_s x0, SYS_ID_AA64MMFR4_EL1 + ubfx x0, x0, #ID_AA64MMFR4_EL1_E2H0_SHIFT, #ID_AA64MMFR4_EL1_E2H0_WIDTH + and x0, x0, #0b1110 + cmp x0, #0b1110 + b.eq 1f + mrs x0, hcr_el2 and x0, x0, #HCR_E2H - cbz x0, 1f - + cbz x0, 2f +1: /* Set a sane SCTLR_EL1, the VHE way */ pre_disable_mmu_workaround msr_s SYS_SCTLR_EL12, x1 mov x2, #BOOT_CPU_FLAG_E2H - b 2f + b 3f -1: +2: pre_disable_mmu_workaround msr sctlr_el1, x1 mov x2, xzr -2: +3: __init_el2_nvhe_prepare_eret mov w0, #BOOT_CPU_MODE_EL2 From patchwork Mon Nov 13 17:42:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454263 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 78AFBC4332F for ; Mon, 13 Nov 2023 17:44:27 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Jde2eLtrJMeAtPtyWmJmGOwBosVUosI7rz0t7cYPGjM=; b=3wYpEg9XGtCIhL d8yElpjKtxowlteoqzy8WZU7pjfjANHdZ2W7DSeBZnWY0eRk8fgQr0crdPyCgn9B1aj9Uem2FnGME lmDrNHYiBAjIzL2bFHdAmU2x6qQStufNhZksMiVAL5MjjRxzFIkG6aM3pg1odMD4TMJMn9T+4oBuZ hRrEZqOpYykrEjGoUnL7sWGZCGnVAnSYOelERcz/SMXwOUdz81rRF0aXMX+IZyfflbKJu1D7qJqeS e7agbFv2IYZH/6i/wf5e3aV45Mn5YulDLaYyZC9jMIsp4grt8bebjrXayVX9Scu0s5AiBKSWC+zIk 4we4I+pC0d/cHsA/aPYg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayd-00EQAK-1u; Mon, 13 Nov 2023 17:43:59 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayR-00EQ0c-0i for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:49 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 937E560FF8; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5E17AC433C8; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897425; bh=jIO0CU0paprYgdbaFMB0mZ4jI45fnzC+Q+mtMOUg+5s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TS+DQkdv/ofUKPePTDx9VcJETIqnzMkbXWrJm9t0F73+JrJcWkSAvKFZXjPkjZZJ8 jUCC2wbiMJPYfGA/b2Lc5DKpVy1TzdJtEQmEjp8doIMP3mt2DdKCXIWNDJlhBA8eSY VONJzgp/rG/V9BdozdpT2jX/d30eHdwtKnI7KB+Weq72ftQ8KZLShi8e6QEAXPiFPv zKwIqmNFJepKIjsaJrp4XJMUNCTJJw9NuS4SPPHmQ1phwdFITsJEI5cBaKMXQDDcr8 2ITQ1etj27K8oRbyP5mUlkVfaXrqdhXJbe3KriSFy6xLivGG61qpTpKKV0ncy6PYKg YWFyI6xOvHfVQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayN-00CkQ4-CC; Mon, 13 Nov 2023 17:43:43 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 08/12] arm64: Add override for ID_AA64MMFR4_EL1.E2H0 Date: Mon, 13 Nov 2023 17:42:40 +0000 Message-Id: <20231113174244.3026520-9-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094347_340304_A0FBC6DE X-CRM114-Status: GOOD ( 13.01 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Allow ID_AA64MMFR4_EL1.E2H0 to be overriden from the command-line. This will subsequently be of use for non-compliant CPUs. Signed-off-by: Marc Zyngier --- arch/arm64/include/asm/cpufeature.h | 1 + arch/arm64/kernel/cpufeature.c | 4 +++- arch/arm64/kernel/idreg-override.c | 10 ++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h index 5f3f62efebd5..d465db251939 100644 --- a/arch/arm64/include/asm/cpufeature.h +++ b/arch/arm64/include/asm/cpufeature.h @@ -901,6 +901,7 @@ s64 arm64_ftr_safe_value(const struct arm64_ftr_bits *ftrp, s64 new, s64 cur); struct arm64_ftr_reg *get_arm64_ftr_reg(u32 sys_id); extern struct arm64_ftr_override id_aa64mmfr1_override; +extern struct arm64_ftr_override id_aa64mmfr4_override; extern struct arm64_ftr_override id_aa64pfr0_override; extern struct arm64_ftr_override id_aa64pfr1_override; extern struct arm64_ftr_override id_aa64zfr0_override; diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index a733c9a83f83..bc1880e6a2e6 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -692,6 +692,7 @@ static const struct arm64_ftr_bits ftr_raz[] = { __ARM64_FTR_REG_OVERRIDE(#id, id, table, &no_override) struct arm64_ftr_override __ro_after_init id_aa64mmfr1_override; +struct arm64_ftr_override __ro_after_init id_aa64mmfr4_override; struct arm64_ftr_override __ro_after_init id_aa64pfr0_override; struct arm64_ftr_override __ro_after_init id_aa64pfr1_override; struct arm64_ftr_override __ro_after_init id_aa64zfr0_override; @@ -760,7 +761,8 @@ static const struct __ftr_reg_entry { &id_aa64mmfr1_override), ARM64_FTR_REG(SYS_ID_AA64MMFR2_EL1, ftr_id_aa64mmfr2), ARM64_FTR_REG(SYS_ID_AA64MMFR3_EL1, ftr_id_aa64mmfr3), - ARM64_FTR_REG(SYS_ID_AA64MMFR4_EL1, ftr_id_aa64mmfr4), + ARM64_FTR_REG_OVERRIDE(SYS_ID_AA64MMFR4_EL1, ftr_id_aa64mmfr4, + &id_aa64mmfr4_override), /* Op1 = 1, CRn = 0, CRm = 0 */ ARM64_FTR_REG(SYS_GMID_EL1, ftr_gmid), diff --git a/arch/arm64/kernel/idreg-override.c b/arch/arm64/kernel/idreg-override.c index 3addc09f8746..7b5b9dc20e6b 100644 --- a/arch/arm64/kernel/idreg-override.c +++ b/arch/arm64/kernel/idreg-override.c @@ -55,6 +55,15 @@ static const struct ftr_set_desc mmfr1 __initconst = { }, }; +static const struct ftr_set_desc mmfr4 __initconst = { + .name = "id_aa64mmfr4", + .override = &id_aa64mmfr4_override, + .fields = { + FIELD("e2h0", ID_AA64MMFR4_EL1_E2H0_SHIFT, NULL ), + {} + }, +}; + static bool __init pfr0_sve_filter(u64 val) { /* @@ -161,6 +170,7 @@ static const struct ftr_set_desc sw_features __initconst = { static const struct ftr_set_desc * const regs[] __initconst = { &mmfr1, + &mmfr4, &pfr0, &pfr1, &isar1, From patchwork Mon Nov 13 17:42:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454259 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 731D2C4167D for ; Mon, 13 Nov 2023 17:44:23 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=erdP9KX4lImTvLUKRiwiyfwoU3Crj94xUB4O+oKX45o=; b=VFNPHWWm5HrL44 LghT/S0v6rdvQ8pSrSOgqVx8osS0rs4eGN2BQv6qvENh1eYZsHhAWIsMUMkqUYSXQX2z0OvGs32lk R2TzC1Hbg5AAe9R+WxXJYGXz10igF9ArQNcJNpvNgbiKkidPPmkbMy9bYVJcAzpZ2xj07p7i7BsjD +oKXWMTVi1/lgeFTcABTEKeHhU5TVathGLMFnL67th/zQJSDj0rwUHN7i/celugF1fDurcKLMG6NU 8PSVnGpZhWYg3qnzSzQODX0ajqeAh7bhH73wyIvTdYj8H65MiAAJvQUgZeOeMOQyrRz/WqgAXxxca tfXZ3R/fahKBMKzZ2z2Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2aya-00EQ7i-30; Mon, 13 Nov 2023 17:43:56 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayQ-00EPzu-1c for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:48 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 8D28860FF4; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 57605C43391; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897425; bh=J11CtFVHtqBhTKJa3YGjPeX49bSAPr/MKFFq1o+SJc4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dUBzUWj6PNHQLepm3Kj8ZrAfsYX9fHaT6fVjmIQB0wmAhnrfEgwRK8pHIHreX4ZDM rI+QgmvKCL/5cpu8ghGYpv8RguiqxsG00StCNiZVUfq33T0aGEGPXqxq763q6UP5bp sIuPVdFZA7N8wcAsgY61+9H92qWGZu3xHxYjRLIUlz6BKaEqNrHda9jR6O7SD178Mz ZLY+E4CqH+qUlj8J2+EoT1K4UTutxn18XEQWwVvrAGwhj+rVA5a0d3oZOU9R3ls+92 VHKZTNkyEg6y8jEbShQIAqv304VleFqKvMu0y5wPBDVI2C9fX7agEGpzqONxz5M4MP ZPoysUTfYxhlQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayN-00CkQ4-I4; Mon, 13 Nov 2023 17:43:43 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 09/12] arm64: Add MIDR-based override infrastructure Date: Mon, 13 Nov 2023 17:42:41 +0000 Message-Id: <20231113174244.3026520-10-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094346_594528_CC2131E1 X-CRM114-Status: GOOD ( 12.84 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org In order to be able to use the override infrastructure to "fix" CPUs that have deviated from teh architecture spec, add a new pile of hacks on top of the existing one, allowing a feature to be overriden based on matching a MIDR list. Signed-off-by: Marc Zyngier --- arch/arm64/kernel/idreg-override.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/arch/arm64/kernel/idreg-override.c b/arch/arm64/kernel/idreg-override.c index 7b5b9dc20e6b..57c145bf50b7 100644 --- a/arch/arm64/kernel/idreg-override.c +++ b/arch/arm64/kernel/idreg-override.c @@ -321,6 +321,23 @@ static __init void parse_cmdline(void) __parse_cmdline(prop, true); } +struct midr_override_data { + const char feature[FTR_ALIAS_OPTION_LEN]; + const struct midr_range ranges[]; +}; + +static const struct midr_override_data * const midr_ovr_data[] __initconst = { +}; + +static void __init apply_midr_overrides(void) +{ + const u64 midr = read_cpuid_id(); + + for (int i = 0; i < ARRAY_SIZE(midr_ovr_data); i++) + if (is_midr_in_range_list(midr, midr_ovr_data[i]->ranges)) + __parse_cmdline(midr_ovr_data[i]->feature, false); +} + /* Keep checkers quiet */ void init_feature_override(u64 boot_status); @@ -337,6 +354,8 @@ asmlinkage void __init init_feature_override(u64 boot_status) __boot_status = boot_status; + apply_midr_overrides(); + parse_cmdline(); for (i = 0; i < ARRAY_SIZE(regs); i++) { From patchwork Mon Nov 13 17:42:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454258 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 08426C4332F for ; Mon, 13 Nov 2023 17:44:22 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+y/mrrIV3IUSxEqJn/sha0E4lYXpsPq/Opa7SYqOuy0=; b=e64uv+ECPZrNX2 KUqIrsFcJZOsf6myHC1RtYM2YGcbPCVro5joi7O7W3KKPpTBkbWkOz4t+cqOhEtxOfwUIHfk4D47o DGI0sq2LGYgWvzcoRvMKgSR0Pt9LTggKQVlYC/baVBqDJ9t0D2HxI4+RPcEfztxP9hkcIhuxS7eRD J8Yn6QiRuykZE43EtEuMQuS5GMMKEMYtQO8GFIMHKx11oCoCirhHweJxnRgi8SUSq8WNGmxv6uBRd +HWfULFoqVui2LHExbbkwOlTIhAA5UwCHN8mEfwVx66DCkdoNDsgHzZ543BwBPjZKV4rpIVKrzfCO BYTa9RVs5HpZuI2GIlKg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayc-00EQ9W-2g; Mon, 13 Nov 2023 17:43:58 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayR-00EQ0b-0g for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:49 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id CDCC060FDB; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92D58C433CD; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897425; bh=MtPSu5LUzrRw8/ng+e1jkKKFUThsGpUNJoMyASnhWfA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SXyEW/bF2OqunvYtWjlnOoR6s9h+kG37I1JUPKYWU7NkLWlI41efy9eCs9hkZNAjx XP6CtFf96laIT6U1xN5y2KsaFDzcOiA9LYerkYTMjVgbZImSW9YAS+dWyKQ1lA8ao/ eOZgmmNyR4NwligNEiNIWQxTTSXVV/gj5X0MftO9v8RFkbxQGnzhbomNIRQ+O+vr/e /PmysSJaTJINXC7bX9qE3eHb+Kg4m7WKzQVvj3wTTp+eQYkrCtVxM7EPpTwW2nSOy7 M02PZuq1nhXtl/9SlbPmiN1uEQsqthoMzY7RNOgIS+NTKT2nQ5XY0QthhMnhwepEvm pmj5jpngHEsQw== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayN-00CkQ4-NR; Mon, 13 Nov 2023 17:43:43 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 10/12] arm64: Add MIDR-based overrides for ID_AA64MMFR4_EL1.E2H0 Date: Mon, 13 Nov 2023 17:42:42 +0000 Message-Id: <20231113174244.3026520-11-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094347_329869_35F7CE3B X-CRM114-Status: GOOD ( 11.48 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org None the Apple M1/M2 CPUs effectively implement E2H=0, and M2 doesn't correctly implement NV1=1 (the EL2 S1 PTW seems to barf on the nVHE format). Override ID_AA64MMFR4_EL1.E2H0 for these CPUs to reflect what they actually support. Signed-off-by: Marc Zyngier --- arch/arm64/kernel/idreg-override.c | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/arch/arm64/kernel/idreg-override.c b/arch/arm64/kernel/idreg-override.c index 57c145bf50b7..f7be459e5ff3 100644 --- a/arch/arm64/kernel/idreg-override.c +++ b/arch/arm64/kernel/idreg-override.c @@ -326,7 +326,43 @@ struct midr_override_data { const struct midr_range ranges[]; }; +static const struct midr_override_data e2h0_ni __initconst = { + /* + * These CPUs predate FEAT_E2H0, but have HCR_EL2.E2H RES1 + * anyway. + */ + .feature = "id_aa64mmfr4.e2h0=0xf", + .ranges = { + MIDR_ALL_VERSIONS(MIDR_APPLE_M1_ICESTORM), + MIDR_ALL_VERSIONS(MIDR_APPLE_M1_FIRESTORM), + MIDR_ALL_VERSIONS(MIDR_APPLE_M1_ICESTORM_PRO), + MIDR_ALL_VERSIONS(MIDR_APPLE_M1_FIRESTORM_PRO), + MIDR_ALL_VERSIONS(MIDR_APPLE_M1_ICESTORM_MAX), + MIDR_ALL_VERSIONS(MIDR_APPLE_M1_FIRESTORM_MAX), + {} + }, +}; + +static const struct midr_override_data e2h0_nv1_ni __initconst = { + /* + * These CPUs predate FEAT_E2H0, but have both HCR_EL2.E2H + * RES1 and a non-functional HCR_EL2.NV1. + */ + .feature = "id_aa64mmfr4.e2h0=0xe", + .ranges = { + MIDR_ALL_VERSIONS(MIDR_APPLE_M2_BLIZZARD), + MIDR_ALL_VERSIONS(MIDR_APPLE_M2_AVALANCHE), + MIDR_ALL_VERSIONS(MIDR_APPLE_M2_BLIZZARD_PRO), + MIDR_ALL_VERSIONS(MIDR_APPLE_M2_AVALANCHE_PRO), + MIDR_ALL_VERSIONS(MIDR_APPLE_M2_BLIZZARD_MAX), + MIDR_ALL_VERSIONS(MIDR_APPLE_M2_AVALANCHE_MAX), + {} + }, +}; + static const struct midr_override_data * const midr_ovr_data[] __initconst = { + &e2h0_ni, + &e2h0_nv1_ni, }; static void __init apply_midr_overrides(void) From patchwork Mon Nov 13 17:42:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454266 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 77FBBC4332F for ; Mon, 13 Nov 2023 17:44:42 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xm00nb+ThAQBp9FDQgZuIFZSrawJ1MU88fOomdsKEzA=; b=Rv+e3wsI1E8la4 G2Fsk7GW7tJedRSDL5+1HcZz4x7wEp1ri7uP6syUzx7mP51MvdfBRi8chjsTCCY56SnGeehUIicxm Ohvf6od7lgrWo6CMdggJiJyowRGsSyQVK+6L3vxW6zW0UW7KaaDXO3v0uTKIUCrn56q4A3FwxVOAI Sc45LU/XhVwel3C11zLTse3VvWdvH3R63VzVHXnLVSX2l2ItmDd0oVwIODBNznTa2lhYfeNxeJjTQ 4MaHQP+U2FpkDOm0/wya4KxrzxAOY4SutCL2bJmffkPmVQk/XwyDTAA3/h5/rI4LxukDOMo7fBSmW DxyxbjFPtHys/SZmgB5A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayf-00EQBh-0G; Mon, 13 Nov 2023 17:44:01 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayR-00EQ1d-3D for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:51 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 1F5F460FBA; Mon, 13 Nov 2023 17:43:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1B74C433C7; Mon, 13 Nov 2023 17:43:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897425; bh=iYlqs1RSget5iyc3jLMZO8ZKcFfCoTNJB6oiIZEmnlk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sUYdit1b4tpTDNnPVOi4P7SB5TkMxqhC3p4iCoEeJ7W3CYufhLU5PqpaKKj/mCJCX XJ8F766xc/w72AJLh16CHjRzA3TCF3hEhgDCeU88/muLlQegOCBmwDyT02P9ocDwTe 3Bjhk3jugVM0CM6c37U0JMHFMrrgDSV9K//9h1ZZ68k5qj6N+5ez/q8KA8K//OWf62 h52Y7pe72gqZGMmA0sfem26teO/biGQEYUsNvTwM2GnWwyM22zgOXhSjKZY6RmD22w k8nAvVxgf0lSqyADZ8vDhiVN6LOecaapP5ZoxthrbJYpEmRxg2ORpay4LV6t4W5xjy aYZKMCUXYbXbQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayN-00CkQ4-Ue; Mon, 13 Nov 2023 17:43:44 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 11/12] KVM: arm64: Expose ID_AA64MMFR4_EL1 to guests Date: Mon, 13 Nov 2023 17:42:43 +0000 Message-Id: <20231113174244.3026520-12-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094348_088168_EF2EFED4 X-CRM114-Status: GOOD ( 11.84 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org We can now expose ID_AA64MMFR4_EL1 to guests, and let NV guests understand that they cannot really switch HCR_EL2.E2H to 0 on some platforms. Signed-off-by: Marc Zyngier --- arch/arm64/kvm/nested.c | 4 ++++ arch/arm64/kvm/sys_regs.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/nested.c b/arch/arm64/kvm/nested.c index 042695a210ce..3885f1c93979 100644 --- a/arch/arm64/kvm/nested.c +++ b/arch/arm64/kvm/nested.c @@ -137,6 +137,10 @@ void access_nested_id_reg(struct kvm_vcpu *v, struct sys_reg_params *p, val |= FIELD_PREP(NV_FTR(MMFR2, TTL), 0b0001); break; + case SYS_ID_AA64MMFR4_EL1: + val &= NV_FTR(MMFR4, E2H0); + break; + case SYS_ID_AA64DFR0_EL1: /* Only limited support for PMU, Debug, BPs and WPs */ val &= (NV_FTR(DFR0, PMUVer) | diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index 4735e1b37fb3..4461eafca16c 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -2196,7 +2196,7 @@ static const struct sys_reg_desc sys_reg_descs[] = { ID_AA64MMFR2_EL1_NV | ID_AA64MMFR2_EL1_CCIDX)), ID_SANITISED(ID_AA64MMFR3_EL1), - ID_UNALLOCATED(7,4), + ID_SANITISED(ID_AA64MMFR4_EL1), ID_UNALLOCATED(7,5), ID_UNALLOCATED(7,6), ID_UNALLOCATED(7,7), From patchwork Mon Nov 13 17:42:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13454262 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 2CB27C07524 for ; Mon, 13 Nov 2023 17:44:25 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=IPKiMMI+MeicC18k4QdUjrKv2D60OB0CJ1bgKfsmAHE=; b=FCGXGu/6bx17Og hk/vNSP9kAvYHhW4lsuXNR1qnIJp6fR+bX1TSh1KmumrAlznkUj9S4lEcoN7SsM43qeozraTYNP35 FEUytLQVQhgUR4Ndq3USppyjIzmMmb7L+b4OzzvyWZqpT8bb4izBG0Pvv6K5YlDJ6rOpqSpS6x5z+ dNU+R14GGjZEP16FavLR4OoXd6Ca3A4xcOzNARkFA53DoADqydr1NUbp3iAmczCBJzcj7q+LXHsw/ DcIoEkL/C1RvJyDNy/H99BimgNpU3cTfjglxWnA3wQ4MqfWJzjWDOnen0EHeDNY0BbnRQ2eQxbnVp hrIUEYzTORE7d0OjwrGw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayf-00EQCb-2t; Mon, 13 Nov 2023 17:44:01 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r2ayS-00EQ1e-00 for linux-arm-kernel@lists.infradead.org; Mon, 13 Nov 2023 17:43:51 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 3BC3D60FE8; Mon, 13 Nov 2023 17:43:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05FB7C433CA; Mon, 13 Nov 2023 17:43:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1699897426; bh=YK5UImJSrGSi8KYQrtWmynZrXmOLygrZNTbndq4khME=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DKxvXSn2W+tDlmu79pBfOLAttmuvcfKr1JoIXLN/olN+ksLXYsErD+UmfFfcJZVoi O/qrKgSVEbc3c9mZC1p+LOVcQgcqrV0bUG/F4sALRAu0loc7MCzP3yDStWcfWL2SYx cEwKzcK0WoKZIb5iarpviOG6cD7FRW7x5aXxnr4Ty5TbfFdZFaOaAN1IIiXlpeDraQ XVyG66JIVlcaa0TO1kCmi8iBRJPLn05L06pHa4v9zdl1KC/0FlexMj0HcuPVBuFekt et6jkMR9Xy+TQ0pLd7QK6cs0lMb+j7SmpdQ8Zj6IjYAdo+7QTNrN+I8LZc17wIeTgh oC2xsFuv7BfCA== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1r2ayO-00CkQ4-4K; Mon, 13 Nov 2023 17:43:44 +0000 From: Marc Zyngier To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Cc: Catalin Marinas , Will Deacon , Mark Rutland , James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu Subject: [PATCH 12/12] KVM: arm64: Force guest's HCR_EL2.E2H RES1 when NV1 is not implemented Date: Mon, 13 Nov 2023 17:42:44 +0000 Message-Id: <20231113174244.3026520-13-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231113174244.3026520-1-maz@kernel.org> References: <20231113174244.3026520-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, catalin.marinas@arm.com, will@kernel.org, mark.rutland@arm.com, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231113_094348_153353_E05D76F2 X-CRM114-Status: GOOD ( 12.62 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org If NV1 isn't supported on a system, make sure we always evaluate the guest's HCR_EL2.E2H as RES1, irrespective of what the guest may have written there. Signed-off-by: Marc Zyngier --- arch/arm64/include/asm/kvm_emulate.h | 3 ++- arch/arm64/kvm/sys_regs.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h index 78a550537b67..7b10a44189d0 100644 --- a/arch/arm64/include/asm/kvm_emulate.h +++ b/arch/arm64/include/asm/kvm_emulate.h @@ -213,7 +213,8 @@ static inline bool vcpu_is_el2(const struct kvm_vcpu *vcpu) static inline bool __vcpu_el2_e2h_is_set(const struct kvm_cpu_context *ctxt) { - return ctxt_sys_reg(ctxt, HCR_EL2) & HCR_E2H; + return (cpus_have_final_cap(ARM64_HCR_NV1_RES0) || + (ctxt_sys_reg(ctxt, HCR_EL2) & HCR_E2H)); } static inline bool vcpu_el2_e2h_is_set(const struct kvm_vcpu *vcpu) diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index 4461eafca16c..a2769e17411c 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -2021,6 +2021,16 @@ static bool access_spsr(struct kvm_vcpu *vcpu, return true; } +static u64 reset_hcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) +{ + u64 val = r->val; + + if (cpus_have_final_cap(ARM64_HCR_NV1_RES0)) + val |= HCR_E2H; + + return __vcpu_sys_reg(vcpu, r->reg) = val; +} + /* * Architected system registers. * Important: Must be sorted ascending by Op0, Op1, CRn, CRm, Op2 @@ -2512,7 +2522,7 @@ static const struct sys_reg_desc sys_reg_descs[] = { EL2_REG(VMPIDR_EL2, access_rw, reset_unknown, 0), EL2_REG(SCTLR_EL2, access_rw, reset_val, SCTLR_EL2_RES1), EL2_REG(ACTLR_EL2, access_rw, reset_val, 0), - EL2_REG(HCR_EL2, access_rw, reset_val, 0), + EL2_REG(HCR_EL2, access_rw, reset_hcr, 0), EL2_REG(MDCR_EL2, access_rw, reset_val, 0), EL2_REG(CPTR_EL2, access_rw, reset_val, CPTR_NVHE_EL2_RES1), EL2_REG(HSTR_EL2, access_rw, reset_val, 0),