From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D33B57873; Tue, 13 Feb 2024 14:21:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707834111; cv=none; b=hKTF1vGDQMC/2XTftBPd80UhS2Li743/yCb3mmlhWnHXDeFf/UDtduf6FBR1u8EeE+TMb6u0+MlugSGBlGKmxBZsp9JUejvr4VnN2dypAJihlppDx6VREBCeUYEyKyu4d8eilVjnqVglpjvK6l9bQAywxVmCrM7+p/sT+pF2aoQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707834111; c=relaxed/simple; bh=4AUPpALngS9sss27YY6VaLZWSJkdKdxgLETfaMjvKAg=; h=Date:Message-ID:From:To:Cc:Subject:In-Reply-To:References: MIME-Version:Content-Type; b=ZAalQrUmKkbgoGm8HJmRNblmY4JxKwhEr5J+GGHkuQA7jJuMZtPqo3krgP2OLZ03UjFpJ3baNARL/BQgJtKuk7w13oXncmQFnGkNSidPr3pkT+XF5qgfcC7PGewmL0tz/StOb5aGo/n9fzlueoxjlpr5fSYr348DDAZQLjcJXxo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=frvZuxeO; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="frvZuxeO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F0F6EC433F1; Tue, 13 Feb 2024 14:21:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707834111; bh=4AUPpALngS9sss27YY6VaLZWSJkdKdxgLETfaMjvKAg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=frvZuxeO8lRQGV3xZo+6yvXuZ9WqDHZRv3tp0CPdmlseqDSczAw5h52cOjNgV7HPn 5+rDhtWnf10vmH7b59TSwIepr3A5ASs2/HS6MPZbQf6Xi9H2jGYJcq6Pv7xrkRlLJi G+nmvmb+GB5DN5yrZnKPIsbdVkk5kvDB0faw+a8sSOqhNKaAj9QC8Jew9tbyRffX7d XSK0tadbgJ96HBV4DWU0QajPr8vWsw5aBHgsC3FY2ccOhuo4Jzpp0EGDrgjUVnjKWn ogoYUIEq4vhx14kXJp9A0a4y/iCwkUX3Idse//zIhjJ0skDO7tY9+LTH0/g+YBGLC1 aYIoe0DZbQe8w== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1rZtfQ-002nk7-HZ; Tue, 13 Feb 2024 14:21:48 +0000 Date: Tue, 13 Feb 2024 14:21:48 +0000 Message-ID: <86bk8k5ts3.wl-maz@kernel.org> From: Marc Zyngier To: Marek Szyprowski Cc: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu , Catalin Marinas , Will Deacon Subject: Re: [PATCH 2/2] arm64: cpufeatures: Only check for NV1 if NV is present In-Reply-To: <5b2d8fee-9d0f-48f7-b9ec-b86e95387a61@samsung.com> References: <20240212144736.1933112-1-maz@kernel.org> <20240212144736.1933112-3-maz@kernel.org> <5b2d8fee-9d0f-48f7-b9ec-b86e95387a61@samsung.com> 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/29.1 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: m.szyprowski@samsung.com, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com, catalin.marinas@arm.com, will@kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false On Tue, 13 Feb 2024 11:14:37 +0000, Marek Szyprowski wrote: >=20 > Hi >=20 > On 12.02.2024 15:47, Marc Zyngier wrote: > > We handle ID_AA64MMFR4_EL1.E2H0 being 0 as NV1 being present. > > However, this is only true if FEAT_NV is implemented. > > > > Add the required check to has_nv1(), avoiding spuriously advertising > > NV1 on HW that doesn't have NV at all. > > > > Fixes: da9af5071b25 ("arm64: cpufeature: Detect HCR_EL2.NV1 being RES0") > > Signed-off-by: Marc Zyngier >=20 > This patch in turn introduces the following warning during boot=20 > (observed on today's linux-next): >=20 > CPU: All CPU(s) started at EL2 > CPU features: detected: 32-bit EL0 Support > CPU features: detected: 32-bit EL1 Support > CPU features: detected: CRC32 instructions > ------------[ cut here ]------------ > WARNING: CPU: 0 PID: 1 at arch/arm64/kernel/cpufeature.c:3369=20 > this_cpu_has_cap+0x18/0x70 > Modules linked in: > CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.8.0-rc4-next-20240213 #8014 > Hardware name: Khadas VIM3 (DT) > pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=3D--) > pc : this_cpu_has_cap+0x18/0x70 > lr : has_nv1+0x24/0xcc > ... > Call trace: > =C2=A0this_cpu_has_cap+0x18/0x70 > =C2=A0update_cpu_capabilities+0x50/0x134 > =C2=A0setup_system_features+0x30/0x120 > =C2=A0smp_cpus_done+0x48/0xb4 > =C2=A0smp_init+0x7c/0x8c > =C2=A0kernel_init_freeable+0x18c/0x4e4 > =C2=A0kernel_init+0x20/0x1d8 > =C2=A0ret_from_fork+0x10/0x20 > irq event stamp: 2846 > hardirqs last=C2=A0 enabled at (2845): []=20 > console_unlock+0x164/0x190 > hardirqs last disabled at (2846): [] el1_dbg+0x24/0x8c > softirqs last=C2=A0 enabled at (2842): []=20 > __do_softirq+0x4a0/0x4e8 > softirqs last disabled at (2827): []=20 > ____do_softirq+0x10/0x1c > ---[ end trace 0000000000000000 ]--- > alternatives: applying system-wide alternatives This is nothing short of embarrassing. It looks like I somehow managed to drop CONFIG_PREEMPT from my test config, making it impossible to identify these issues. Apologies for that. The following patch fixes it for me. Could you please give it a go? Thanks, M. =46rom cd75279d3b6c387c13972b61c486a203d9652e97 Mon Sep 17 00:00:00 2001 From: Marc Zyngier Date: Tue, 13 Feb 2024 13:37:57 +0000 Subject: [PATCH] arm64: cpufeatures: Fix FEAT_NV check when checking for FEAT_NV1 Using this_cpu_has_cap() has the potential to go wrong when used system-wide on a preemptible kernel. Instead, use the __system_matches_cap() helper when checking for FEAT_NV in the FEAT_NV1 probing helper. Fixes: 3673d01a2f55 ("arm64: cpufeatures: Only check for NV1 if NV is prese= nt") Reported-by: Marek Szyprowski Signed-off-by: Marc Zyngier --- arch/arm64/kernel/cpufeature.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 3421b684d340..f309fd542c20 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -1812,7 +1812,7 @@ static bool has_nv1(const struct arm64_cpu_capabiliti= es *entry, int scope) {} }; =20 - return (this_cpu_has_cap(ARM64_HAS_NESTED_VIRT) && + return (__system_matches_cap(ARM64_HAS_NESTED_VIRT) && !(has_cpuid_feature(entry, scope) || is_midr_in_range_list(read_cpuid_id(), nv1_ni_list))); } --=20 2.39.2 --=20 Without deviation from the norm, progress is not possible.