From nobody Sat Oct 4 08:03:04 2025 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 1411A274B50; Mon, 18 Aug 2025 19:26:26 +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=1755545187; cv=none; b=jUQC65/zFfKgkfCS//xwF4i0zSr7SqK1E5SAXyi+4IkSAjIqk9wQhXXt9HneqwJtC63161PRCrVCHdpWjAnhTfXSt0TVzUm8UtiL9YpMdbr1vv1Ha6q5+HfVBCfSGWnmBj+KHkutvmiFFmYzSD27y5k0jz6n2wNkW/fgZd4YaO0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755545187; c=relaxed/simple; bh=tE3vjuer16Q9aKRgwGD1wbqaDmgXWO5eLjpXugsWLRg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qvETMp4IUHyUiTgcimhYoKB+K8LaEqUU29IGdYQ9dEGvBmZHUGVjLnYCVQgk6SdvPmfN4W6oCKmrpTmHv0nO37bedtOyAhXW/6WjPR8c/i2XuI08yF0BgSjXBpyE4XmtEKTEDWg5sroEv1KUIZscSpfmiLkUbBK4f5Zvtw3fu/k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mqjxnwpb; 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="mqjxnwpb" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B1B6C116D0; Mon, 18 Aug 2025 19:26:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755545186; bh=tE3vjuer16Q9aKRgwGD1wbqaDmgXWO5eLjpXugsWLRg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mqjxnwpb2AKhJqL5v+7S29hYiGmXD/FPeCQDu0k1XK5SnroTIJ+OkeaXlA+2eSGmk scD3LevEvtqKO00LNdvNxFntrhbOE/fkMiSyYwCYH/CwdzWe4WXe7ebKuEv4a24lbt eG3aNVrDC6tE9HHP4zimCj/BAq8xGKc7uy7t5ia+JJMI9XFqeAfzbTDIbd3Rmm5kTc Zd5mDbI7FpPLOy2G/3oX4NHEP7AsIWBvcDdW8aaygsSi3HVczoeA2WFW6v+NMt+1+q CAjO+UttrHZF0wneJygH9FXt9sQe7LqOdcPQVFmGqlilVzRsdPn0U4bDZfpB1G00Z1 25q0obdtmMLgA== From: Mark Brown Date: Mon, 18 Aug 2025 20:21:18 +0100 Subject: [PATCH v3 1/3] arm64/hwcap: Add hwcap for FEAT_LSFE Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250818-arm64-lsfe-v3-1-af6f4d66eb39@kernel.org> References: <20250818-arm64-lsfe-v3-0-af6f4d66eb39@kernel.org> In-Reply-To: <20250818-arm64-lsfe-v3-0-af6f4d66eb39@kernel.org> To: Catalin Marinas , Will Deacon , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Shuah Khan Cc: linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-kselftest@vger.kernel.org, Mark Brown X-Mailer: b4 0.15-dev-cff91 X-Developer-Signature: v=1; a=openpgp-sha256; l=3733; i=broonie@kernel.org; h=from:subject:message-id; bh=tE3vjuer16Q9aKRgwGD1wbqaDmgXWO5eLjpXugsWLRg=; b=owGbwMvMwMWocq27KDak/QLjabUkhozFdVHV7+rqbFMjNDKE55d4hFvO4mhaP2HxSlvT1tYsG 8ui4y2djMYsDIxcDLJiiixrn2WsSg+X2Dr/0fxXMINYmUCmMHBxCsBENlax/y9/lVHv4RzPM6GT QX2XRqPNZ9brvVc/pjOpJ4dUn52/XI+vRN6A+YrLV4mknBtn4/pCLusf37RzvvAfMQ2W/JrU9wz NbK+0otW7Nu4/JXqs18TvpF/jSdaTi0QZ9yhvFN/kZNK5xrQzRnMi19sD7zz5P09fVVi5d5Hpxs 6FsebJ21ga7udGvzQ63WC2ZFWt4/HYZVIe7Ts2pume3Jyk7DY515dnmrK+5jyjyZ/PfosWsD+e+ bwjWHnn4lU/58Q18fYtMquR1Y2K+Vwqc7dbYsMzq5j+F9nVf6WEwhWa2n+cZBIJPRZveDC85QJf zpLvob4Rxu+Ovzu+O/zotgcc1e+anGW/uQmftwlRsE8AAA== X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB FEAT_LSFE (Large System Float Extension), providing atomic floating point memory operations, is optional from v9.5. This feature adds no new architectural stare and we have no immediate use for it in the kernel so simply provide a hwcap for it to support discovery by userspace. Signed-off-by: Mark Brown --- Documentation/arch/arm64/elf_hwcaps.rst | 4 ++++ arch/arm64/include/asm/hwcap.h | 1 + arch/arm64/include/uapi/asm/hwcap.h | 1 + arch/arm64/kernel/cpufeature.c | 2 ++ arch/arm64/kernel/cpuinfo.c | 1 + 5 files changed, 9 insertions(+) diff --git a/Documentation/arch/arm64/elf_hwcaps.rst b/Documentation/arch/a= rm64/elf_hwcaps.rst index f58ada4d6cb2..a15df4956849 100644 --- a/Documentation/arch/arm64/elf_hwcaps.rst +++ b/Documentation/arch/arm64/elf_hwcaps.rst @@ -441,6 +441,10 @@ HWCAP3_MTE_FAR HWCAP3_MTE_STORE_ONLY Functionality implied by ID_AA64PFR2_EL1.MTESTOREONLY =3D=3D 0b0001. =20 +HWCAP3_LSFE + Functionality implied by ID_AA64ISAR3_EL1.LSFE =3D=3D 0b0001 + + 4. Unused AT_HWCAP bits ----------------------- =20 diff --git a/arch/arm64/include/asm/hwcap.h b/arch/arm64/include/asm/hwcap.h index 13f94c8ddfc0..6d567265467c 100644 --- a/arch/arm64/include/asm/hwcap.h +++ b/arch/arm64/include/asm/hwcap.h @@ -178,6 +178,7 @@ #define __khwcap3_feature(x) (const_ilog2(HWCAP3_ ## x) + 128) #define KERNEL_HWCAP_MTE_FAR __khwcap3_feature(MTE_FAR) #define KERNEL_HWCAP_MTE_STORE_ONLY __khwcap3_feature(MTE_STORE_ONLY) +#define KERNEL_HWCAP_LSFE __khwcap3_feature(LSFE) =20 /* * This yields a mask that user programs can use to figure out what diff --git a/arch/arm64/include/uapi/asm/hwcap.h b/arch/arm64/include/uapi/= asm/hwcap.h index 72c78468b806..575564ecdb0b 100644 --- a/arch/arm64/include/uapi/asm/hwcap.h +++ b/arch/arm64/include/uapi/asm/hwcap.h @@ -145,5 +145,6 @@ */ #define HWCAP3_MTE_FAR (1UL << 0) #define HWCAP3_MTE_STORE_ONLY (1UL << 1) +#define HWCAP3_LSFE (1UL << 2) =20 #endif /* _UAPI__ASM_HWCAP_H */ diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 9ad065f15f1d..b1219f14459f 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -278,6 +278,7 @@ static const struct arm64_ftr_bits ftr_id_aa64isar2[] = =3D { =20 static const struct arm64_ftr_bits ftr_id_aa64isar3[] =3D { ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64ISAR3_E= L1_FPRCVT_SHIFT, 4, 0), + ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64ISAR3_E= L1_LSFE_SHIFT, 4, 0), ARM64_FTR_BITS(FTR_VISIBLE, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64ISAR3_E= L1_FAMINMAX_SHIFT, 4, 0), ARM64_FTR_END, }; @@ -3252,6 +3253,7 @@ static const struct arm64_cpu_capabilities arm64_elf_= hwcaps[] =3D { HWCAP_CAP(ID_AA64ISAR1_EL1, I8MM, IMP, CAP_HWCAP, KERNEL_HWCAP_I8MM), HWCAP_CAP(ID_AA64ISAR2_EL1, LUT, IMP, CAP_HWCAP, KERNEL_HWCAP_LUT), HWCAP_CAP(ID_AA64ISAR3_EL1, FAMINMAX, IMP, CAP_HWCAP, KERNEL_HWCAP_FAMINM= AX), + HWCAP_CAP(ID_AA64ISAR3_EL1, LSFE, IMP, CAP_HWCAP, KERNEL_HWCAP_LSFE), HWCAP_CAP(ID_AA64MMFR2_EL1, AT, IMP, CAP_HWCAP, KERNEL_HWCAP_USCAT), #ifdef CONFIG_ARM64_SVE HWCAP_CAP(ID_AA64PFR0_EL1, SVE, IMP, CAP_HWCAP, KERNEL_HWCAP_SVE), diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c index ba834909a28b..c44e6d94f5de 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -162,6 +162,7 @@ static const char *const hwcap_str[] =3D { [KERNEL_HWCAP_SME_SMOP4] =3D "smesmop4", [KERNEL_HWCAP_MTE_FAR] =3D "mtefar", [KERNEL_HWCAP_MTE_STORE_ONLY] =3D "mtestoreonly", + [KERNEL_HWCAP_LSFE] =3D "lsfe", }; =20 #ifdef CONFIG_COMPAT --=20 2.39.5 From nobody Sat Oct 4 08:03:04 2025 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 DB5112750E6; Mon, 18 Aug 2025 19:26:29 +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=1755545190; cv=none; b=SswfZMqiXUJCK0QC49iyu/dkEih1V9A8gLm7k0xix6PdYQOoFd/Bw0hQuxDBc/ycbD0KUz/BKdKLGRP77Cx3rvGysbaE+QmlK3DMzhvEr7wcylLUsBacieqZf1XYYVLfRHd6Rd0xDRKAS7+p73iZyiDwKGs6e/GDNwyve71vuew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755545190; c=relaxed/simple; bh=WuZkA+3W6xGa4E/TZchTSAE/H6G9gi5ov679T+TmFuI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p9kke8DlaA21KAWtgDLMXRzojUKYWHTojOTwINxB2FB3FGgJbNqtKIz/UXA/w5UNiV2u8AY9g6LMi/tCZRDuHQnLO20eGGG/D1b/5UQ2rogJRY2inB7ncBW0f3sbh44HRBHBkYUHLpNPB0m6X8tx5NfAX7VnBs6auvuPgdbbtSw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JIk8LPIr; 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="JIk8LPIr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 06817C4CEEB; Mon, 18 Aug 2025 19:26:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755545189; bh=WuZkA+3W6xGa4E/TZchTSAE/H6G9gi5ov679T+TmFuI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JIk8LPIraA5qigmZ8M9b7LWFDtpBW0YZ0T2PP4XpGzOB2bLjSqHg09KbvFh8FSIKU P+HNzDesyZC6q0ny07/MDt5gfqjf3hJNPgAicagMlmkAOJ5kC07+I/YNlcjkN9l0ZE 9QRRX0pnkWJafhhXBPXNUoGjWV/J+DaMNvhsOGSNW+FA5gL/sUppVJHwIE+EMa1y29 XBfC8jcbVCxoAgRQdLN6ipfPdSw8PyckHBGRqsq2HnPlLrnR6Oet7ms4QoQAzSze0n KiyBCYgkqJdvJu7tiu3il8F03zFlGehLLxrwAeW5vwRyTdguUZw9HQx4tooG9sfa5G zVLYCvuMgK7Qw== From: Mark Brown Date: Mon, 18 Aug 2025 20:21:19 +0100 Subject: [PATCH v3 2/3] KVM: arm64: Expose FEAT_LSFE to guests Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250818-arm64-lsfe-v3-2-af6f4d66eb39@kernel.org> References: <20250818-arm64-lsfe-v3-0-af6f4d66eb39@kernel.org> In-Reply-To: <20250818-arm64-lsfe-v3-0-af6f4d66eb39@kernel.org> To: Catalin Marinas , Will Deacon , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Shuah Khan Cc: linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-kselftest@vger.kernel.org, Mark Brown X-Mailer: b4 0.15-dev-cff91 X-Developer-Signature: v=1; a=openpgp-sha256; l=1325; i=broonie@kernel.org; h=from:subject:message-id; bh=WuZkA+3W6xGa4E/TZchTSAE/H6G9gi5ov679T+TmFuI=; b=owGbwMvMwMWocq27KDak/QLjabUkhozFddGCUonZ74SrJEXuBqxgCyt/drfgy4XF66bbipXda C7xvneuk9GYhYGRi0FWTJFl7bOMVenhElvnP5r/CmYQKxPIFAYuTgGYyPEC9n+qm/+fajtxQW1N cxTTmXmNdq5bqkvkP+hWhtmfNq3qCNG87ZhoJiica33V7+HdVMtsyZzyeW5ZRi4xd17wpPnse2F +6ZKdyqKdf+UmhOqu+SssF3irfktb7rff/Z6LrKzO9uxmXf9hY9U5H3m/SZZXDxWFFz374sjxIc J74bfgHRqtpnMOlJvI7nGKY6p7Vrp7uyqbaNZK7T0FDvPX782qemZh4erz8uXJ/Ds7G7O563eG6 gV08Il6xd/7LaS+a835uZ0OMSGl+3LEX3lsn14+YfqDdfsWttzg5QgO9rf5y1t9ovSg0p/9wY0T mQz/8SS5d9xlVWKfc7r8jk/oWTW3Ht+tT2ST4rxlk32aAA== X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB FEAT_LSFE (Large System Float Extension), providing atomic floating point memory operations, is optional from v9.5. This feature adds no new architectural state, expose the relevant ID register field to guests so they can discover it. Signed-off-by: Mark Brown --- arch/arm64/kvm/sys_regs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index 82ffb3b3b3cf..08e2cb94bff3 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -1642,7 +1642,8 @@ static u64 __kvm_read_sanitised_id_reg(const struct k= vm_vcpu *vcpu, val &=3D ~ARM64_FEATURE_MASK(ID_AA64ISAR2_EL1_WFxT); break; case SYS_ID_AA64ISAR3_EL1: - val &=3D ID_AA64ISAR3_EL1_FPRCVT | ID_AA64ISAR3_EL1_FAMINMAX; + val &=3D ID_AA64ISAR3_EL1_FPRCVT | ID_AA64ISAR3_EL1_LSFE | + ID_AA64ISAR3_EL1_FAMINMAX; break; case SYS_ID_AA64MMFR2_EL1: val &=3D ~ID_AA64MMFR2_EL1_CCIDX_MASK; @@ -2991,6 +2992,7 @@ static const struct sys_reg_desc sys_reg_descs[] =3D { ID_AA64ISAR2_EL1_APA3 | ID_AA64ISAR2_EL1_GPA3)), ID_WRITABLE(ID_AA64ISAR3_EL1, (ID_AA64ISAR3_EL1_FPRCVT | + ID_AA64ISAR3_EL1_LSFE | ID_AA64ISAR3_EL1_FAMINMAX)), ID_UNALLOCATED(6,4), ID_UNALLOCATED(6,5), --=20 2.39.5 From nobody Sat Oct 4 08:03:04 2025 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 BE37C275AFA; Mon, 18 Aug 2025 19:26:32 +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=1755545192; cv=none; b=WlpiJ4X8srgIdDrn2BqLeWTnLHsI84SGNELFhSkCklmveN9gFqctYDZN5VXxFIapknozu71ZxFP64T/GYTPLWSJZLv4Oq0dQcSyBcamYp/E+orCDtLXZwmLWDCaAZgPBfCVeXxOgMjoxSETD6jJuanjKcsKJ1frc9iaLHQ1D5Qo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755545192; c=relaxed/simple; bh=Yp4rWZGTDT5KFNRfuZwRUzBhL1WXxvUosbp+WU+yAyM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=loxAxHnsT+Mv4ohU0aI0jtWsYofuY6ewuRut7PpllrxuUrINCl6bTLcWfCPrd+hJVc3mDDfjom5/jblKD/DlDzzvvs5Aah/LHpeimg5zqM4lUTyaGfZFFaFxbGoSVvae1p6IYdZ7VIjnksIQH5tt7imp7/bPvCKR2X9elWvU7t0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=enYR4qj7; 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="enYR4qj7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E3B7CC4CEED; Mon, 18 Aug 2025 19:26:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755545192; bh=Yp4rWZGTDT5KFNRfuZwRUzBhL1WXxvUosbp+WU+yAyM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=enYR4qj7ytofyZvFaTFCUCZu1/wM8GKJTrdhnlmPC6ADnC98OmNkXGeWKYxgkkiqa JS/LtmHCCrQdxGDD8KFOLsz4q8ZxyD2h0cxqCrMLEK3Ze7Bwnj4vbXBAW8SIMc0ELF 7Ipj640hZ51Kz4yC7uauTta29m2s7d9Uo27IIEI9rzQYwkMVvbs1GxRaJ+ENLSWuC6 J6uSsSX9bh3IAYHCOTXWWRNtHgic/0kET6gfjGWr0Juyf5Bs9AWTobf8R0JznyREix mQO3Ev9ysKTMxqHlbvymgM0A44bC2DcPDSI8EiEZPcW/SbC3YdClUypJYMRReLWSKd BYz1JaMud4g2g== From: Mark Brown Date: Mon, 18 Aug 2025 20:21:20 +0100 Subject: [PATCH v3 3/3] kselftest/arm64: Add lsfe to the hwcaps test Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250818-arm64-lsfe-v3-3-af6f4d66eb39@kernel.org> References: <20250818-arm64-lsfe-v3-0-af6f4d66eb39@kernel.org> In-Reply-To: <20250818-arm64-lsfe-v3-0-af6f4d66eb39@kernel.org> To: Catalin Marinas , Will Deacon , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Shuah Khan Cc: linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-kselftest@vger.kernel.org, Mark Brown X-Mailer: b4 0.15-dev-cff91 X-Developer-Signature: v=1; a=openpgp-sha256; l=1403; i=broonie@kernel.org; h=from:subject:message-id; bh=Yp4rWZGTDT5KFNRfuZwRUzBhL1WXxvUosbp+WU+yAyM=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBoo35cNLSX6TytXvCWIkh1aXNAVcK8MraPbgJUI mJwRba6cluJATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCaKN+XAAKCRAk1otyXVSH 0CH0CACCOVx3HNaVMqyPEwTi7A3oJxaPSzOk7n4/tjcUwCF85/+WFdLaEaHCuePMjrYUveEuGsw xCWs2hJ+6pJG5LR2/YwTcp75aeAxyCPybxR5Km1Lb1yotTpw2ZlaO1vQP6ZA3TbBfa41bQR8EMr dWqtGVwyJeN0eJRue9bp2yiwqwvSAKXS1JETnFsjAQSk3L3p6zDU4rf8ozCvjhOfGWm5bTBzO2j ePrni6UZoCwVxGZC4twgwRkO71CcRCKhUh+UrJcfAK+aSWcntU1rh7bL/p+qx3+fXAeS1KdYn01 dZ/0qMkZ6lTfSrIHzp/T+EIBmfzZx4g9Py0TNy5DznPPFols X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB This feature has no traps associated with it so the SIGILL is not reliable. Signed-off-by: Mark Brown --- tools/testing/selftests/arm64/abi/hwcap.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tools/testing/selftests/arm64/abi/hwcap.c b/tools/testing/self= tests/arm64/abi/hwcap.c index 002ec38a8bbb..941890f69df6 100644 --- a/tools/testing/selftests/arm64/abi/hwcap.c +++ b/tools/testing/selftests/arm64/abi/hwcap.c @@ -17,6 +17,8 @@ #include #include =20 +#include + #include "../../kselftest.h" =20 #define TESTS_PER_HWCAP 3 @@ -169,6 +171,18 @@ static void lse128_sigill(void) : "cc", "memory"); } =20 +static void lsfe_sigill(void) +{ + float __attribute__ ((aligned (16))) mem =3D 0; + register float *memp asm ("x0") =3D &mem; + + /* LDFADD H0, H0, [X0] */ + asm volatile(".inst 0x7c200000" + : "+r" (memp) + : + : "cc", "memory"); +} + static void lut_sigill(void) { /* LUTI2 V0.16B, { V0.16B }, V[0] */ @@ -762,6 +776,13 @@ static const struct hwcap_data { .cpuinfo =3D "lse128", .sigill_fn =3D lse128_sigill, }, + { + .name =3D "LSFE", + .at_hwcap =3D AT_HWCAP3, + .hwcap_bit =3D HWCAP3_LSFE, + .cpuinfo =3D "lsfe", + .sigill_fn =3D lsfe_sigill, + }, { .name =3D "LUT", .at_hwcap =3D AT_HWCAP2, --=20 2.39.5