From patchwork Tue Jul 18 16:58:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jintack Lim X-Patchwork-Id: 108165 Delivered-To: patch@linaro.org Received: by 10.182.45.195 with SMTP id p3csp6156541obm; Tue, 18 Jul 2017 10:06:43 -0700 (PDT) X-Received: by 10.98.88.66 with SMTP id m63mr2697411pfb.51.1500397603627; Tue, 18 Jul 2017 10:06:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1500397603; cv=none; d=google.com; s=arc-20160816; b=Nqe9tUKfZOiVV9AWQmOPN9/r7r5Rl9YoYTKOebeUbsZcN1csvMOSojucbJmyYE3Jup U603F7tktZVNYFpgODuAnr36h9G7rvte6y3DeYX+bwciOaKeje/0wLBgKGcQ/yYeNYOV va+UGD2aODqEozl9q352tzLNCZr07zC/mJlI+gCEcE1bpUYBEXWQ4qV8RnfowqcK5F1D ArRLdmeQD9f8epsnr89FtOHv7aOQjL1liETZ8N78P2keqBKMV2yttT2a2NHXimlnDrLb CrZub+tao4Sp0tszCslhcLYKVASqW79geu4uHxi/KE9xm49eLBpfI9Nx+jOB6qHPz1QK R4bw== 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:dkim-signature:arc-authentication-results; bh=ZRWx2Swikq8DPW+kJomamLkrE5+EYLN8kUpHckOCxwI=; b=Sve0z7JkqANeIjqssKlL1YbadDc9iEB5WtQ6xt6sF3t/QwNe8DU2q+z2wzXFkCpAGg eCyZFdZyriHsYdBM+IwKuV+kjPhY6FJ4FYkghc0Omc8L7KuwxfQ0IAi7TDmbqcOi0Exv JHDWzOZRZU3X7V3xULrNwc8UiXIp9KBODaHsvC4mIZ6kA493R42ks34JdU1P10HJZOjv f5JnYgTN6Qq5QqBAnEqTdquPDm5I4nKDPTD3KKL92ujIe64BFL939E756qJ332jQNlgd DgsSdaLWjv9jJQG3k4YM8vovFCtstg4dJ3db3PbFxATQw82+2nxOHeS8GPvMfqRSqA1D RXhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.b=S8KJDMp+; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f34si2181694ple.580.2017.07.18.10.06.43; Tue, 18 Jul 2017 10:06:43 -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; dkim=pass header.i=@linaro.org header.b=S8KJDMp+; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752546AbdGRRGk (ORCPT + 25 others); Tue, 18 Jul 2017 13:06:40 -0400 Received: from mail-it0-f50.google.com ([209.85.214.50]:35899 "EHLO mail-it0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752213AbdGRRAQ (ORCPT ); Tue, 18 Jul 2017 13:00:16 -0400 Received: by mail-it0-f50.google.com with SMTP id a62so23798544itd.1 for ; Tue, 18 Jul 2017 10:00:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZRWx2Swikq8DPW+kJomamLkrE5+EYLN8kUpHckOCxwI=; b=S8KJDMp+iiFyPkWxVXRYUaiRmv7JSoYexcpWhR02CpeaV8zjAQ1TPVL+5cPomXa9El RcspmzgKfvXz2rr4+67bdaEEmEXFPKOyUI2GZtLruJTp7o0YZGFdfez2N/yK0paZa7Uo 1gtjz7yDxTXCnO/Nbn40ZTTPUAsAmOYrypngA= 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; bh=ZRWx2Swikq8DPW+kJomamLkrE5+EYLN8kUpHckOCxwI=; b=uE/1o8lNcwATNTegkEUWFV0tqnqhjlNWVanVWj5cb2CikchJrm7ge9TALo//gj3DBx BeOgd05FkghoJgm2wq7jjFKMw2ZBy4lnH6VY2cPgWFcpNyphHI1Oo8AVUBtRRXWU45cx aKa6nJaaQxN+ybeHFhq2gkY68Qaq5psPj13QI95O2ZwhFPmUdBoKhsbyQQnip8oBkKVN UB4IfMyDhL4taZBIBf3mVB+85Le7WBApnhmj6C9++DfExgovUJSqKypYdtUHt1h3tl/V fed6e2zv2Lz3coHlZ5RojpXo/2m8ZckWNvXX9CL4OuaFiZCHbZGyj5RiEvXp/7cF6G4s mOTw== X-Gm-Message-State: AIVw1139YgIMlSYZILRyUqsmvHCVOjoO+z+HWzog9Z6hpm+02gmojuTd grcX9rZA22kMv6jt X-Received: by 10.36.71.79 with SMTP id t76mr3144313itb.118.1500397214377; Tue, 18 Jul 2017 10:00:14 -0700 (PDT) Received: from node.jintackl-qv26972.kvmarm-pg0.wisc.cloudlab.us (c220g1-030822.wisc.cloudlab.us. [128.104.222.82]) by smtp.gmail.com with ESMTPSA id j96sm1413075ioo.49.2017.07.18.10.00.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 18 Jul 2017 10:00:13 -0700 (PDT) From: Jintack Lim To: kvmarm@lists.cs.columbia.edu, christoffer.dall@linaro.org, marc.zyngier@arm.com Cc: corbet@lwn.net, pbonzini@redhat.com, rkrcmar@redhat.com, linux@armlinux.org.uk, catalin.marinas@arm.com, will.deacon@arm.com, akpm@linux-foundation.org, mchehab@kernel.org, cov@codeaurora.org, daniel.lezcano@linaro.org, david.daney@cavium.com, mark.rutland@arm.com, suzuki.poulose@arm.com, stefan@hello-penguin.com, andy.gross@linaro.org, wcohen@redhat.com, ard.biesheuvel@linaro.org, shankerd@codeaurora.org, vladimir.murzin@arm.com, james.morse@arm.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Jintack Lim Subject: [RFC PATCH v2 23/38] KVM: arm64: Inject HVC exceptions to the virtual EL2 Date: Tue, 18 Jul 2017 11:58:49 -0500 Message-Id: <1500397144-16232-24-git-send-email-jintack.lim@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1500397144-16232-1-git-send-email-jintack.lim@linaro.org> References: <1500397144-16232-1-git-send-email-jintack.lim@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that the psci call is done by the smc instruction when nested virtualization is enabled, it is clear that all hvc instruction from the VM (including from the virtual EL2) are supposed to handled in the virtual EL2. Signed-off-by: Jintack Lim --- arch/arm64/kvm/handle_exit.c | 6 ++++++ 1 file changed, 6 insertions(+) -- 1.9.1 diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c index 6cf6b93..8b398b2 100644 --- a/arch/arm64/kvm/handle_exit.c +++ b/arch/arm64/kvm/handle_exit.c @@ -42,6 +42,12 @@ static int handle_hvc(struct kvm_vcpu *vcpu, struct kvm_run *run) kvm_vcpu_hvc_get_imm(vcpu)); vcpu->stat.hvc_exit_stat++; + /* Forward hvc instructions to the virtual EL2 if the guest has EL2. */ + if (nested_virt_in_use(vcpu)) { + kvm_inject_nested_sync(vcpu, kvm_vcpu_get_hsr(vcpu)); + return 1; + } + ret = kvm_psci_call(vcpu); if (ret < 0) { kvm_inject_undefined(vcpu);