Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp3426609pxb; Mon, 16 Nov 2020 14:33:09 -0800 (PST) X-Google-Smtp-Source: ABdhPJxxihDZrGeR7XicYOTLVNtTzDfsFYSl2R1a0KoVIbKRV+5BY64XJgiYSbzArtl2qEb2tvxK X-Received: by 2002:a50:a6d0:: with SMTP id f16mr17360954edc.135.1605565988891; Mon, 16 Nov 2020 14:33:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605565988; cv=none; d=google.com; s=arc-20160816; b=OIoexvXXB0tsi1iFxdnSiv77Fp1R+Edt6gAiOTrAwNi9SWtJqIltGkbaCCWSWr49Ho tycuS0zXbnVye7hLTEj8ypGuONPG6gbWR8DFq5j6MI/plZa1eT3dP3267p5RtO1G6LZM 9K4kC/4mdtj+mVy+iQPm01X1VtC6PeiCgDSfAyW3sG4eDZNZLc/bKLhu22ScW1lZT3Ee 6l+Sb8J9XQuiGXh+B0eVMrGPsjh7SDAOORT3f2+Suv6DKITW4qD7Q4/mJ93kLr7PXDLs UkPLaLc3r8ATKEk2dVv1+rh3dX6dinQBQJ7AacFQHbruAOGkEJ30y1LteHq39EVOniFO KtlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5CFjz03HJxHtdKmmeq3XI0pgEGq835KLMY12UZ/ZKTg=; b=alqTjn26z/tNgZvQ6kTPN0Ax8HqQPphkhTy1Dk5ET9wNn6KOa3hRQgve3rXt0kCwtl vWWOYR01MX9h3c4RuSzd64Z6mxysQ2jwN1WG87PShPR0cR71w67dJsK2fKzwfBSDMVp+ njrTvmTA6kAEfOqMQeTyIPJJTN6wDkURaEKOwOS8XpBfVvYarg1lppKR6Lklqc3EZZZs CYBtQZTNXbF79KRBhm03wjkP37BPI7ylQw9eCBgjtkOcVS7EaydbCRvOP1/tHTxuHtKP IDhRTw1PznAubebH+jK/J9BN9PBjuhyx9IvzPMzwjiFs+oVnJu102N1jPXtaNhhSnNSP bJQw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=l51oR3ke; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a10si13466192edq.316.2020.11.16.14.32.45; Mon, 16 Nov 2020 14:33:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=l51oR3ke; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388094AbgKPUod (ORCPT + 99 others); Mon, 16 Nov 2020 15:44:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46966 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387939AbgKPUoL (ORCPT ); Mon, 16 Nov 2020 15:44:11 -0500 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E29A5C0613D2 for ; Mon, 16 Nov 2020 12:44:10 -0800 (PST) Received: by mail-wr1-x444.google.com with SMTP id k2so20321470wrx.2 for ; Mon, 16 Nov 2020 12:44:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5CFjz03HJxHtdKmmeq3XI0pgEGq835KLMY12UZ/ZKTg=; b=l51oR3keMoKmPq/v1ISAlqHy4p/t+CQYtMrQtrP9vZnPMcERdLP/QHt+d0CT9gA/Ed SobfYR2CeQyAX0dOJWwTVbuhvYtnVgveuYzP3rbl3Ij8p3MCRVh0iYc64p9ZQqwbsVdV +HDWxeSVum9m9sMkdtyDTKxiyK3NR6dpkI87nPOBs5gP20q5woGOaKJipnSGcOaCr/3f qvW0h4o5auBjfBRhZWRRACLhjwctmBp3xNbSSrb6KhF3xlCw/QkGVQgs5PsluJQVitm3 fTprBP4rfDAsllrSEZg8y2fla9YfmqspG3gOWIvViQaQQlcvL/gp6db9g1rHt5WazShs ffbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5CFjz03HJxHtdKmmeq3XI0pgEGq835KLMY12UZ/ZKTg=; b=GEoutyc2H/9+tClojlM8MufO7uVjC8mDFkWtGLEu8OiUQ8oy74rN7oEgw0uJfCgiAK 0YSFsdsDt4LQ0w8dXpcpLt1qoR86fapWHpxBTxPjyv4DS2qUYh+cV/ID1PFJWU4IYXW5 yya+e2e/9gVIEmwhGZ9epKxWN2KG5ia57mY9nxbWnl6Xxu3wejZEzvk7AsE4EME1xAI2 rf3HQjiMUhhAGE187fRRj4/ZDyxPNEHpVsl1GMbhA3Hy4ugrmGDjTV4HubIjPHUz8Q6f nrLmTh0rZJfcaqj337c4Uz0lNVLtWRIZZ7ZMlUizm0IJC1FlywNmjkmIiY7jasECFzZ7 2X5g== X-Gm-Message-State: AOAM532ey4hhuqZgQTEKLF+SmHxzc7nGBKGoq+/7angRMgv9HkG/MKwZ I9Iy5QQV0NMYHNye0AM7h7Cshw== X-Received: by 2002:adf:c3c8:: with SMTP id d8mr21152047wrg.366.1605559449547; Mon, 16 Nov 2020 12:44:09 -0800 (PST) Received: from localhost ([2a01:4b00:8523:2d03:bc40:bd71:373a:1b33]) by smtp.gmail.com with ESMTPSA id i6sm531311wma.42.2020.11.16.12.44.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 16 Nov 2020 12:44:08 -0800 (PST) From: David Brazdil To: kvmarm@lists.cs.columbia.edu Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Marc Zyngier , James Morse , Julien Thierry , Suzuki K Poulose , Catalin Marinas , Will Deacon , Dennis Zhou , Tejun Heo , Christoph Lameter , Mark Rutland , Lorenzo Pieralisi , Quentin Perret , Andrew Scull , Andrew Walbran , kernel-team@android.com, David Brazdil Subject: [PATCH v2 22/24] kvm: arm64: Keep nVHE EL2 vector installed Date: Mon, 16 Nov 2020 20:43:16 +0000 Message-Id: <20201116204318.63987-23-dbrazdil@google.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201116204318.63987-1-dbrazdil@google.com> References: <20201116204318.63987-1-dbrazdil@google.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org KVM by default keeps the stub vector installed and installs the nVHE vector only briefly for init and later on demand. Change this policy to install the vector at init and then never uninstall it if the kernel was given the protected KVM command line parameter. Signed-off-by: David Brazdil --- arch/arm64/kvm/arm.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 49d2474f2a80..45bc7a6b9e0b 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -1443,7 +1443,8 @@ static void _kvm_arch_hardware_disable(void *discard) void kvm_arch_hardware_disable(void) { - _kvm_arch_hardware_disable(NULL); + if (!is_protected_kvm_enabled()) + _kvm_arch_hardware_disable(NULL); } #ifdef CONFIG_CPU_PM @@ -1486,11 +1487,13 @@ static struct notifier_block hyp_init_cpu_pm_nb = { static void __init hyp_cpu_pm_init(void) { - cpu_pm_register_notifier(&hyp_init_cpu_pm_nb); + if (!is_protected_kvm_enabled()) + cpu_pm_register_notifier(&hyp_init_cpu_pm_nb); } static void __init hyp_cpu_pm_exit(void) { - cpu_pm_unregister_notifier(&hyp_init_cpu_pm_nb); + if (!is_protected_kvm_enabled()) + cpu_pm_unregister_notifier(&hyp_init_cpu_pm_nb); } #else static inline void hyp_cpu_pm_init(void) @@ -1575,7 +1578,8 @@ static int init_subsystems(void) kvm_coproc_table_init(); out: - on_each_cpu(_kvm_arch_hardware_disable, NULL, 1); + if (err || !is_protected_kvm_enabled()) + on_each_cpu(_kvm_arch_hardware_disable, NULL, 1); return err; } -- 2.29.2.299.gdc1121823c-goog