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 528BEE63FFB for ; Sat, 4 Apr 2026 21:08:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type:MIME-Version: References:In-Reply-To:Subject:Cc:To:From:Message-ID:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=EZQZTyI56J/MOaXDomD/sCn41jqHloMPn0rZlVRKeX0=; b=DPiw4bS1uyGepLIUqHQY/OUPZj Jo3tYBQUNeoXnd/gyGUgxJXpvpdMEA8K/yGSy1KIIBMJk8Ct9Jz0xiyixcJD108psyhqFf94JMky5 uZhYFIIpg9ozewzVWOeMqHg+1168b6QTkA1dkAI5ZNO/fNWfuoT4ZYMJqRAwZm/IDUunhDxV3/2xb ALgceE2T3SF5pcxP2WN0R75Pba8Vfbb2sCDdLqnwUcgA5zpsau6uOEyk0OD44Uu5vf1dkH6OL9Ntu BA0v2Wg0IV2qsy8iMWMebKozp5dV7gdgp6zaNc+AmXpZ9ARfFMTeqaX3d22GbS7urC3H0X7aTs4iV efEcLmCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1w98Dr-00000003kP9-1HYD; Sat, 04 Apr 2026 21:08:03 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1w98Dp-00000003kOv-1Weo for linux-arm-kernel@lists.infradead.org; Sat, 04 Apr 2026 21:08:01 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 2D60060120; Sat, 4 Apr 2026 21:08:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CA414C19421; Sat, 4 Apr 2026 21:07:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775336879; bh=BiIX1lzxXdrzlCJQEBMZ1l1BGbfTuSVkY81BhOXf3lk=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Oub0fn0xIZldTYcqRSlDOTMQjzbFiyZ2FBHAXnqwpUqD2yw3szONKSE+emJv4DD1C UmwWZmDq7uBINn/TjYM1XtY6FndW9aRBAXl2/98FyCpwlyg62yDxzdVdH8r8iOkxxm pvy837G3CWsTrBt8bahp8UgRgUo64OkQMiL6ClDwGqC4am4TzC6NmFZbjcjYFvizqY pWRqRLiVnuird2FXpJJGYOMRRBKMyRK6peLps17CRMJsJ5i5B3xB2UnF6H9IWF0kA9 rZhQgk6UKVI5fcmEwSIfRGCNuOUMP4es6s5rV9TwC/3m3u9fr3FYENSOelyBzO7TQW hNf1sd9y0aGyg== Received: from cu01147a.smtpx.saremail.com ([195.16.150.122] helo=lobster-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w98Dl-00000008wZY-1oge; Sat, 04 Apr 2026 21:07:57 +0000 Date: Sat, 04 Apr 2026 22:07:51 +0100 Message-ID: <874ilqcu3c.wl-maz@kernel.org> From: Marc Zyngier To: Nathan Chancellor Cc: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Joey Gouly , Suzuki K Poulose , Oliver Upton , Zenghui Yu , Sascha Bischoff , Will Deacon , Catalin Marinas Subject: Re: [PATCH] KVM: arm64: Advertise ID_AA64PFR2_EL1.GCIE In-Reply-To: <20260404181330.GA3987102@ax162> References: <20260401170017.369529-1-maz@kernel.org> <20260404181330.GA3987102@ax162> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/30.1 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 195.16.150.122 X-SA-Exim-Rcpt-To: nathan@kernel.org, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, joey.gouly@arm.com, suzuki.poulose@arm.com, oupton@kernel.org, yuzenghui@huawei.com, sascha.bischoff@arm.com, will@kernel.org, catalin.marinas@arm.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false 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 On Sat, 04 Apr 2026 19:13:30 +0100, Nathan Chancellor wrote: > > Hi Marc, > > On Wed, Apr 01, 2026 at 06:00:17PM +0100, Marc Zyngier wrote: > > As we are missing ID_AA64PFR2_EL1.GCIE from the kernel feature set, > > userspace cannot write ID_AA64PFR2_EL1 with GCIE set, even if we are > > on a GICv5 host. > > > > Add the required field description. > > > > Signed-off-by: Marc Zyngier > > --- > > arch/arm64/kernel/cpufeature.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c > > index 32c2dbcc0c641..5bca6e064ca72 100644 > > --- a/arch/arm64/kernel/cpufeature.c > > +++ b/arch/arm64/kernel/cpufeature.c > > @@ -327,6 +327,7 @@ static const struct arm64_ftr_bits ftr_id_aa64pfr2[] = { > > ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_FPMR_SHIFT, 4, 0), > > ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_MTEFAR_SHIFT, 4, ID_AA64PFR2_EL1_MTEFAR_NI), > > ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_MTESTOREONLY_SHIFT, 4, ID_AA64PFR2_EL1_MTESTOREONLY_NI), > > + ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_GCIE_SHIFT, 4, ID_AA64PFR2_EL1_GCIE_NI), > > ARM64_FTR_END, > > }; > > > > -- > > 2.47.3 > > > > After this change in -next as commit 899ff451fcee ("KVM: arm64: > Advertise ID_AA64PFR2_EL1.GCIE"), I am seeing a warning on boot in my > simple QEMU boot tests. > > $ make -skj"$(nproc)" ARCH=arm64 CROSS_COMPILE=aarch64-linux- mrproper virtconfig Image.gz > > $ curl -LSs https://github.com/ClangBuiltLinux/boot-utils/releases/download/20241120-044434/arm64-rootfs.cpio.zst | zstd -d >rootfs.cpio > > $ qemu-system-aarch64 \ > -display none \ > -nodefaults \ > -machine virt,gic-version=max \ > -append 'console=ttyAMA0 earlycon' \ > -kernel arch/arm64/boot/Image.gz \ > -initrd rootfs.cpio \ > -cpu host \ > -enable-kvm \ > -m 1G \ > -smp 8 \ > -serial mon:stdio > [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x413fd0c1] > [ 0.000000] Linux version 7.0.0-rc4-00058-g899ff451fcee (nathan@aadp) (aarch64-linux-gcc (GCC) 15.2.0, GNU ld (GNU Binutils) 2.45) #1 SMP PREEMPT Sat Apr 4 06:55:05 MST 2026 > ... > [ 0.000000] ------------[ cut here ]------------ > [ 0.000000] SYS_ID_AA64PFR2_EL1 has feature overlap at shift 12 > [ 0.000000] WARNING: arch/arm64/kernel/cpufeature.c:986 at init_cpu_features+0xbc/0x344, CPU#0: swapper/0 > [ 0.000000] Modules linked in: > [ 0.000000] CPU: 0 UID: 0 PID: 0 Comm: swapper Not tainted 7.0.0-rc4-00058-g899ff451fcee #1 PREEMPT > [ 0.000000] Hardware name: linux,dummy-virt (DT) > [ 0.000000] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--) > [ 0.000000] pc : init_cpu_features+0xbc/0x344 > [ 0.000000] lr : init_cpu_features+0xbc/0x344 > [ 0.000000] sp : ffffcd0982373db0 > [ 0.000000] x29: ffffcd0982373db0 x28: 0000000000000010 x27: ffffcd0981c63878 > [ 0.000000] x26: 0000000000000018 x25: ffffcd0982013f38 x24: ffffcd0981c69068 > [ 0.000000] x23: ffffcd0981c635f0 x22: ffffcd0982388640 x21: 0000000000000003 > [ 0.000000] x20: 0000000000000017 x19: ffffcd09824c9308 x18: 000000000000000a > [ 0.000000] x17: 5d305b203837205d x16: 305b203737205d30 x15: 0000000000000000 > [ 0.000000] x14: 0000000000000000 x13: 3231207466696873 x12: 2074612070616c72 > [ 0.000000] x11: 0000000000000058 x10: 0000000000000018 x9 : ffffcd0982396598 > [ 0.000000] x8 : 0000000000057fa8 x7 : 000000000000002a x6 : ffffcd09823ee598 > [ 0.000000] x5 : ffffcd09823ee598 x4 : 0000000000000000 x3 : 0000000000000000 > [ 0.000000] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffffcd09823852c0 > [ 0.000000] Call trace: > [ 0.000000] init_cpu_features+0xbc/0x344 (P) > [ 0.000000] cpuinfo_store_boot_cpu+0x48/0x54 > [ 0.000000] smp_prepare_boot_cpu+0x28/0x38 > [ 0.000000] start_kernel+0x248/0x780 > [ 0.000000] __primary_switched+0x88/0x90 > [ 0.000000] ---[ end trace 0000000000000000 ]--- > ... > ``` > > Is this expected? I assume not, hence the report. If there is any > information I can provide or patches I can test, I am more than happy to > do so. Gah. No idea how I managed to miss that: the register fields must be strictly ordered, and I placed the field in the wrong spot. The following hack fixes it for me: diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 5bca6e064ca72..1bfaa96881dab 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -325,9 +325,9 @@ static const struct arm64_ftr_bits ftr_id_aa64pfr1[] = { static const struct arm64_ftr_bits ftr_id_aa64pfr2[] = { ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_FPMR_SHIFT, 4, 0), + ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_GCIE_SHIFT, 4, ID_AA64PFR2_EL1_GCIE_NI), ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_MTEFAR_SHIFT, 4, ID_AA64PFR2_EL1_MTEFAR_NI), ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_MTESTOREONLY_SHIFT, 4, ID_AA64PFR2_EL1_MTESTOREONLY_NI), - ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64PFR2_EL1_GCIE_SHIFT, 4, ID_AA64PFR2_EL1_GCIE_NI), ARM64_FTR_END, }; If that works for you, I'll fold that into the original patch... Thanks for pointing this out! M. -- Jazz isn't dead. It just smells funny.