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 E222CC369C2 for ; Tue, 22 Apr 2025 06:52:53 +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-Transfer-Encoding: Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:From:Cc:To:Subject: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:References:List-Owner; bh=pXLnu1AZH3QA9LFpfBghHb6gwaY659aa8Qx4JyO3D9o=; b=O3ohENs9OZF79p188IhEe8T87q tMsZRGqNlcU67vq1YRsga+NPiQnvqopT440sgrecfwIwfZIXNzNm94Z+kLxpWsqqJyXU4sCdZHtxw PtYRkhUPsy5k90EiCPnk1dDvb4sa+zSvQReBrHxtvZT0MNL2ZlBbWTHsl5nhS6i5GIoy078NM326q 6USIgus/fG3zhMSobin/dzgt/5IgzcsugWfQw5bVaEz66LL24IQIMvbDLPjcZpFBOLcyHCByo6ZR5 Jcs+USCTGS9ZyQoo323AFSa1/kP8M+P3vr3fR4eX8pvi1e+OH5oM98QsX5+OS4PE3srPOa+5sC2zt 5v5v4Dcw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u77Up-000000062BL-39xo; Tue, 22 Apr 2025 06:52:43 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u77MX-0000000616l-42GR for linux-arm-kernel@lists.infradead.org; Tue, 22 Apr 2025 06:44:11 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 401EB4A40E; Tue, 22 Apr 2025 06:44:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4584FC4CEEA; Tue, 22 Apr 2025 06:44:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1745304249; bh=1F0wWkdUsiH7Eo0z9vaoYfS3KipLh3tHrYHTZGQjOcQ=; h=Subject:To:Cc:From:Date:In-Reply-To:From; b=AOco4/3g/UFs+1gFLB/rb6ujRNLBcAk+0YCQzqcJF3PwyixTbtZWKoJq81+Vjfklo zjdTDc954Qc+CJL25/q+pVLBjrJ31hlIFakvHtSATwj32oG7cZMub/OuKDhsqEjdd4 AKA/sFhVFMdvU0EXTgWDQlQJB+zyg/J9wGWQdjbc= Subject: Patch "KVM: arm64: Discard any SVE state when entering KVM guests" has been added to the 6.1-stable tree To: broonie@kernel.org,catalin.marinas@arm.com,gregkh@linuxfoundation.org,james.morse@arm.com,kvmarm@lists.cs.columbia.edu,kvmarm@lists.linux.dev,linux-arm-kernel@lists.infradead.org,mark.rutland@arm.com,maz@kernel.org,oleg@redhat.com,oliver.upton@linux.dev,suzuki.poulose@arm.com,will@kernel.org Cc: From: Date: Tue, 22 Apr 2025 08:43:54 +0200 In-Reply-To: <20250404-stable-sve-6-1-v1-1-cd5c9eb52d49@kernel.org> Message-ID: <2025042254-backboard-backing-d5e0@gregkh> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit X-stable: commit X-Patchwork-Hint: ignore X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250421_234410_047491_734364F2 X-CRM114-Status: GOOD ( 20.97 ) 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 This is a note to let you know that I've just added the patch titled KVM: arm64: Discard any SVE state when entering KVM guests to the 6.1-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: kvm-arm64-discard-any-sve-state-when-entering-kvm-guests.patch and it can be found in the queue-6.1 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >From stable+bounces-128300-greg=kroah.com@vger.kernel.org Fri Apr 4 15:27:49 2025 From: Mark Brown Date: Fri, 04 Apr 2025 14:23:34 +0100 Subject: KVM: arm64: Discard any SVE state when entering KVM guests To: Catalin Marinas , Will Deacon , Marc Zyngier , James Morse , Suzuki K Poulose , Oliver Upton , Oleg Nesterov , Greg Kroah-Hartman Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, kvmarm@lists.cs.columbia.edu, Mark Brown , stable@vger.kernel.org, Mark Rutland Message-ID: <20250404-stable-sve-6-1-v1-1-cd5c9eb52d49@kernel.org> From: Mark Brown [ Upstream commit 93ae6b01bafee8fa385aa25ee7ebdb40057f6abe ] Since 8383741ab2e773a99 (KVM: arm64: Get rid of host SVE tracking/saving) KVM has not tracked the host SVE state, relying on the fact that we currently disable SVE whenever we perform a syscall. This may not be true in future since performance optimisation may result in us keeping SVE enabled in order to avoid needing to take access traps to reenable it. Handle this by clearing TIF_SVE and converting the stored task state to FPSIMD format when preparing to run the guest. This is done with a new call fpsimd_kvm_prepare() to keep the direct state manipulation functions internal to fpsimd.c. Signed-off-by: Mark Brown Reviewed-by: Catalin Marinas Reviewed-by: Marc Zyngier Link: https://lore.kernel.org/r/20221115094640.112848-2-broonie@kernel.org Signed-off-by: Will Deacon [ Mark: trivial backport to v6.1 ] Signed-off-by: Mark Rutland Signed-off-by: Mark Brown Signed-off-by: Greg Kroah-Hartman --- arch/arm64/include/asm/fpsimd.h | 1 + arch/arm64/kernel/fpsimd.c | 23 +++++++++++++++++++++++ arch/arm64/kvm/fpsimd.c | 3 ++- 3 files changed, 26 insertions(+), 1 deletion(-) --- a/arch/arm64/include/asm/fpsimd.h +++ b/arch/arm64/include/asm/fpsimd.h @@ -56,6 +56,7 @@ extern void fpsimd_signal_preserve_curre extern void fpsimd_preserve_current_state(void); extern void fpsimd_restore_current_state(void); extern void fpsimd_update_current_state(struct user_fpsimd_state const *state); +extern void fpsimd_kvm_prepare(void); extern void fpsimd_bind_state_to_cpu(struct user_fpsimd_state *state, void *sve_state, unsigned int sve_vl, --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -1644,6 +1644,29 @@ void fpsimd_signal_preserve_current_stat } /* + * Called by KVM when entering the guest. + */ +void fpsimd_kvm_prepare(void) +{ + if (!system_supports_sve()) + return; + + /* + * KVM does not save host SVE state since we can only enter + * the guest from a syscall so the ABI means that only the + * non-saved SVE state needs to be saved. If we have left + * SVE enabled for performance reasons then update the task + * state to be FPSIMD only. + */ + get_cpu_fpsimd_context(); + + if (test_and_clear_thread_flag(TIF_SVE)) + sve_to_fpsimd(current); + + put_cpu_fpsimd_context(); +} + +/* * Associate current's FPSIMD context with this cpu * The caller must have ownership of the cpu FPSIMD context before calling * this function. --- a/arch/arm64/kvm/fpsimd.c +++ b/arch/arm64/kvm/fpsimd.c @@ -75,11 +75,12 @@ int kvm_arch_vcpu_run_map_fp(struct kvm_ void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu) { BUG_ON(!current->mm); - BUG_ON(test_thread_flag(TIF_SVE)); if (!system_supports_fpsimd()) return; + fpsimd_kvm_prepare(); + vcpu->arch.fp_state = FP_STATE_HOST_OWNED; vcpu_clear_flag(vcpu, HOST_SVE_ENABLED); Patches currently in stable-queue which might be from broonie@kernel.org are queue-6.1/kvm-arm64-remove-host-fpsimd-saving-for-non-protected-kvm.patch queue-6.1/spi-cadence-qspi-fix-probe-on-am62a-lp-sk.patch queue-6.1/asoc-qdsp6-q6asm-dai-fix-q6asm_dai_compr_set_params-error-path.patch queue-6.1/asoc-qdsp6-q6apm-dai-fix-capture-pipeline-overruns.patch queue-6.1/kvm-arm64-mark-some-header-functions-as-inline.patch queue-6.1/kvm-arm64-eagerly-switch-zcr_el-1-2.patch queue-6.1/kvm-arm64-unconditionally-save-flush-host-fpsimd-sve-sme-state.patch queue-6.1/asoc-amd-add-dmi-quirk-for-acp6x-mic-support.patch queue-6.1/kvm-arm64-refactor-exit-handlers.patch queue-6.1/asoc-qdsp6-q6apm-dai-set-10-ms-period-and-buffer-alignment.patch queue-6.1/asoc-codecs-lpass-wsa-macro-fix-vi-feedback-rate.patch queue-6.1/arm64-fpsimd-track-the-saved-fpsimd-state-type-separately-to-tif_sve.patch queue-6.1/kvm-arm64-remove-vhe-host-restore-of-cpacr_el1.zen.patch queue-6.1/kvm-arm64-remove-vhe-host-restore-of-cpacr_el1.smen.patch queue-6.1/asoc-fsl_audmix-register-card-device-depends-on-dais.patch queue-6.1/arm64-fpsimd-have-kvm-explicitly-say-which-fp-registers-to-save.patch queue-6.1/kvm-arm64-discard-any-sve-state-when-entering-kvm-guests.patch queue-6.1/arm64-fpsimd-stop-using-tif_sve-to-manage-register-saving-in-kvm.patch queue-6.1/asoc-codecs-lpass-wsa-macro-fix-logic-of-enabling-vi-channels.patch queue-6.1/kvm-arm64-calculate-cptr_el2-traps-on-activating-traps.patch