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 1697FFCB63A for ; Fri, 6 Mar 2026 17:10:03 +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:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kne2/iM2itYNWOjgSMONme8xb9RmGta4G8bo3No3QDY=; b=sg7acoyK/T4nWvmBMatI8iPXrD IaGQvXfmCy7pNsFPj/RQy/7U1IbcgUYc2JPtalWwCxJMXTZNBkN9rRP5Xz3M0dWvG1XDWXZhYFLmr jKHn3xoThje1BTABxHw0HG5F3czz1e8/tiiD9nyTowoaqhhJoW7Ix8U85eQYDXu2xK9dJY+0TrqCB rDW8KU5Y3sO2sN4YiITudOSS1XgUZ9yjuz6xhTkkP0HnD4f1RPN+14oEbWlPJdP3H2IaY6RN6D+3O EWrrnhSGA8wAEq84FMP+0SL1WMUgrgM89lSvqBXfqNRQDzfQEXFvPg4mNkK8VYfXOPu5DhISbEu8M 6l5U8yCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vyYgZ-00000004Cti-1jD2; Fri, 06 Mar 2026 17:09:59 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vyYgX-00000004CrG-0OxX for linux-arm-kernel@lists.infradead.org; Fri, 06 Mar 2026 17:09:57 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 6A63060018; Fri, 6 Mar 2026 17:09:56 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 245DCC2BC86; Fri, 6 Mar 2026 17:09:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772816996; bh=WVinD+PZg5gNJJmXAaqYdYZjNnA9vJnAHHaWmmyoiA0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=l+SNf2LJKvzXJvTAXxdWC2sMdkaz+ozbrbV8vW5MZT3te7IMAzl5YxKu/5MeWgrZh P+aMITHI6G37NIkM4Pwgf5eH2MWibKf25naqVNY0m7fI4VQ78C87GBWdrwM7UY5buR ItLKDJ6skZIhcI8lJ2Y+hvPOPAKoPmy0IhHarctHEQp+7XfVS7IpryXVq2GUnRw4nq EFvaL8YczoFxOYmi/bn204pfh5Lx/4/r4t/ZsAxgQS64dRaAb5KXcpIx9Vy8zMsH21 ffrAfYm7yfqdlAOegtqJB7pYFJaRKc3zLAq+yUNjNEsz/H9BAN6vjd2fsTE432v96w PyAfbrTDiE4fw== From: Mark Brown Date: Fri, 06 Mar 2026 17:00:59 +0000 Subject: [PATCH v10 07/30] KVM: arm64: Move SVE state access macros after feature test macros MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260306-kvm-arm64-sme-v10-7-43f7683a0fb7@kernel.org> References: <20260306-kvm-arm64-sme-v10-0-43f7683a0fb7@kernel.org> In-Reply-To: <20260306-kvm-arm64-sme-v10-0-43f7683a0fb7@kernel.org> To: Marc Zyngier , Joey Gouly , Catalin Marinas , Suzuki K Poulose , Will Deacon , Paolo Bonzini , Jonathan Corbet , Shuah Khan , Oliver Upton Cc: Dave Martin , Fuad Tabba , Mark Rutland , Ben Horgan , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, Peter Maydell , Eric Auger , Mark Brown X-Mailer: b4 0.15-dev-6ac23 X-Developer-Signature: v=1; a=openpgp-sha256; l=2766; i=broonie@kernel.org; h=from:subject:message-id; bh=WVinD+PZg5gNJJmXAaqYdYZjNnA9vJnAHHaWmmyoiA0=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBpqwouL/LMzLhb7e8WoxtZwIEbzOl4rfVnCNAcj 9NpObJy/I6JATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCaasKLgAKCRAk1otyXVSH 0J7KB/9cDJ3yEZzWS61XCor71OYqImPMtHbcwcGrAwSt9+PIEB0J4xMggs8anSvNbOjxmJ6vcm6 uDYL08igkJwXWVPCWsdyxDSaVPLAN5E1NogM95HuOCD4ZXncP817BevI6naP6Vmu6/hqM7z4PUe cNlqLYM2JTpPgRch0cQbp/pZNmutdQDMEMoLqSbZfdM2qGRLdrMZ4MI3MloXaaUB0vGTUzgFjAp kcz/QCklxqYhptf4b0um1WVDdCdRL91EypKUhor+zsxqtdccd9JOydp2mxN50M/aOCe03cYM6Ws gdm17lBZmTgbHJKpLgKxHdK+yasjHF/3XVmSYLZ2HSvL6+Ys X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB 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 preparation for SME support move the macros used to access SVE state after the feature test macros, we will need to test for SME subfeatures to determine the size of the SME state. Reviewed-by: Fuad Tabba Signed-off-by: Mark Brown --- arch/arm64/include/asm/kvm_host.h | 50 +++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h index 2ca264b3db5f..3e7247b3890c 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -1072,31 +1072,6 @@ struct kvm_vcpu_arch { #define NESTED_SERROR_PENDING __vcpu_single_flag(sflags, BIT(8)) -/* Pointer to the vcpu's SVE FFR for sve_{save,load}_state() */ -#define vcpu_sve_pffr(vcpu) (kern_hyp_va((vcpu)->arch.sve_state) + \ - sve_ffr_offset((vcpu)->arch.sve_max_vl)) - -#define vcpu_sve_max_vq(vcpu) sve_vq_from_vl((vcpu)->arch.sve_max_vl) - -#define vcpu_sve_zcr_elx(vcpu) \ - (unlikely(is_hyp_ctxt(vcpu)) ? ZCR_EL2 : ZCR_EL1) - -#define sve_state_size_from_vl(sve_max_vl) ({ \ - size_t __size_ret; \ - unsigned int __vq; \ - \ - if (WARN_ON(!sve_vl_valid(sve_max_vl))) { \ - __size_ret = 0; \ - } else { \ - __vq = sve_vq_from_vl(sve_max_vl); \ - __size_ret = SVE_SIG_REGS_SIZE(__vq); \ - } \ - \ - __size_ret; \ -}) - -#define vcpu_sve_state_size(vcpu) sve_state_size_from_vl((vcpu)->arch.sve_max_vl) - #define KVM_GUESTDBG_VALID_MASK (KVM_GUESTDBG_ENABLE | \ KVM_GUESTDBG_USE_SW_BP | \ KVM_GUESTDBG_USE_HW | \ @@ -1132,6 +1107,31 @@ struct kvm_vcpu_arch { #define vcpu_gp_regs(v) (&(v)->arch.ctxt.regs) +/* Pointer to the vcpu's SVE FFR for sve_{save,load}_state() */ +#define vcpu_sve_pffr(vcpu) (kern_hyp_va((vcpu)->arch.sve_state) + \ + sve_ffr_offset((vcpu)->arch.sve_max_vl)) + +#define vcpu_sve_max_vq(vcpu) sve_vq_from_vl((vcpu)->arch.sve_max_vl) + +#define vcpu_sve_zcr_elx(vcpu) \ + (unlikely(is_hyp_ctxt(vcpu)) ? ZCR_EL2 : ZCR_EL1) + +#define sve_state_size_from_vl(sve_max_vl) ({ \ + size_t __size_ret; \ + unsigned int __vq; \ + \ + if (WARN_ON(!sve_vl_valid(sve_max_vl))) { \ + __size_ret = 0; \ + } else { \ + __vq = sve_vq_from_vl(sve_max_vl); \ + __size_ret = SVE_SIG_REGS_SIZE(__vq); \ + } \ + \ + __size_ret; \ +}) + +#define vcpu_sve_state_size(vcpu) sve_state_size_from_vl((vcpu)->arch.sve_max_vl) + /* * Only use __vcpu_sys_reg/ctxt_sys_reg if you know you want the * memory backed version of a register, and not the one most recently -- 2.47.3