From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6AD9D1A629 for ; Thu, 10 Nov 2022 19:04:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC9E6C433D7; Thu, 10 Nov 2022 19:04:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1668107044; bh=i95H10uekay+RA6wzlU9ZChG/pQGqzHO4SoBQ86elTE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c85xoJIRgbO0/NFiP3LATskVa0QLFzir933dS2B8UrvDJsBtOJU30oVaq3YYCiCjY b32+rRGaIyaTHmMsx+P1eAWYTjncUpLBk3Ut4m6ZCeBOwO67Sq/bJCCKXwaIFTkqcY MgwX2gfuDtH9FmpkOUHWKhp96SgQbWrjC0VqvOvfYAIzV213ynuQZ9cd3cUFeDEVEN 54u80dPqovNnBRXcP1MsyZQ8XCawOPPx5sLU3tEdsKnzJ7Pa040fktK1Mxw5SG2JBV BcVkwJLfVk8o/YZ2fWSClzbunQt31hgVImeiV8/0UXwxd+FK6tSuuRoU7B7NwG2+m8 va5VFvpkCjcuw== From: Will Deacon To: kvmarm@lists.linux.dev Cc: Will Deacon , Sean Christopherson , Vincent Donnefort , Alexandru Elisei , Catalin Marinas , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , James Morse , Chao Peng , Quentin Perret , Suzuki K Poulose , Mark Rutland , Fuad Tabba , Oliver Upton , Marc Zyngier , kernel-team@android.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 15/26] KVM: arm64: Initialise hypervisor copies of host symbols unconditionally Date: Thu, 10 Nov 2022 19:02:48 +0000 Message-Id: <20221110190259.26861-16-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20221110190259.26861-1-will@kernel.org> References: <20221110190259.26861-1-will@kernel.org> Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The nVHE object at EL2 maintains its own copies of some host variables so that, when pKVM is enabled, the host cannot directly modify the hypervisor state. When running in normal nVHE mode, however, these variables are still mirrored at EL2 but are not initialised. Initialise the hypervisor symbols from the host copies regardless of pKVM, ensuring that any reference to this data at EL2 with normal nVHE will return a sensibly initialised value. Reviewed-by: Philippe Mathieu-Daudé Tested-by: Vincent Donnefort Signed-off-by: Will Deacon --- arch/arm64/kvm/arm.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 30d6fc5d3a93..584626e11797 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -1884,11 +1884,8 @@ static int do_pkvm_init(u32 hyp_va_bits) return ret; } -static int kvm_hyp_init_protection(u32 hyp_va_bits) +static void kvm_hyp_init_symbols(void) { - void *addr = phys_to_virt(hyp_mem_base); - int ret; - kvm_nvhe_sym(id_aa64pfr0_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64PFR0_EL1); kvm_nvhe_sym(id_aa64pfr1_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64PFR1_EL1); kvm_nvhe_sym(id_aa64isar0_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64ISAR0_EL1); @@ -1897,6 +1894,12 @@ static int kvm_hyp_init_protection(u32 hyp_va_bits) kvm_nvhe_sym(id_aa64mmfr0_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64MMFR0_EL1); kvm_nvhe_sym(id_aa64mmfr1_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64MMFR1_EL1); kvm_nvhe_sym(id_aa64mmfr2_el1_sys_val) = read_sanitised_ftr_reg(SYS_ID_AA64MMFR2_EL1); +} + +static int kvm_hyp_init_protection(u32 hyp_va_bits) +{ + void *addr = phys_to_virt(hyp_mem_base); + int ret; ret = create_hyp_mappings(addr, addr + hyp_mem_size, PAGE_HYP); if (ret) @@ -2071,6 +2074,8 @@ static int init_hyp_mode(void) cpu_prepare_hyp_mode(cpu); } + kvm_hyp_init_symbols(); + if (is_protected_kvm_enabled()) { init_cpu_logical_map(); @@ -2078,9 +2083,7 @@ static int init_hyp_mode(void) err = -ENODEV; goto out_err; } - } - if (is_protected_kvm_enabled()) { err = kvm_hyp_init_protection(hyp_va_bits); if (err) { kvm_err("Failed to init hyp memory protection\n"); -- 2.38.1.431.g37b22c650d-goog 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 31E19C433FE for ; Thu, 10 Nov 2022 19:13:52 +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:References:In-Reply-To: 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: List-Owner; bh=EZv8T/hazkKWw9t0xV8UE+RsYNf1CH9QB3jalnurNHw=; b=DWxgniIRkTfMm/ fMTEOjKxjCAMGjUdEy1eQNEEEH51Q8MTFmQ3SJ2Jv3Hxr5K8rKHBJJlfFE/fLdfGjJvPnKzcXl/5g f2BRjUR7jlO5Tmi9GwqPpLA0m1n22kkIAN+qNKsrxmhJrjjAp5yiso2ReDJ0odaVcLy/xG+ZB9uAo Wdl6ZTn38fbdtyENSIygo3NuzPLJ9kgiqzh4Q4epO6Ac/pv5a9B55Mthk7pNX2skonRIp5d7VOQ+Z yVHY6GSI4vYz23t2pGPY9HrSFiGaOdQyyAU1ZHOLGBompN+kWI8CwZVEy8VbSM62Ww7UoQv/ldwvG k/ZeNQ79gKnVTzSxOWDA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1otCyg-008ZFv-PE; Thu, 10 Nov 2022 19:12:43 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1otCqL-008SU4-2h for linux-arm-kernel@lists.infradead.org; Thu, 10 Nov 2022 19:04:07 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A1E0C61E10; Thu, 10 Nov 2022 19:04:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC9E6C433D7; Thu, 10 Nov 2022 19:04:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1668107044; bh=i95H10uekay+RA6wzlU9ZChG/pQGqzHO4SoBQ86elTE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c85xoJIRgbO0/NFiP3LATskVa0QLFzir933dS2B8UrvDJsBtOJU30oVaq3YYCiCjY b32+rRGaIyaTHmMsx+P1eAWYTjncUpLBk3Ut4m6ZCeBOwO67Sq/bJCCKXwaIFTkqcY MgwX2gfuDtH9FmpkOUHWKhp96SgQbWrjC0VqvOvfYAIzV213ynuQZ9cd3cUFeDEVEN 54u80dPqovNnBRXcP1MsyZQ8XCawOPPx5sLU3tEdsKnzJ7Pa040fktK1Mxw5SG2JBV BcVkwJLfVk8o/YZ2fWSClzbunQt31hgVImeiV8/0UXwxd+FK6tSuuRoU7B7NwG2+m8 va5VFvpkCjcuw== From: Will Deacon To: kvmarm@lists.linux.dev Cc: Will Deacon , Sean Christopherson , Vincent Donnefort , Alexandru Elisei , Catalin Marinas , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , James Morse , Chao Peng , Quentin Perret , Suzuki K Poulose , Mark Rutland , Fuad Tabba , Oliver Upton , Marc Zyngier , kernel-team@android.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 15/26] KVM: arm64: Initialise hypervisor copies of host symbols unconditionally Date: Thu, 10 Nov 2022 19:02:48 +0000 Message-Id: <20221110190259.26861-16-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20221110190259.26861-1-will@kernel.org> References: <20221110190259.26861-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221110_110405_236450_9C69A9DA X-CRM114-Status: GOOD ( 14.70 ) 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhlIG5WSEUgb2JqZWN0IGF0IEVMMiBtYWludGFpbnMgaXRzIG93biBjb3BpZXMgb2Ygc29tZSBo b3N0IHZhcmlhYmxlcwpzbyB0aGF0LCB3aGVuIHBLVk0gaXMgZW5hYmxlZCwgdGhlIGhvc3QgY2Fu bm90IGRpcmVjdGx5IG1vZGlmeSB0aGUKaHlwZXJ2aXNvciBzdGF0ZS4gV2hlbiBydW5uaW5nIGlu IG5vcm1hbCBuVkhFIG1vZGUsIGhvd2V2ZXIsIHRoZXNlCnZhcmlhYmxlcyBhcmUgc3RpbGwgbWly cm9yZWQgYXQgRUwyIGJ1dCBhcmUgbm90IGluaXRpYWxpc2VkLgoKSW5pdGlhbGlzZSB0aGUgaHlw ZXJ2aXNvciBzeW1ib2xzIGZyb20gdGhlIGhvc3QgY29waWVzIHJlZ2FyZGxlc3Mgb2YKcEtWTSwg ZW5zdXJpbmcgdGhhdCBhbnkgcmVmZXJlbmNlIHRvIHRoaXMgZGF0YSBhdCBFTDIgd2l0aCBub3Jt YWwgblZIRQp3aWxsIHJldHVybiBhIHNlbnNpYmx5IGluaXRpYWxpc2VkIHZhbHVlLgoKUmV2aWV3 ZWQtYnk6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOpIDxwaGlsbWRAbGluYXJvLm9yZz4KVGVzdGVk LWJ5OiBWaW5jZW50IERvbm5lZm9ydCA8dmRvbm5lZm9ydEBnb29nbGUuY29tPgpTaWduZWQtb2Zm LWJ5OiBXaWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgotLS0KIGFyY2gvYXJtNjQva3ZtL2Fy bS5jIHwgMTUgKysrKysrKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCsp LCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2FybS5jIGIvYXJj aC9hcm02NC9rdm0vYXJtLmMKaW5kZXggMzBkNmZjNWQzYTkzLi41ODQ2MjZlMTE3OTcgMTAwNjQ0 Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL2FybS5jCisrKyBiL2FyY2gvYXJtNjQva3ZtL2FybS5jCkBA IC0xODg0LDExICsxODg0LDggQEAgc3RhdGljIGludCBkb19wa3ZtX2luaXQodTMyIGh5cF92YV9i aXRzKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQga3ZtX2h5cF9pbml0X3Byb3RlY3Rp b24odTMyIGh5cF92YV9iaXRzKQorc3RhdGljIHZvaWQga3ZtX2h5cF9pbml0X3N5bWJvbHModm9p ZCkKIHsKLQl2b2lkICphZGRyID0gcGh5c190b192aXJ0KGh5cF9tZW1fYmFzZSk7Ci0JaW50IHJl dDsKLQogCWt2bV9udmhlX3N5bShpZF9hYTY0cGZyMF9lbDFfc3lzX3ZhbCkgPSByZWFkX3Nhbml0 aXNlZF9mdHJfcmVnKFNZU19JRF9BQTY0UEZSMF9FTDEpOwogCWt2bV9udmhlX3N5bShpZF9hYTY0 cGZyMV9lbDFfc3lzX3ZhbCkgPSByZWFkX3Nhbml0aXNlZF9mdHJfcmVnKFNZU19JRF9BQTY0UEZS MV9FTDEpOwogCWt2bV9udmhlX3N5bShpZF9hYTY0aXNhcjBfZWwxX3N5c192YWwpID0gcmVhZF9z YW5pdGlzZWRfZnRyX3JlZyhTWVNfSURfQUE2NElTQVIwX0VMMSk7CkBAIC0xODk3LDYgKzE4OTQs MTIgQEAgc3RhdGljIGludCBrdm1faHlwX2luaXRfcHJvdGVjdGlvbih1MzIgaHlwX3ZhX2JpdHMp CiAJa3ZtX252aGVfc3ltKGlkX2FhNjRtbWZyMF9lbDFfc3lzX3ZhbCkgPSByZWFkX3Nhbml0aXNl ZF9mdHJfcmVnKFNZU19JRF9BQTY0TU1GUjBfRUwxKTsKIAlrdm1fbnZoZV9zeW0oaWRfYWE2NG1t ZnIxX2VsMV9zeXNfdmFsKSA9IHJlYWRfc2FuaXRpc2VkX2Z0cl9yZWcoU1lTX0lEX0FBNjRNTUZS MV9FTDEpOwogCWt2bV9udmhlX3N5bShpZF9hYTY0bW1mcjJfZWwxX3N5c192YWwpID0gcmVhZF9z YW5pdGlzZWRfZnRyX3JlZyhTWVNfSURfQUE2NE1NRlIyX0VMMSk7Cit9CisKK3N0YXRpYyBpbnQg a3ZtX2h5cF9pbml0X3Byb3RlY3Rpb24odTMyIGh5cF92YV9iaXRzKQoreworCXZvaWQgKmFkZHIg PSBwaHlzX3RvX3ZpcnQoaHlwX21lbV9iYXNlKTsKKwlpbnQgcmV0OwogCiAJcmV0ID0gY3JlYXRl X2h5cF9tYXBwaW5ncyhhZGRyLCBhZGRyICsgaHlwX21lbV9zaXplLCBQQUdFX0hZUCk7CiAJaWYg KHJldCkKQEAgLTIwNzEsNiArMjA3NCw4IEBAIHN0YXRpYyBpbnQgaW5pdF9oeXBfbW9kZSh2b2lk KQogCQljcHVfcHJlcGFyZV9oeXBfbW9kZShjcHUpOwogCX0KIAorCWt2bV9oeXBfaW5pdF9zeW1i b2xzKCk7CisKIAlpZiAoaXNfcHJvdGVjdGVkX2t2bV9lbmFibGVkKCkpIHsKIAkJaW5pdF9jcHVf bG9naWNhbF9tYXAoKTsKIApAQCAtMjA3OCw5ICsyMDgzLDcgQEAgc3RhdGljIGludCBpbml0X2h5 cF9tb2RlKHZvaWQpCiAJCQllcnIgPSAtRU5PREVWOwogCQkJZ290byBvdXRfZXJyOwogCQl9Ci0J fQogCi0JaWYgKGlzX3Byb3RlY3RlZF9rdm1fZW5hYmxlZCgpKSB7CiAJCWVyciA9IGt2bV9oeXBf aW5pdF9wcm90ZWN0aW9uKGh5cF92YV9iaXRzKTsKIAkJaWYgKGVycikgewogCQkJa3ZtX2Vycigi RmFpbGVkIHRvIGluaXQgaHlwIG1lbW9yeSBwcm90ZWN0aW9uXG4iKTsKLS0gCjIuMzguMS40MzEu ZzM3YjIyYzY1MGQtZ29vZwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK