From patchwork Mon Jun 22 08:06:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11617169 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6A10D913 for ; Mon, 22 Jun 2020 08:06:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4612920C09 for ; Mon, 22 Jun 2020 08:06:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813216; bh=0gZJhb39igS0hzVb6zMN/tZFT8C1rNqIbw7RukeMKqc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=xyJcW/IViABF/qXUaen5nrCR0nXbskDsJMsOOiHoDfER3gd6UDB3NhNXtdSfkJBXX TiXvkP6dQ3/1rPU/YHCddDoy/6LJp/Bsi1gkxASTIwRgZT3axbFxr/th9yFUIgZFj0 l9DPq5Z/QnJWTn4WiMQlxJfKfHf0QSw+unPjRlcg= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725925AbgFVIGz (ORCPT ); Mon, 22 Jun 2020 04:06:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:42076 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725820AbgFVIGy (ORCPT ); Mon, 22 Jun 2020 04:06:54 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 80B7A207F5; Mon, 22 Jun 2020 08:06:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813213; bh=0gZJhb39igS0hzVb6zMN/tZFT8C1rNqIbw7RukeMKqc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FK0x9M3Xz92zroB0HDA8eCvUmbWChlJfvuB2LSTzLrPtpLgywvtwHIMmpCTfRWChr lQMeCDv05vV+0B15CS5sjekcrtbN8YqkNOYVEXteRaa6lT/KMNew8PNFiOe1FOZgwq EpyuN/Fbgq6P34uvJM88tie1bAHO2yjFlTF/LsHI= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jnHTg-005FG8-0v; Mon, 22 Jun 2020 09:06:52 +0100 From: Marc Zyngier To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu Cc: James Morse , Julien Thierry , Suzuki K Poulose , Mark Rutland , Andrew Scull , Dave Martin , kernel-team@android.com Subject: [PATCH v2 1/5] KVM: arm64: Enable Address Authentication at EL2 if available Date: Mon, 22 Jun 2020 09:06:39 +0100 Message-Id: <20200622080643.171651-2-maz@kernel.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200622080643.171651-1-maz@kernel.org> References: <20200622080643.171651-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, james.morse@arm.com, julien.thierry.kdev@gmail.com, suzuki.poulose@arm.com, mark.rutland@arm.com, ascull@google.com, Dave.Martin@arm.com, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org While initializing EL2, enable Address Authentication if detected from EL1. We still use the EL1-provided keys though. Acked-by: Andrew Scull Signed-off-by: Marc Zyngier Acked-by: Mark Rutland --- arch/arm64/kvm/hyp-init.S | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/kvm/hyp-init.S b/arch/arm64/kvm/hyp-init.S index 6e6ed5581eed..1587d146726a 100644 --- a/arch/arm64/kvm/hyp-init.S +++ b/arch/arm64/kvm/hyp-init.S @@ -104,6 +104,11 @@ alternative_else_nop_endif */ mov_q x4, (SCTLR_EL2_RES1 | (SCTLR_ELx_FLAGS & ~SCTLR_ELx_A)) CPU_BE( orr x4, x4, #SCTLR_ELx_EE) +alternative_if ARM64_HAS_ADDRESS_AUTH + mov_q x5, (SCTLR_ELx_ENIA | SCTLR_ELx_ENIB | \ + SCTLR_ELx_ENDA | SCTLR_ELx_ENDB) + orr x4, x4, x5 +alternative_else_nop_endif msr sctlr_el2, x4 isb From patchwork Mon Jun 22 08:06:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11617171 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 723BB92A for ; Mon, 22 Jun 2020 08:06:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 57CA5208FE for ; Mon, 22 Jun 2020 08:06:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813217; bh=auCGx6XCpPj3YqEfR6NXLz5q29tOXX3dB0MRke0HUQQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=cUt4Xpn8JksKCoqkVogQIBnFm25EY8cqODE0FzWQrUSBnC5K6XFktX8t37gUW2BQ8 SMUUFb194AfkM9NFrP9pLH2Pp3YPqCdQ1wbJ0pXaLNIwLxFPECBn3J7c75Z/Hsbgl1 EYZr9RliSLaJlpvoa8o4VD7PkuL66DbbI8gTGgkk= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725980AbgFVIG4 (ORCPT ); Mon, 22 Jun 2020 04:06:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:42092 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725793AbgFVIGy (ORCPT ); Mon, 22 Jun 2020 04:06:54 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1AB3120809; Mon, 22 Jun 2020 08:06:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813214; bh=auCGx6XCpPj3YqEfR6NXLz5q29tOXX3dB0MRke0HUQQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b37ZMGbaz5WtmJvhG6Pa1s06V+Ty4K5Rf1v0tS9cSD0Qox8QqyJodBDKGz4w2b3Qp bMIYKnSJFiDIwz6p9QTOoZFe37QiKWObZSEa4YZvKtMu7C3AjhnOuN05utZKE7s8Zg Uw199VMmsnsMWr3Z9dI5ZU3Kk5ubeP7ugMqAWQKs= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jnHTg-005FG8-K2; Mon, 22 Jun 2020 09:06:52 +0100 From: Marc Zyngier To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu Cc: James Morse , Julien Thierry , Suzuki K Poulose , Mark Rutland , Andrew Scull , Dave Martin , kernel-team@android.com Subject: [PATCH v2 2/5] KVM: arm64: Allow ARM64_PTR_AUTH when ARM64_VHE=n Date: Mon, 22 Jun 2020 09:06:40 +0100 Message-Id: <20200622080643.171651-3-maz@kernel.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200622080643.171651-1-maz@kernel.org> References: <20200622080643.171651-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, james.morse@arm.com, julien.thierry.kdev@gmail.com, suzuki.poulose@arm.com, mark.rutland@arm.com, ascull@google.com, Dave.Martin@arm.com, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org We currently prevent PtrAuth from even being built if KVM is selected, but VHE isn't. It is a bit of a pointless restriction, since we also check this at run time (rejecting the enabling of PtrAuth for the vcpu if we're not running with VHE). Just drop this apparently useless restriction. Acked-by: Andrew Scull Acked-by: Mark Rutland Signed-off-by: Marc Zyngier --- arch/arm64/Kconfig | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 31380da53689..d719ea9c596d 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -1516,7 +1516,6 @@ menu "ARMv8.3 architectural features" config ARM64_PTR_AUTH bool "Enable support for pointer authentication" default y - depends on !KVM || ARM64_VHE depends on (CC_HAS_SIGN_RETURN_ADDRESS || CC_HAS_BRANCH_PROT_PAC_RET) && AS_HAS_PAC # GCC 9.1 and later inserts a .note.gnu.property section note for PAC # which is only understood by binutils starting with version 2.33.1. @@ -1543,8 +1542,7 @@ config ARM64_PTR_AUTH The feature is detected at runtime. If the feature is not present in hardware it will not be advertised to userspace/KVM guest nor will it - be enabled. However, KVM guest also require VHE mode and hence - CONFIG_ARM64_VHE=y option to use this feature. + be enabled. If the feature is present on the boot CPU but not on a late CPU, then the late CPU will be parked. Also, if the boot CPU does not have From patchwork Mon Jun 22 08:06:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11617177 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D59B1913 for ; Mon, 22 Jun 2020 08:07:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BCE72208DB for ; Mon, 22 Jun 2020 08:07:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813222; bh=ImUQBlLW57suQ3KIKHAaNJSiF8oTValBlw7IMxbIgqg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=vs3gbkis/dxuiQyuHb2c7CNkO69l0PpPetCi005STJ+hMQvsvtFk+mx2fQVUFBGrS XCTYL5Imu1ZTHi4SyjYJcOzzXGS7kZr5P/so6zMmiFVIiZemqPhOIef1nugkQ0z6so LjB29UQU8uHvvlNXvnqzzvsFcXwq0839CXK1xdsw= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726037AbgFVIHB (ORCPT ); Mon, 22 Jun 2020 04:07:01 -0400 Received: from mail.kernel.org ([198.145.29.99]:42116 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725935AbgFVIGz (ORCPT ); Mon, 22 Jun 2020 04:06:55 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9F4472083E; Mon, 22 Jun 2020 08:06:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813214; bh=ImUQBlLW57suQ3KIKHAaNJSiF8oTValBlw7IMxbIgqg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bWJW+sluR2X5pfiMN+1jKheEHMkDwH/kjkz5t4ychMdOXJf/a3DrL0/74NRq7LN4L CPQ+o9rnwUcNwjquDQbGNM9Ic8rb480uKcv8NJ2hxsNZ5GdY0lqosDj+f4YR3yUYbr 53LR2+IrH/DCaVSawhrUwi3LcE32A9Jw+cfriVhE= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jnHTh-005FG8-5t; Mon, 22 Jun 2020 09:06:53 +0100 From: Marc Zyngier To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu Cc: James Morse , Julien Thierry , Suzuki K Poulose , Mark Rutland , Andrew Scull , Dave Martin , kernel-team@android.com Subject: [PATCH v2 3/5] KVM: arm64: Allow PtrAuth to be enabled from userspace on non-VHE systems Date: Mon, 22 Jun 2020 09:06:41 +0100 Message-Id: <20200622080643.171651-4-maz@kernel.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200622080643.171651-1-maz@kernel.org> References: <20200622080643.171651-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, james.morse@arm.com, julien.thierry.kdev@gmail.com, suzuki.poulose@arm.com, mark.rutland@arm.com, ascull@google.com, Dave.Martin@arm.com, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Now that the scene is set for enabling PtrAuth on non-VHE, drop the restrictions preventing userspace from enabling it. Acked-by: Andrew Scull Acked-by: Mark Rutland Signed-off-by: Marc Zyngier --- arch/arm64/kvm/reset.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c index d3b209023727..2a929789fe2e 100644 --- a/arch/arm64/kvm/reset.c +++ b/arch/arm64/kvm/reset.c @@ -42,6 +42,11 @@ static u32 kvm_ipa_limit; #define VCPU_RESET_PSTATE_SVC (PSR_AA32_MODE_SVC | PSR_AA32_A_BIT | \ PSR_AA32_I_BIT | PSR_AA32_F_BIT) +static bool system_has_full_ptr_auth(void) +{ + return system_supports_address_auth() && system_supports_generic_auth(); +} + /** * kvm_arch_vm_ioctl_check_extension * @@ -80,8 +85,7 @@ int kvm_arch_vm_ioctl_check_extension(struct kvm *kvm, long ext) break; case KVM_CAP_ARM_PTRAUTH_ADDRESS: case KVM_CAP_ARM_PTRAUTH_GENERIC: - r = has_vhe() && system_supports_address_auth() && - system_supports_generic_auth(); + r = system_has_full_ptr_auth(); break; default: r = 0; @@ -205,19 +209,14 @@ static void kvm_vcpu_reset_sve(struct kvm_vcpu *vcpu) static int kvm_vcpu_enable_ptrauth(struct kvm_vcpu *vcpu) { - /* Support ptrauth only if the system supports these capabilities. */ - if (!has_vhe()) - return -EINVAL; - - if (!system_supports_address_auth() || - !system_supports_generic_auth()) - return -EINVAL; /* * For now make sure that both address/generic pointer authentication - * features are requested by the userspace together. + * features are requested by the userspace together and the system + * supports these capabilities. */ if (!test_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, vcpu->arch.features) || - !test_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, vcpu->arch.features)) + !test_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, vcpu->arch.features) || + !system_has_full_ptr_auth()) return -EINVAL; vcpu->arch.flags |= KVM_ARM64_GUEST_HAS_PTRAUTH; From patchwork Mon Jun 22 08:06:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11617175 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7D31A913 for ; Mon, 22 Jun 2020 08:07:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 59F0920C09 for ; Mon, 22 Jun 2020 08:07:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813221; bh=cbHNqMTWM4XBTi8BcgqQ/MZT1LZ7/GYxlwpP7QQrJWc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=D/d+BgorabqxoWmC1wPd3hRoeO5qK82xE+lZ4ZDJUIfb8vWn1JUFjL5ghIkqvmL95 5v06lM8HtjVRVmB7lbBKLKxFQHzaraIrB74AgPHDXCiC12EWi1+Flco4ITI0GMZbGC UOpQhyF2kldbMuSeXtYdeyuuM6PxCIyfqDWMrQts= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726079AbgFVIHA (ORCPT ); Mon, 22 Jun 2020 04:07:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:42092 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725820AbgFVIG4 (ORCPT ); Mon, 22 Jun 2020 04:06:56 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 32614208E4; Mon, 22 Jun 2020 08:06:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813215; bh=cbHNqMTWM4XBTi8BcgqQ/MZT1LZ7/GYxlwpP7QQrJWc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nXVeq1uzLb1InSQd9SQIgO2gDFMzaM4rSkl14YkRnlhT1Z4QORqUGIGuItwEnO5nc M9MnLrET5AxRbgUwg+Z9F5p5BeN39NOTMzsmJtggb0/Yz7bHkvkiO6BXHohUf0aK+z yeg/uPP6zCcSDhcVg3TS+RSvr0PePDXqUNkNf4Mg= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jnHTh-005FG8-Nu; Mon, 22 Jun 2020 09:06:53 +0100 From: Marc Zyngier To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu Cc: James Morse , Julien Thierry , Suzuki K Poulose , Mark Rutland , Andrew Scull , Dave Martin , kernel-team@android.com Subject: [PATCH v2 4/5] KVM: arm64: Check HCR_EL2 instead of shadow copy to swap PtrAuth registers Date: Mon, 22 Jun 2020 09:06:42 +0100 Message-Id: <20200622080643.171651-5-maz@kernel.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200622080643.171651-1-maz@kernel.org> References: <20200622080643.171651-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, james.morse@arm.com, julien.thierry.kdev@gmail.com, suzuki.poulose@arm.com, mark.rutland@arm.com, ascull@google.com, Dave.Martin@arm.com, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org When save/restoring PtrAuth registers between host and guest, it is pretty useless to fetch the in-memory state, while we have the right state in the HCR_EL2 system register. Use that instead. Acked-by: Mark Rutland Signed-off-by: Marc Zyngier --- arch/arm64/include/asm/kvm_ptrauth.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/include/asm/kvm_ptrauth.h b/arch/arm64/include/asm/kvm_ptrauth.h index 6301813dcace..f1830173fa9e 100644 --- a/arch/arm64/include/asm/kvm_ptrauth.h +++ b/arch/arm64/include/asm/kvm_ptrauth.h @@ -74,7 +74,7 @@ alternative_if_not ARM64_HAS_ADDRESS_AUTH_IMP_DEF b 1001f alternative_else_nop_endif 1000: - ldr \reg1, [\g_ctxt, #(VCPU_HCR_EL2 - VCPU_CONTEXT)] + mrs \reg1, hcr_el2 and \reg1, \reg1, #(HCR_API | HCR_APK) cbz \reg1, 1001f add \reg1, \g_ctxt, #CPU_APIAKEYLO_EL1 @@ -90,7 +90,7 @@ alternative_if_not ARM64_HAS_ADDRESS_AUTH_IMP_DEF b 2001f alternative_else_nop_endif 2000: - ldr \reg1, [\g_ctxt, #(VCPU_HCR_EL2 - VCPU_CONTEXT)] + mrs \reg1, hcr_el2 and \reg1, \reg1, #(HCR_API | HCR_APK) cbz \reg1, 2001f add \reg1, \g_ctxt, #CPU_APIAKEYLO_EL1 From patchwork Mon Jun 22 08:06:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11617173 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5CAD092A for ; Mon, 22 Jun 2020 08:06:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3FE6A208DB for ; Mon, 22 Jun 2020 08:06:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813219; bh=4nG2b3jaPjznFD/NfnCd4lwrsEBsRWemjhTf0Sa8kGs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=BPdbVkugRb3Ps8XZaqSZ1Cm2aFiRywnitabUxcOErA1i4Zc7dt2L8LTTsHwn2vxZh Nd/A3YraZ6JW0eFgiErbm2kO8CIR+RUjJ8CQlML84X5UHZJN2pz7K9L2H1mSBEoQp1 t20KR7zi/nD4FuH//zLAGWSuDgNE25jn/KszeiMY= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726023AbgFVIG6 (ORCPT ); Mon, 22 Jun 2020 04:06:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:42178 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725977AbgFVIG4 (ORCPT ); Mon, 22 Jun 2020 04:06:56 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B5C78208B8; Mon, 22 Jun 2020 08:06:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592813215; bh=4nG2b3jaPjznFD/NfnCd4lwrsEBsRWemjhTf0Sa8kGs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1QcwT2LdGzYbQ4WrK2MAJLcBXxUUtmRWcG/BcBlXrB5Mvkxx801VfvZrkGMekCGcf volfud8JcHtQ/+STXSZyMbFz9TmEYHYEfUyACVmDGEnDUSGdJ+M/4lpAUtpH66otp+ fsBWeoDh8Cnk6z2LswTAEdyDUK58WWPvm2Pvt610= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jnHTi-005FG8-9V; Mon, 22 Jun 2020 09:06:54 +0100 From: Marc Zyngier To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu Cc: James Morse , Julien Thierry , Suzuki K Poulose , Mark Rutland , Andrew Scull , Dave Martin , kernel-team@android.com Subject: [PATCH v2 5/5] KVM: arm64: Simplify PtrAuth alternative patching Date: Mon, 22 Jun 2020 09:06:43 +0100 Message-Id: <20200622080643.171651-6-maz@kernel.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200622080643.171651-1-maz@kernel.org> References: <20200622080643.171651-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, james.morse@arm.com, julien.thierry.kdev@gmail.com, suzuki.poulose@arm.com, mark.rutland@arm.com, ascull@google.com, Dave.Martin@arm.com, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org We currently decide to execute the PtrAuth save/restore code based on a set of branches that evaluate as (ARM64_HAS_ADDRESS_AUTH_ARCH || ARM64_HAS_ADDRESS_AUTH_IMP_DEF). This can be easily replaced by a much simpler test as the ARM64_HAS_ADDRESS_AUTH capability is exactly this expression. Suggested-by: Mark Rutland Signed-off-by: Marc Zyngier Acked-by: Mark Rutland --- arch/arm64/include/asm/kvm_ptrauth.h | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/arch/arm64/include/asm/kvm_ptrauth.h b/arch/arm64/include/asm/kvm_ptrauth.h index f1830173fa9e..7a72508a841b 100644 --- a/arch/arm64/include/asm/kvm_ptrauth.h +++ b/arch/arm64/include/asm/kvm_ptrauth.h @@ -61,44 +61,36 @@ /* * Both ptrauth_switch_to_guest and ptrauth_switch_to_host macros will - * check for the presence of one of the cpufeature flag - * ARM64_HAS_ADDRESS_AUTH_ARCH or ARM64_HAS_ADDRESS_AUTH_IMP_DEF and + * check for the presence ARM64_HAS_ADDRESS_AUTH, which is defined as + * (ARM64_HAS_ADDRESS_AUTH_ARCH || ARM64_HAS_ADDRESS_AUTH_IMP_DEF) and * then proceed ahead with the save/restore of Pointer Authentication - * key registers. + * key registers if enabled for the guest. */ .macro ptrauth_switch_to_guest g_ctxt, reg1, reg2, reg3 -alternative_if ARM64_HAS_ADDRESS_AUTH_ARCH +alternative_if_not ARM64_HAS_ADDRESS_AUTH b 1000f alternative_else_nop_endif -alternative_if_not ARM64_HAS_ADDRESS_AUTH_IMP_DEF - b 1001f -alternative_else_nop_endif -1000: mrs \reg1, hcr_el2 and \reg1, \reg1, #(HCR_API | HCR_APK) - cbz \reg1, 1001f + cbz \reg1, 1000f add \reg1, \g_ctxt, #CPU_APIAKEYLO_EL1 ptrauth_restore_state \reg1, \reg2, \reg3 -1001: +1000: .endm .macro ptrauth_switch_to_host g_ctxt, h_ctxt, reg1, reg2, reg3 -alternative_if ARM64_HAS_ADDRESS_AUTH_ARCH +alternative_if_not ARM64_HAS_ADDRESS_AUTH b 2000f alternative_else_nop_endif -alternative_if_not ARM64_HAS_ADDRESS_AUTH_IMP_DEF - b 2001f -alternative_else_nop_endif -2000: mrs \reg1, hcr_el2 and \reg1, \reg1, #(HCR_API | HCR_APK) - cbz \reg1, 2001f + cbz \reg1, 2000f add \reg1, \g_ctxt, #CPU_APIAKEYLO_EL1 ptrauth_save_state \reg1, \reg2, \reg3 add \reg1, \h_ctxt, #CPU_APIAKEYLO_EL1 ptrauth_restore_state \reg1, \reg2, \reg3 isb -2001: +2000: .endm #else /* !CONFIG_ARM64_PTR_AUTH */