From patchwork Thu Aug 1 09:19:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13750078 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 25B28C3DA64 for ; Thu, 1 Aug 2024 09:25:34 +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: MIME-Version:Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=GUEnKhHqgzyFCEhHU426iuPHsdru73sg0TPhBODHzhA=; b=DyJWeu3VdtsPyjr9ZBvVEs+v/q 850zEyFNeaLsxD5btcv562Pem2SJHo00dcZjaHjYPI5DRnoMHjvoyQzShMJ/1sc1s4V6AVupmtIPQ 211v8cgGsN18MQlsMhsB9ETflcJn3nJRrg5cdVW8PNhJtJp/g+8ezzUqqzu+bU7dunCAADxluIsMV Zti5junQfUJa5RA1FYf/UHmKPXhBMMyZ5A0QDnzU+gJWcPscDm0uXIfjXk28jP3dn4RffRtVPbflj 5uOUArPL6qyP2qrVe99WxV7gUTxIF87O7Wr/YDOmFUiLuwxnobjwsj+iFKlmDnwfo8/fZ1ztcRKGQ lZZgfrcw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sZS3n-00000004Y4m-18XI; Thu, 01 Aug 2024 09:25:23 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sZS16-00000004X6v-1Ivq for linux-arm-kernel@lists.infradead.org; Thu, 01 Aug 2024 09:22:37 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id CF08D62731; Thu, 1 Aug 2024 09:22:35 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E277C32786; Thu, 1 Aug 2024 09:22:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1722504155; bh=I046eeWG/NzNSwMyeP7JQD7T2R8TJtO1NJgePupVeSU=; h=From:To:Cc:Subject:Date:From; b=KaNA60qWg9p2C1nkl7diBZI8YFQec8vcjFh3rP1hARcat9QFBgI+yezrYMKS+9k2e 0mF7W+K81bvslTJnP53u3IVe7/crvDYlMVpI7MIsODvWNCkOHrwJX13s6gQiI4XWWG s970Co1WH67aY97yJB06n9tZkwzbAj1qd6Pw5oo9I17bS39q0kYppBzYCQSEXR57d2 fsnomntn+RvYb2QBcWS9+Uk5Nlx7AmKg3tkT5OnEwY7d3GLIg30Afm22MDO50S7RNu /FEB0AKSACuvXcR0FAIc3timZ2afKg6dM1GFSU5Ht99AS8YXyQAYAIteEdsep5PYFZ JliHz7C84Altw== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1sZRyZ-00HKNZ-6P; Thu, 01 Aug 2024 10:19:59 +0100 From: Marc Zyngier To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org Cc: James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu , Fuad Tabba , Joey Gouly , Mark Brown Subject: [PATCH v2 0/8] KVM: arm64: Add support for FP8 Date: Thu, 1 Aug 2024 10:19:47 +0100 Message-Id: <20240801091955.2066364-1-maz@kernel.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: 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, tabba@google.com, joey.gouly@arm.com, broonie@kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240801_022236_468575_330A5C24 X-CRM114-Status: GOOD ( 14.17 ) 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 Although FP8 support was merged in 6.9, the KVM side was dropped, with no sign of it being picked up again. Given that its absence is getting in the way of NV upstreaming (HCRX_EL2 needs fleshing out), here's a small series addressing it. The support is following the save/restore model established for the rest of the FP code, with FPMR being tied to it. The sole additions are the handling of traps in a nested context, and the corresponding ID registers being made writable. As an extra cleanup, SVCR and FPMR are moved into the sysreg array. Patches are on top of v6.11-rc1. Note that this is compile-tested only, as I have no access to FP8 HW or model (and running NV in a model is not something I wish to entertain ever again). * From v1 [1] - Correctly save/restore the guest state (duh), including pKVM (double duh) - Add a predicate for FPMR support in a VM, as this gets used more than twice... [1] https://lore.kernel.org/r/20240708154438.1218186-1-maz@kernel.org Marc Zyngier (8): KVM: arm64: Move SVCR into the sysreg array KVM: arm64: Add predicate for FPMR support in a VM KVM: arm64: Move FPMR into the sysreg array KVM: arm64: Add save/restore support for FPMR KVM: arm64: Honor trap routing for FPMR KVM: arm64: Expose ID_AA64FPFR0_EL1 as a writable ID reg KVM: arm64: Enable FP8 support when available and configured KVM: arm64: Expose ID_AA64PFR2_EL1 to userspace and guests arch/arm64/include/asm/kvm_host.h | 20 ++++++++++-- arch/arm64/kvm/emulate-nested.c | 8 +++++ arch/arm64/kvm/fpsimd.c | 5 +-- arch/arm64/kvm/hyp/include/hyp/switch.h | 3 ++ arch/arm64/kvm/hyp/nvhe/hyp-main.c | 9 ++++++ arch/arm64/kvm/hyp/nvhe/switch.c | 9 ++++++ arch/arm64/kvm/hyp/vhe/switch.c | 3 ++ arch/arm64/kvm/sys_regs.c | 42 +++++++++++++++++++++++-- 8 files changed, 92 insertions(+), 7 deletions(-)