Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp663578imm; Fri, 29 Jun 2018 04:27:23 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfZdO/oycnY3pCWuiJ3J0WvuX/2hJc/HS+dV+QGp/JCJ4My2aidR6KnYSutOb4XSivTDuMv X-Received: by 2002:aa7:810c:: with SMTP id b12-v6mr13962506pfi.79.1530271643388; Fri, 29 Jun 2018 04:27:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530271643; cv=none; d=google.com; s=arc-20160816; b=uxZHAsuWBMqijU9BtGp6zmCc6EYl+nSy6wfsTGa9LQZjyS5ZTzS7tev345QzwQSLY/ nOs2v2wuIbfOv0Q4e5Wpak+1sjVDNaeVaQ4ssox85gTdodXf3efcuVoD0nxSuVvvnpb3 vu1bJmMTn2NjyPXBvNalKBgZmhQFhdj1GFteTd8YaiWHKqpD7BLi+HniGr82Gl0s2RFz 0hguL+QTpAmBw7dQB48XpmEGlpirp8LZcpjDYoLNGW61VSPoqKfNdYVU/5M1swu1w4PE KilTOkYhGY9dFLVcCIbQKExvFnkBOKe2pg86upw/V3TBJKHNvQLLAERaBe2fOjhV8hhB IA7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=9p83jLmwMESbanbv48Pht50hpeQvQA3LmIG2axAY8Qw=; b=MPnebrqs6KGxzfLsBSZumAiYfITgOSkhUyTl9Ty3WuSDaP2UV0ql0EtMwJBw8yBA2q 4KakxFpFeejl2fi7fw+xp+zrK6vaRlvtS7X6xcO5R3o1D1sRN1MD6maq5K77e4Db2Ki/ uNO+QYV3OBVRb5oN5cIQwELYbQWPfizZO+NIaLe+W7wDVjZCdjMlPYFhkJJzsRSuz2qH qI3cZ2yRsu+BtXCQcfomaZU+CSfD3nKjt/GieVVuSlL7O72Ng9u301b4A88km9w4X5bj Z0inXhXJI1506djgfMDf29qE64EcP7v3MmDEtM93Mxn1f8aECohTlVwAiu4Nwwjh757d +jSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u12-v6si7932336pgb.280.2018.06.29.04.27.08; Fri, 29 Jun 2018 04:27:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965338AbeF2LQu (ORCPT + 99 others); Fri, 29 Jun 2018 07:16:50 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:60198 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965199AbeF2LQq (ORCPT ); Fri, 29 Jun 2018 07:16:46 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A40EB1682; Fri, 29 Jun 2018 04:16:45 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.206.73]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 4CA813F266; Fri, 29 Jun 2018 04:16:43 -0700 (PDT) From: Suzuki K Poulose To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, james.morse@arm.com, marc.zyngier@arm.com, cdall@kernel.org, eric.auger@redhat.com, julien.grall@arm.com, will.deacon@arm.com, catalin.marinas@arm.com, punit.agrawal@arm.com, qemu-devel@nongnu.org, Suzuki K Poulose Subject: [PATCH v3 12/20] kvm: arm64: Add helper for loading the stage2 setting for a VM Date: Fri, 29 Jun 2018 12:15:32 +0100 Message-Id: <1530270944-11351-13-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1530270944-11351-1-git-send-email-suzuki.poulose@arm.com> References: <1530270944-11351-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We load the stage2 context of a guest for different operations, including running the guest and tlb maintenance on behalf of the guest. As of now only the vttbr is private to the guest, but this is about to change with IPA per VM. Add a helper to load the stage2 configuration for a VM, which could do the right thing with the future changes. Cc: Christoffer Dall Cc: Marc Zyngier Signed-off-by: Suzuki K Poulose --- Changes since v2: - New patch --- arch/arm64/include/asm/kvm_hyp.h | 6 ++++++ arch/arm64/kvm/hyp/switch.c | 2 +- arch/arm64/kvm/hyp/tlb.c | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/arm64/include/asm/kvm_hyp.h b/arch/arm64/include/asm/kvm_hyp.h index 384c343..82f9994 100644 --- a/arch/arm64/include/asm/kvm_hyp.h +++ b/arch/arm64/include/asm/kvm_hyp.h @@ -155,5 +155,11 @@ void deactivate_traps_vhe_put(void); u64 __guest_enter(struct kvm_vcpu *vcpu, struct kvm_cpu_context *host_ctxt); void __noreturn __hyp_do_panic(unsigned long, ...); +/* Must be called from hyp code running at EL2 */ +static __always_inline void __hyp_text __load_guest_stage2(struct kvm *kvm) +{ + write_sysreg(kvm->arch.vttbr, vttbr_el2); +} + #endif /* __ARM64_KVM_HYP_H__ */ diff --git a/arch/arm64/kvm/hyp/switch.c b/arch/arm64/kvm/hyp/switch.c index d496ef5..355fb25 100644 --- a/arch/arm64/kvm/hyp/switch.c +++ b/arch/arm64/kvm/hyp/switch.c @@ -195,7 +195,7 @@ void deactivate_traps_vhe_put(void) static void __hyp_text __activate_vm(struct kvm *kvm) { - write_sysreg(kvm->arch.vttbr, vttbr_el2); + __load_guest_stage2(kvm); } static void __hyp_text __deactivate_vm(struct kvm_vcpu *vcpu) diff --git a/arch/arm64/kvm/hyp/tlb.c b/arch/arm64/kvm/hyp/tlb.c index 131c777..4dbd9c6 100644 --- a/arch/arm64/kvm/hyp/tlb.c +++ b/arch/arm64/kvm/hyp/tlb.c @@ -30,7 +30,7 @@ static void __hyp_text __tlb_switch_to_guest_vhe(struct kvm *kvm) * bits. Changing E2H is impossible (goodbye TTBR1_EL2), so * let's flip TGE before executing the TLB operation. */ - write_sysreg(kvm->arch.vttbr, vttbr_el2); + __load_guest_stage2(kvm); val = read_sysreg(hcr_el2); val &= ~HCR_TGE; write_sysreg(val, hcr_el2); @@ -39,7 +39,7 @@ static void __hyp_text __tlb_switch_to_guest_vhe(struct kvm *kvm) static void __hyp_text __tlb_switch_to_guest_nvhe(struct kvm *kvm) { - write_sysreg(kvm->arch.vttbr, vttbr_el2); + __load_guest_stage2(kvm); isb(); } -- 2.7.4