From patchwork Thu Mar 21 15:53:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 13599049 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 75547C54E68 for ; Thu, 21 Mar 2024 15:55:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=w4jObKGxUTRXFZyfFqJwfGZOs8WtgZZkvvh1LQ7pk38=; b=LAdUphcybg1Qhg ZsfAGVY5VM5sHG4mr8mIRRA+k593V4vxht5ZLi/Ya6bHOe4HT/QouFWMWAQ3bafxgyhzQjEg8mTxZ WVv4/0Mxd6CESZafCbIVc2YFO/IthVtgRVOZ107loWCqLq/0ro4blQaOIxrfmyC0n6G9UP3+v/mLa 8NDiJsqyUYwOQ9dAwC9K1Iidt+r4/zlaJa2VqU6fOjhzueIu8tBhFXlISznReAL/yIt9RbmS0yv8R cgkpsjKdLD1rxm+G/4ZBr5paJ8+8Pc985J1NvIfCeXCcIRLFXsK5SEPctRDFsW9ca79ElYPrs3j2s pywci0IkMf/3g85ptvaA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rnKkr-00000003eCO-2Qxu; Thu, 21 Mar 2024 15:54:57 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rnKkU-00000003dt4-0YDC for linux-arm-kernel@lists.infradead.org; Thu, 21 Mar 2024 15:54:38 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 4D8D4CE125E; Thu, 21 Mar 2024 15:54:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 78163C433F1; Thu, 21 Mar 2024 15:54:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711036471; bh=66gDhnAmDU/hoQLglzJaWzdItzKx4gogSnjdmN48DrE=; h=From:To:Cc:Subject:Date:From; b=TBUgJossJf3tTtSYHIVGJBtHpSAt7pnGeCLXJxFmVF+R3OxOA8/1CHJdWQCasFS98 A3rJ8L/mMqY0FMnqMzDpTeaha6+Ak9Qiz33R8AVKCOY796QyLjVuvgBm2WjK/JF69f QQx88GqtakhVPbbPFLbR6Cc5zr4s0wSImnbeCEwcBeOZe+w80jB7DnqIxFm1muIsM+ Reeq6gFXWTlN2Grpnwg0kBQ877QfIWxfyZnqms/S3HC/grp6EUlKUNy69CRfbG08r0 rZAXdfihKmutzFadxGbrdcNNoNyVnc0oyu7jU0R5rFM+U1DvyhucmtXSdWHsCPz07L gw3QB90zioTdA== 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 1rnKkP-00EEqz-8T; Thu, 21 Mar 2024 15:54:29 +0000 From: Marc Zyngier To: kvmarm@lists.linux.dev, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: James Morse , Suzuki K Poulose , Oliver Upton , Zenghui Yu , Joey Gouly , Will Deacon , Catalin Marinas Subject: [PATCH v3 00/15] KVM/arm64: Add NV support for ERET and PAuth Date: Thu, 21 Mar 2024 15:53:41 +0000 Message-Id: <20240321155356.3236459-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, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, james.morse@arm.com, suzuki.poulose@arm.com, oliver.upton@linux.dev, yuzenghui@huawei.com, joey.gouly@arm.com, will@kernel.org, catalin.marinas@arm.com 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-20240321_085435_104569_2FAF5A14 X-CRM114-Status: GOOD ( 13.73 ) 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 the third version of this series introducing ERET and PAuth support for NV guests, and now the base prefix for the NV support series. Thanks again to Joey for reviewing a large part of the series! * From v2 [2] - Enforce that both Address and Generic authentication use the same algorithm - Reduce PAuth trapping by eagerly setting the HCR_EL2.API/APK bits - Collected RBs, with thanks - Rebased on kvmarm-6.9 * From v1 [1]: - Don't repaint the ISS_ERET* definitions, but provide reasonable helpers instead - Dropped superfluous VNCR_EL2 definition - Amended comments and creative spelling [1] https://lore.kernel.org/r/20240219092014.783809-1-maz@kernel.org [2] https://lore.kernel.org/r/20240226100601.2379693-1-maz@kernel.org Marc Zyngier (15): KVM: arm64: Harden __ctxt_sys_reg() against out-of-range values KVM: arm64: Add helpers for ESR_ELx_ERET_ISS_ERET* KVM: arm64: Constraint PAuth support to consistent implementations KVM: arm64: nv: Drop VCPU_HYP_CONTEXT flag KVM: arm64: nv: Configure HCR_EL2 for FEAT_NV2 KVM: arm64: nv: Add trap forwarding for ERET and SMC KVM: arm64: nv: Fast-track 'InHost' exception returns KVM: arm64: nv: Honor HFGITR_EL2.ERET being set KVM: arm64: nv: Handle HCR_EL2.{API,APK} independently KVM: arm64: nv: Reinject PAC exceptions caused by HCR_EL2.API==0 KVM: arm64: nv: Add kvm_has_pauth() helper KVM: arm64: nv: Add emulation for ERETAx instructions KVM: arm64: nv: Handle ERETA[AB] instructions KVM: arm64: nv: Advertise support for PAuth KVM: arm64: Drop trapping of PAuth instructions/keys arch/arm64/include/asm/esr.h | 12 ++ arch/arm64/include/asm/kvm_emulate.h | 10 -- arch/arm64/include/asm/kvm_host.h | 26 +++- arch/arm64/include/asm/kvm_nested.h | 13 ++ arch/arm64/include/asm/kvm_ptrauth.h | 21 +++ arch/arm64/include/asm/pgtable-hwdef.h | 1 + arch/arm64/kvm/Makefile | 1 + arch/arm64/kvm/arm.c | 83 +++++++++- arch/arm64/kvm/emulate-nested.c | 66 +++++--- arch/arm64/kvm/handle_exit.c | 36 ++++- arch/arm64/kvm/hyp/include/hyp/switch.h | 62 +------- arch/arm64/kvm/hyp/nvhe/switch.c | 4 +- arch/arm64/kvm/hyp/vhe/switch.c | 96 +++++++++++- arch/arm64/kvm/nested.c | 8 +- arch/arm64/kvm/pauth.c | 196 ++++++++++++++++++++++++ 15 files changed, 514 insertions(+), 121 deletions(-) create mode 100644 arch/arm64/kvm/pauth.c