From patchwork Wed Jun 3 23:56:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Mattson X-Patchwork-Id: 11586727 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 65E5890 for ; Wed, 3 Jun 2020 23:56:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4C62220738 for ; Wed, 3 Jun 2020 23:56:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="VOAX6RwQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726363AbgFCX4h (ORCPT ); Wed, 3 Jun 2020 19:56:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725821AbgFCX4h (ORCPT ); Wed, 3 Jun 2020 19:56:37 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE87EC08C5C0 for ; Wed, 3 Jun 2020 16:56:35 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id k15so6008866ybt.4 for ; Wed, 03 Jun 2020 16:56:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=8LGvgjxPtHovpdfipQl4OzIV0OZgS4Psratbe52QpYI=; b=VOAX6RwQTnpOzzetJzQKe+GL0dgnwPt0KQLTMKHo6Z+LqlGTg1frUdwKN6qPHZVoZB g20JS1pdxSuIFVeWLqLcWnrUqVTJ3jW5Y4euAJerQUAScpvc8WK3ObscO3srbDVMehbS 0nkuAs1GCcJr4PgdHq9NiDHE1qSMi5l37bJxRgkbCuH1mnnh9F/FQtbBiDL7RfRltgl3 1S0vCoCPEAMX1uFbv8FomMYFj2NsK0JVETaNE0T8UbRj0kwnWllWW1Ws9gY+4er25Cqd GV4KRPRixSaBoncQJBnSV/GbF1OgoG6TEsZVQFu4WrP1jy4G4T3hwiguOCSkQs8VSvSh xLzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=8LGvgjxPtHovpdfipQl4OzIV0OZgS4Psratbe52QpYI=; b=f/K8qS8MsfmLmEnQ4kxBRHSHlVXmyd/kLN8cWGoLlJHCMAOUz4VHgB11XqgR4f0ZWb UVSyNlGehVDEHgRPC30Bp2gJ+CixI3T4q5njt8NqCbg199MNWr6gMYR5H5ycTItgYn+c Sj/23+3f5CDAWRGTRnSk2obl/bLuR7HE1/A1NyO7NHCsVPm0a7aKJeRCB9dYJUdOgHpr urDKSwWl83BwAqLb5LDM1AJ1zBraJYiH03Vshe9BK/IZvaEkzSo8yHBth3hbMQuoSX98 k+bP1D4cRRxjVlPArYsicr6intFq/9Yejotitc7YBgKBtVwa72gfq5P0SrPI35d4hRsj BEsw== X-Gm-Message-State: AOAM532WhzVsDxch1bIBLnXXH0vloWAO2JoiPkh1x4fvurxPHdMAB95Q anjcOEuV9WGR9BsD2InQKjMQ7Zh70u4va0XMTa+TMlIxEdNcqZItE2FYtZaT4Hl6j02ACmdZYty 71FP/7J8k0fCxcy5HXohl6PSVCGS75GxWe1btAXPnlF3kRwyxbfFPkUQEVkjPDIg= X-Google-Smtp-Source: ABdhPJw6+P/WbcsMdK9Mni+UnFCi7g7O2DHxxrT6Aw2CqAiR/3DIaOvChvumeVuP4v/ctDwRlBSC06yFqWfmIQ== X-Received: by 2002:a25:6ad5:: with SMTP id f204mr3537546ybc.147.1591228594848; Wed, 03 Jun 2020 16:56:34 -0700 (PDT) Date: Wed, 3 Jun 2020 16:56:18 -0700 In-Reply-To: <20200603235623.245638-1-jmattson@google.com> Message-Id: <20200603235623.245638-2-jmattson@google.com> Mime-Version: 1.0 References: <20200603235623.245638-1-jmattson@google.com> X-Mailer: git-send-email 2.27.0.rc2.251.g90737beb825-goog Subject: [PATCH v4 1/6] kvm: svm: Prefer vcpu->cpu to raw_smp_processor_id() From: Jim Mattson To: kvm@vger.kernel.org, Paolo Bonzini Cc: Liran Alon , Oliver Upton , Peter Shier , Sean Christopherson , Jim Mattson Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org The current logical processor id is cached in vcpu->cpu. Use it instead of raw_smp_processor_id() when a kvm_vcpu struct is available. Signed-off-by: Jim Mattson Reviewed-by: Oliver Upton --- arch/x86/kvm/svm/svm.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 9e333b91ff78..f0dd481be435 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -2990,21 +2990,18 @@ static int handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) static void reload_tss(struct kvm_vcpu *vcpu) { - int cpu = raw_smp_processor_id(); + struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu); - struct svm_cpu_data *sd = per_cpu(svm_data, cpu); sd->tss_desc->type = 9; /* available 32/64-bit TSS */ load_TR_desc(); } static void pre_svm_run(struct vcpu_svm *svm) { - int cpu = raw_smp_processor_id(); - - struct svm_cpu_data *sd = per_cpu(svm_data, cpu); + struct svm_cpu_data *sd = per_cpu(svm_data, svm->vcpu.cpu); if (sev_guest(svm->vcpu.kvm)) - return pre_sev_run(svm, cpu); + return pre_sev_run(svm, svm->vcpu.cpu); /* FIXME: handle wraparound of asid_generation */ if (svm->asid_generation != sd->asid_generation) From patchwork Wed Jun 3 23:56:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Mattson X-Patchwork-Id: 11586729 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 27695138C for ; Wed, 3 Jun 2020 23:56:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0EDC420738 for ; Wed, 3 Jun 2020 23:56:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="aXFGHUo/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726380AbgFCX4j (ORCPT ); Wed, 3 Jun 2020 19:56:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726371AbgFCX4i (ORCPT ); Wed, 3 Jun 2020 19:56:38 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 602D8C08C5C0 for ; Wed, 3 Jun 2020 16:56:37 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id u6so5899424ybo.18 for ; Wed, 03 Jun 2020 16:56:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=esuDLQ5YIiqnB7jmaMDCOvaz2pEkozZla8OGqrKe1Bg=; b=aXFGHUo/LkSP/Cc2GO6tC0Bv96PpTh1D1HN8AHPF4R8/ZwhcFOS/Ni8pIg3XNGdKCb Kmr202XnPBORQensek1r3RgR8yBb+5sGaaQBFgcWmIc5rsm8wtZPn2JTihVieH9WXVkd UILUal53DbMV+WVEp+4ZEcfuApyP4adCIbbQjUo3Ro0Tu0YDw60TFZbCdzudgMA0bk5V YJnbGif7Qi1iR6eJTDouwrS0d3X3bC0KBOUNrD/v+lK7M4Gu910eK7GsjNpmhWR3zn/h Ti69vrb5xvStIUEzOdIWpX72dC378zkQsKdWr/wZfp8i753LRO/Hk4wnSLKfWTueSD6Y 2RJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=esuDLQ5YIiqnB7jmaMDCOvaz2pEkozZla8OGqrKe1Bg=; b=Fdx5NVJMpD/3oeP2Zi1DMLr7ebLFyqj1cdPCKz3fZpPCQdfvfJwiu1lgjFOV8IQxW2 W3GHateGOgLJj9doHOCufd8GXF6zIVRnrTyTg3zcvp4C8LmnQUgmwIy9sITm95q1t/D7 8t9XylGbVYwr3kdIrf37asRo24yGWIp3sFBGa10DdEPxQ6eOL1CbkadTxw1Ev/2ZIhNr /Z1Pp12wxcZg2yAL2KzvOaUhg1CkbDluewDUhNTomeaqswf5ZUn6zAGuQokIOrNPwqY3 T77HpN2a2uZkmhWieQVXBy0bCwAQBjysFfBEL1Odu2SSjuhuTrHdcLvn9FgFdNVc6Cx7 lQWw== X-Gm-Message-State: AOAM532KMDPDy4TGOSiU4PyOaNPxaGTPW4JI4m/ChzNHUjcI5aDmIPmS KziUdI2xefrwzJIfO2UxuVy1DW/CB2oia84LWoSzSCQen4bfiSHxPsUopemM8kvPG4v0gguuotI ib5b5wiSaLfm8DeKhWBZBYew5a0ActBw12upgqU7e08mr2ohQK+WD7aAVo0TvO4k= X-Google-Smtp-Source: ABdhPJzkMMq27plk7U4783x4sWW7rNc08QIZuKAOEEwBlRRDy91TUc70pY5ySI0lrCDJMQMe9gx1sJrw4ikFfg== X-Received: by 2002:a25:dd87:: with SMTP id u129mr4428129ybg.83.1591228596537; Wed, 03 Jun 2020 16:56:36 -0700 (PDT) Date: Wed, 3 Jun 2020 16:56:19 -0700 In-Reply-To: <20200603235623.245638-1-jmattson@google.com> Message-Id: <20200603235623.245638-3-jmattson@google.com> Mime-Version: 1.0 References: <20200603235623.245638-1-jmattson@google.com> X-Mailer: git-send-email 2.27.0.rc2.251.g90737beb825-goog Subject: [PATCH v4 2/6] kvm: svm: Always set svm->last_cpu on VMRUN From: Jim Mattson To: kvm@vger.kernel.org, Paolo Bonzini Cc: Liran Alon , Oliver Upton , Peter Shier , Sean Christopherson , Jim Mattson Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Previously, this field was only set when using SEV. Set it for all vCPU configurations, so that it can be communicated to userspace for diagnosing potential hardware errors. Signed-off-by: Jim Mattson Reviewed-by: Oliver Upton Reviewed-by: Peter Shier --- arch/x86/kvm/svm/sev.c | 1 - arch/x86/kvm/svm/svm.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 89f7f3aebd31..aa61d5d1e7f3 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1184,7 +1184,6 @@ void pre_sev_run(struct vcpu_svm *svm, int cpu) svm->last_cpu == cpu) return; - svm->last_cpu = cpu; sd->sev_vmcbs[asid] = svm->vmcb; svm->vmcb->control.tlb_ctl = TLB_CONTROL_FLUSH_ASID; mark_dirty(svm->vmcb, VMCB_ASID); diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index f0dd481be435..442dbb763639 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -3394,6 +3394,7 @@ static fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) */ x86_spec_ctrl_set_guest(svm->spec_ctrl, svm->virt_spec_ctrl); + svm->last_cpu = vcpu->cpu; __svm_vcpu_run(svm->vmcb_pa, (unsigned long *)&svm->vcpu.arch.regs); #ifdef CONFIG_X86_64 From patchwork Wed Jun 3 23:56:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Mattson X-Patchwork-Id: 11586731 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 52358138C for ; Wed, 3 Jun 2020 23:56:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3AC9120738 for ; Wed, 3 Jun 2020 23:56:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="smSuSqbm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726419AbgFCX4l (ORCPT ); Wed, 3 Jun 2020 19:56:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59390 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726409AbgFCX4k (ORCPT ); Wed, 3 Jun 2020 19:56:40 -0400 Received: from mail-qk1-x74a.google.com (mail-qk1-x74a.google.com [IPv6:2607:f8b0:4864:20::74a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 43335C08C5C0 for ; Wed, 3 Jun 2020 16:56:39 -0700 (PDT) Received: by mail-qk1-x74a.google.com with SMTP id 16so3069736qka.15 for ; Wed, 03 Jun 2020 16:56:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=w71DdQoWum2Kp6HNHDyrfluiKwehR5flNSkldp7Yl4Q=; b=smSuSqbmLTccA6vOZlnRM/vE0/sge5FA19Nc5PVOZ+kQkwmQ37IiTqru4rLIB3E/yI vqcNwdYxFep2OdAiOgE0121ZfmmHXwfmDld8s5m6PfwWAYwpB7UqFJ/wiJYc1xn9ezXS +bbDIwDHVmIQCOnRvGX89q+bmGKpnSgk2YvG/xpY+q7fWNdeRMlytoGUhHuzqv+RWF1u k2lzWYj+RLO4QVFRESrUcE43WJr/6xdLUfvC3BH+/fnxz/Rl69VlT4HR4CBseen44wxo JHkBUlAhHP31vjwQ/8xWXYtE1GjlFjNp4kbwQBKom4z6Fm+EFMY5NaNpRnzztmYwdpUz u17A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=w71DdQoWum2Kp6HNHDyrfluiKwehR5flNSkldp7Yl4Q=; b=kXn7t4on7+w4THgVjMWV+nqlSbHTsHAoXEK8Cj7P1w6hlwy6mwPfQsvNcnpkEYghDy mz/ArsYLV2xCY2lzDhhhmDCND1qM1vnhqhqd1+Y+7lKg0wuBAeMr4osuMXiqUXNnvBSr vGuQll1v9n+wDRjZTYFdjHZbatpxSTLEzBHC5WfhfcNV3XK18yoakNeibqnU93IdzpBn n0yPgHKGyDVPtBHeVFybDKuGvDNoj6noItoj2lJ6nHYNDc02sVT6n0NNHkwCyPaUhOJl Vlj9H5FsnkjdA7Kw/Z0eFGZWBPZSxDr/euGxuZcDIjnqDFF7rG5qNLWuvFShxGWGOtR2 esIw== X-Gm-Message-State: AOAM532bgRcplEqxRP65dE7wtb2n8DmZGm9h8dGphiThxmKGmtrOzOIE KXMgZtKr7LQcNkmZrfmnk+SczsDXY7t0RW9jcW1KXzw/925ExI0m6qG/EdBcbLqIZs7Tol+z7Lp re4RhGpFnbYfuZGBr9D+YZClzNBvpw71ynn8N4QwPbXWWIKF68yV94xZls+8/0g4= X-Google-Smtp-Source: ABdhPJxPcmxK3XHmCKL9nTYT4vJYNFxER2QLv1pIoAATcju0Hv2rQ3KTC6n3u9ivCYADrvoi1fsUsRqy4hXH8Q== X-Received: by 2002:ad4:472f:: with SMTP id l15mr2342045qvz.52.1591228598212; Wed, 03 Jun 2020 16:56:38 -0700 (PDT) Date: Wed, 3 Jun 2020 16:56:20 -0700 In-Reply-To: <20200603235623.245638-1-jmattson@google.com> Message-Id: <20200603235623.245638-4-jmattson@google.com> Mime-Version: 1.0 References: <20200603235623.245638-1-jmattson@google.com> X-Mailer: git-send-email 2.27.0.rc2.251.g90737beb825-goog Subject: [PATCH v4 3/6] kvm: vmx: Add last_cpu to struct vcpu_vmx From: Jim Mattson To: kvm@vger.kernel.org, Paolo Bonzini Cc: Liran Alon , Oliver Upton , Peter Shier , Sean Christopherson , Jim Mattson Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org As we already do in svm, record the last logical processor on which a vCPU has run, so that it can be communicated to userspace for potential hardware errors. Signed-off-by: Jim Mattson Reviewed-by: Oliver Upton Reviewed-by: Peter Shier --- arch/x86/kvm/vmx/vmx.c | 1 + arch/x86/kvm/vmx/vmx.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 170cc76a581f..42856970d3b8 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -6730,6 +6730,7 @@ static fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu) if (vcpu->arch.cr2 != read_cr2()) write_cr2(vcpu->arch.cr2); + vmx->last_cpu = vcpu->cpu; vmx->fail = __vmx_vcpu_run(vmx, (unsigned long *)&vcpu->arch.regs, vmx->loaded_vmcs->launched); diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h index 672c28f17e49..8a1e833cf4fb 100644 --- a/arch/x86/kvm/vmx/vmx.h +++ b/arch/x86/kvm/vmx/vmx.h @@ -302,6 +302,9 @@ struct vcpu_vmx { u64 ept_pointer; struct pt_desc pt_desc; + + /* which host CPU was used for running this vcpu */ + unsigned int last_cpu; }; enum ept_pointers_status { From patchwork Wed Jun 3 23:56:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Mattson X-Patchwork-Id: 11586733 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 E896690 for ; Wed, 3 Jun 2020 23:56:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C706C20679 for ; Wed, 3 Jun 2020 23:56:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="XHy9n1Xi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726480AbgFCX4n (ORCPT ); Wed, 3 Jun 2020 19:56:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726410AbgFCX4m (ORCPT ); Wed, 3 Jun 2020 19:56:42 -0400 Received: from mail-qv1-xf4a.google.com (mail-qv1-xf4a.google.com [IPv6:2607:f8b0:4864:20::f4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D07FEC08C5C0 for ; Wed, 3 Jun 2020 16:56:40 -0700 (PDT) Received: by mail-qv1-xf4a.google.com with SMTP id h6so2971388qvb.23 for ; Wed, 03 Jun 2020 16:56:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=RZe2iTzkFTucjCz18OJF8aeEcSZVzJ9FXQMhSY4aNNY=; b=XHy9n1Xip2plnj0s62bfJ6G1IMfNWQaYW1MO8vtjm2g8nESGoJl47ap/pxjX57gsq5 hwRRo/Kdfg1buEOQY97J7UQ6Pto6lzsSn/Rn7OJ1eP1/OmSbwwPhfWWRmjrAoRXyGENd gWxhBJoAYMzY4mOuHndFcRr+EbzBAvjExCYHjKOgqa7a8zOWncJ8h0dxvOac2he77Cni vfX6pEFsDy0K9O3f8q4UyRonyL0lUFqNj0bWeWXkQwQ9C2ebkh9PgGI+NVYJUqhcYQIx 25Le/rBRd7JvNeLdDfmYs35iwG5Q023gZ5rrYkD38W+Wy5TN1WTl2WdO/dYVHGSlwqZq FtkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=RZe2iTzkFTucjCz18OJF8aeEcSZVzJ9FXQMhSY4aNNY=; b=IYdycCCI2WD582tw2PVmWC+DDNL7KALC262w5DyHyVbuc2R6RMLH4PliNbnSmPpJql bGm6Qa+GrXVW6itu8ECBszx4Fk45Y6FYNiM2IyZYbCzTUMp5T7d9ZAahXQil2y8JIsyE 6FAGWZ1Vv5jwkdcwQb1Rjw3dKnPKDSweLSDhvA0nDzYoqBIvPXFVUkWN5KSGdyne0NSl Bfrfl5o5rF9h8tk6jZc5L6lS+Xxwl8Y8JYm+/WNgiYgZMVJcVhO04mjI0rBujWYqX4R7 mmoSqFt0A++JoxmYRgw+ShL+ThKGcMNP4oKEkcbVhl8vndsU3ag8iRUHNLbZy6Uglh5C Bpaw== X-Gm-Message-State: AOAM5307dJtX/2pNWDABTfu8DqCJ4HyQpOd1CBa0U06AlC5Il3Brx7aB /+YQhYy/JkZb1ja6iru3XkkujuCsaEIBD9eRr0skdJKA9GedmWdnYnmajXPGOTsQtVoC1qLWn+u fXA4YufTdDFnuX9sKkzBhqMC2zxoWKLUSAOt8huNCF718xHWoFEUA7ZObJU/4tQ8= X-Google-Smtp-Source: ABdhPJzoTm4KnkTcJDEXpkSIUuyD/b/VGbiQghIe2m7TwSvEfjp6ALoCNK+uPF1JunTAGT8IG3vJwM0vUm3zVA== X-Received: by 2002:a05:6214:1804:: with SMTP id o4mr2331023qvw.27.1591228599905; Wed, 03 Jun 2020 16:56:39 -0700 (PDT) Date: Wed, 3 Jun 2020 16:56:21 -0700 In-Reply-To: <20200603235623.245638-1-jmattson@google.com> Message-Id: <20200603235623.245638-5-jmattson@google.com> Mime-Version: 1.0 References: <20200603235623.245638-1-jmattson@google.com> X-Mailer: git-send-email 2.27.0.rc2.251.g90737beb825-goog Subject: [PATCH v4 4/6] kvm: x86: Add "last CPU" to some KVM_EXIT information From: Jim Mattson To: kvm@vger.kernel.org, Paolo Bonzini Cc: Liran Alon , Oliver Upton , Peter Shier , Sean Christopherson , Jim Mattson Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org More often than not, a failed VM-entry in an x86 production environment is induced by a defective CPU. To help identify the bad hardware, include the id of the last logical CPU to run a vCPU in the information provided to userspace on a KVM exit for failed VM-entry or for KVM internal errors not associated with emulation. The presence of this additional information is indicated by a new capability, KVM_CAP_LAST_CPU. Signed-off-by: Jim Mattson Reviewed-by: Oliver Upton Reviewed-by: Peter Shier --- Documentation/virt/kvm/api.rst | 1 + arch/x86/kvm/svm/svm.c | 4 +++- arch/x86/kvm/vmx/vmx.c | 10 ++++++++-- arch/x86/kvm/x86.c | 1 + include/uapi/linux/kvm.h | 2 ++ 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst index d280af5345df..17db8b68c165 100644 --- a/Documentation/virt/kvm/api.rst +++ b/Documentation/virt/kvm/api.rst @@ -4792,6 +4792,7 @@ hardware_exit_reason. /* KVM_EXIT_FAIL_ENTRY */ struct { __u64 hardware_entry_failure_reason; + __u32 cpu; /* if KVM_LAST_CPU */ } fail_entry; If exit_reason is KVM_EXIT_FAIL_ENTRY, the vcpu could not be run due diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 442dbb763639..938be4172bab 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -2945,6 +2945,7 @@ static int handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) kvm_run->exit_reason = KVM_EXIT_FAIL_ENTRY; kvm_run->fail_entry.hardware_entry_failure_reason = svm->vmcb->control.exit_code; + kvm_run->fail_entry.cpu = svm->last_cpu; dump_vmcb(vcpu); return 0; } @@ -2968,8 +2969,9 @@ static int handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON; - vcpu->run->internal.ndata = 1; + vcpu->run->internal.ndata = 2; vcpu->run->internal.data[0] = exit_code; + vcpu->run->internal.data[1] = svm->last_cpu; return 0; } diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 42856970d3b8..da5490b94704 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -4758,10 +4758,11 @@ static int handle_exception_nmi(struct kvm_vcpu *vcpu) !(is_page_fault(intr_info) && !(error_code & PFERR_RSVD_MASK))) { vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_SIMUL_EX; - vcpu->run->internal.ndata = 3; + vcpu->run->internal.ndata = 4; vcpu->run->internal.data[0] = vect_info; vcpu->run->internal.data[1] = intr_info; vcpu->run->internal.data[2] = error_code; + vcpu->run->internal.data[3] = vmx->last_cpu; return 0; } @@ -5983,6 +5984,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) vcpu->run->exit_reason = KVM_EXIT_FAIL_ENTRY; vcpu->run->fail_entry.hardware_entry_failure_reason = exit_reason; + vcpu->run->fail_entry.cpu = vmx->last_cpu; return 0; } @@ -5991,6 +5993,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) vcpu->run->exit_reason = KVM_EXIT_FAIL_ENTRY; vcpu->run->fail_entry.hardware_entry_failure_reason = vmcs_read32(VM_INSTRUCTION_ERROR); + vcpu->run->fail_entry.cpu = vmx->last_cpu; return 0; } @@ -6017,6 +6020,8 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) vcpu->run->internal.data[3] = vmcs_read64(GUEST_PHYSICAL_ADDRESS); } + vcpu->run->internal.data[vcpu->run->internal.ndata++] = + vmx->last_cpu; return 0; } @@ -6072,8 +6077,9 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR; vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON; - vcpu->run->internal.ndata = 1; + vcpu->run->internal.ndata = 2; vcpu->run->internal.data[0] = exit_reason; + vcpu->run->internal.data[1] = vmx->last_cpu; return 0; } diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 9e41b5135340..20c420a45847 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3472,6 +3472,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext) case KVM_CAP_MSR_PLATFORM_INFO: case KVM_CAP_EXCEPTION_PAYLOAD: case KVM_CAP_SET_GUEST_DEBUG: + case KVM_CAP_LAST_CPU: r = 1; break; case KVM_CAP_SYNC_REGS: diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index 6721eb563eda..3edbd44d85bf 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h @@ -289,6 +289,7 @@ struct kvm_run { /* KVM_EXIT_FAIL_ENTRY */ struct { __u64 hardware_entry_failure_reason; + __u32 cpu; } fail_entry; /* KVM_EXIT_EXCEPTION */ struct { @@ -1031,6 +1032,7 @@ struct kvm_ppc_resize_hpt { #define KVM_CAP_PPC_SECURE_GUEST 181 #define KVM_CAP_HALT_POLL 182 #define KVM_CAP_ASYNC_PF_INT 183 +#define KVM_CAP_LAST_CPU 184 #ifdef KVM_CAP_IRQ_ROUTING From patchwork Wed Jun 3 23:56:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Mattson X-Patchwork-Id: 11586735 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 6279590 for ; Wed, 3 Jun 2020 23:56:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3F34820738 for ; Wed, 3 Jun 2020 23:56:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="trjmkU/k" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726385AbgFCX4p (ORCPT ); Wed, 3 Jun 2020 19:56:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59404 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726496AbgFCX4n (ORCPT ); Wed, 3 Jun 2020 19:56:43 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6212FC08C5C1 for ; Wed, 3 Jun 2020 16:56:42 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id c17so5818881ybf.7 for ; Wed, 03 Jun 2020 16:56:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=GDC7mHVEx9J0qsxVbqJ+q0YDuEWFn7Rk7hUHvs3vmKc=; b=trjmkU/kEsi1M62waF9MP7VyMYned5dRZzxppbzW2Q6NlE+0YViNLdYpfD9AHspyvh oWCFyQ7kLr8S2bNGUadGPtqUh1A0Pi2alZr067sZTy84U1lg6hVZM6iIPC0NcuYniCEX 6ARK31dpAS3rlor8bVPEg0IWjXkR47JH4DJKDuGLd8xxqBhPflIwtF3PNGNgzsbXCvsd pi+ofnfH/OmZA1iOpe3VWRMCTIDne5HasSruYfckmPe4YmKb1p07CUvkbg/9vwaCDhm9 dJBpant7ARCQ7vCd8Hwb0z24Z2vjbVwQI1XTkMk9QfN59S7MGZw3VzYGipbXnV/AZ+aF wYsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=GDC7mHVEx9J0qsxVbqJ+q0YDuEWFn7Rk7hUHvs3vmKc=; b=jAwBLo3WNkqzVEGl2wcTnR390O9azz8Q15PfW2eCBTw+Oph8Yvy6Mau8M26Zgzme8Q IN9zj/33fupZiunoPQk+7LYhj+Qp/NfKYWPCYBbAi9S1507zXqtIRvDObLAXasccZqG6 0JRS4xsC7i9kUMaJjQD5MlaJgKPUJmAkFzxK6t1tuKM4zQgozAlaYZ7R9zLx9LKcbs9D lyZj32AH88hCqddukf68T0hqOMBxxz1R0QjAgr3fnQ4NFyIeVY7+4fm0ZsFNzP+lCGR0 m5VntQ9/4QGU1k7tS+kNjZC/nVWOqZjDgJfid5KvsbrYl+3MCMHWz5/zZVYfD50AphUy XBjQ== X-Gm-Message-State: AOAM530lxCOJhbCG9gn1yswNu+KcJjBYNAHLrbo54TUYhqPUU+DXqO2C 7eKOd8boeQGUrJ7g9i2TNIoYe3WejmnkMfqZn4CNxs3N05hFMdmgemsD1riU0FsBNjLqPCirH3+ zdSWF6XO0Hm3C/O/QOu/KT59uByMNuQ2APE2LAjWOrc9hFXRJ6Mhqh7bBtYBqgEY= X-Google-Smtp-Source: ABdhPJz3qCQdGUWwWh1fTxeQefa7Vf6LCGZnLvE/if9U0e05K8zJh9wBwBLM4MIDNQHrUYcE3dNv7QVW0017qw== X-Received: by 2002:a25:b8cb:: with SMTP id g11mr3675334ybm.189.1591228601575; Wed, 03 Jun 2020 16:56:41 -0700 (PDT) Date: Wed, 3 Jun 2020 16:56:22 -0700 In-Reply-To: <20200603235623.245638-1-jmattson@google.com> Message-Id: <20200603235623.245638-6-jmattson@google.com> Mime-Version: 1.0 References: <20200603235623.245638-1-jmattson@google.com> X-Mailer: git-send-email 2.27.0.rc2.251.g90737beb825-goog Subject: [PATCH v4 5/6] kvm: x86: Move last_cpu into kvm_vcpu_arch as last_vmentry_cpu From: Jim Mattson To: kvm@vger.kernel.org, Paolo Bonzini Cc: Liran Alon , Oliver Upton , Peter Shier , Sean Christopherson , Jim Mattson Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Both the vcpu_vmx structure and the vcpu_svm structure have a 'last_cpu' field. Move the common field into the kvm_vcpu_arch structure. For clarity, rename it to 'last_vmentry_cpu.' Suggested-by: Sean Christopherson Signed-off-by: Jim Mattson Reviewed-by: Oliver Upton Reviewed-by: Peter Shier --- arch/x86/include/asm/kvm_host.h | 3 +++ arch/x86/kvm/svm/sev.c | 2 +- arch/x86/kvm/svm/svm.c | 6 +++--- arch/x86/kvm/svm/svm.h | 3 --- arch/x86/kvm/vmx/vmx.c | 12 ++++++------ arch/x86/kvm/vmx/vmx.h | 3 --- 6 files changed, 13 insertions(+), 16 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 58337a25396a..fa33b0f8028f 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -827,6 +827,9 @@ struct kvm_vcpu_arch { /* Flush the L1 Data cache for L1TF mitigation on VMENTER */ bool l1tf_flush_l1d; + /* Host CPU on which VM-entry was most recently attempted */ + unsigned int last_vmentry_cpu; + /* AMD MSRC001_0015 Hardware Configuration */ u64 msr_hwcr; }; diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index aa61d5d1e7f3..126d9014635a 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1181,7 +1181,7 @@ void pre_sev_run(struct vcpu_svm *svm, int cpu) * 2) or this VMCB was executed on different host CPU in previous VMRUNs. */ if (sd->sev_vmcbs[asid] == svm->vmcb && - svm->last_cpu == cpu) + svm->vcpu.arch.last_vmentry_cpu == cpu) return; sd->sev_vmcbs[asid] = svm->vmcb; diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 938be4172bab..78b64d1ab7b1 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -2945,7 +2945,7 @@ static int handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) kvm_run->exit_reason = KVM_EXIT_FAIL_ENTRY; kvm_run->fail_entry.hardware_entry_failure_reason = svm->vmcb->control.exit_code; - kvm_run->fail_entry.cpu = svm->last_cpu; + kvm_run->fail_entry.cpu = vcpu->arch.last_vmentry_cpu; dump_vmcb(vcpu); return 0; } @@ -2971,7 +2971,7 @@ static int handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON; vcpu->run->internal.ndata = 2; vcpu->run->internal.data[0] = exit_code; - vcpu->run->internal.data[1] = svm->last_cpu; + vcpu->run->internal.data[1] = vcpu->arch.last_vmentry_cpu; return 0; } @@ -3396,7 +3396,7 @@ static fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) */ x86_spec_ctrl_set_guest(svm->spec_ctrl, svm->virt_spec_ctrl); - svm->last_cpu = vcpu->cpu; + vcpu->arch.last_vmentry_cpu = vcpu->cpu; __svm_vcpu_run(svm->vmcb_pa, (unsigned long *)&svm->vcpu.arch.regs); #ifdef CONFIG_X86_64 diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index 6ac4c00a5d82..613356f85da6 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -158,9 +158,6 @@ struct vcpu_svm { */ struct list_head ir_list; spinlock_t ir_list_lock; - - /* which host CPU was used for running this vcpu */ - unsigned int last_cpu; }; struct svm_cpu_data { diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index da5490b94704..562381073c40 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -4762,7 +4762,7 @@ static int handle_exception_nmi(struct kvm_vcpu *vcpu) vcpu->run->internal.data[0] = vect_info; vcpu->run->internal.data[1] = intr_info; vcpu->run->internal.data[2] = error_code; - vcpu->run->internal.data[3] = vmx->last_cpu; + vcpu->run->internal.data[3] = vcpu->arch.last_vmentry_cpu; return 0; } @@ -5984,7 +5984,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) vcpu->run->exit_reason = KVM_EXIT_FAIL_ENTRY; vcpu->run->fail_entry.hardware_entry_failure_reason = exit_reason; - vcpu->run->fail_entry.cpu = vmx->last_cpu; + vcpu->run->fail_entry.cpu = vcpu->arch.last_vmentry_cpu; return 0; } @@ -5993,7 +5993,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) vcpu->run->exit_reason = KVM_EXIT_FAIL_ENTRY; vcpu->run->fail_entry.hardware_entry_failure_reason = vmcs_read32(VM_INSTRUCTION_ERROR); - vcpu->run->fail_entry.cpu = vmx->last_cpu; + vcpu->run->fail_entry.cpu = vcpu->arch.last_vmentry_cpu; return 0; } @@ -6021,7 +6021,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) vmcs_read64(GUEST_PHYSICAL_ADDRESS); } vcpu->run->internal.data[vcpu->run->internal.ndata++] = - vmx->last_cpu; + vcpu->arch.last_vmentry_cpu; return 0; } @@ -6079,7 +6079,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON; vcpu->run->internal.ndata = 2; vcpu->run->internal.data[0] = exit_reason; - vcpu->run->internal.data[1] = vmx->last_cpu; + vcpu->run->internal.data[1] = vcpu->arch.last_vmentry_cpu; return 0; } @@ -6736,7 +6736,7 @@ static fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu) if (vcpu->arch.cr2 != read_cr2()) write_cr2(vcpu->arch.cr2); - vmx->last_cpu = vcpu->cpu; + vcpu->arch.last_vmentry_cpu = vcpu->cpu; vmx->fail = __vmx_vcpu_run(vmx, (unsigned long *)&vcpu->arch.regs, vmx->loaded_vmcs->launched); diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h index 8a1e833cf4fb..672c28f17e49 100644 --- a/arch/x86/kvm/vmx/vmx.h +++ b/arch/x86/kvm/vmx/vmx.h @@ -302,9 +302,6 @@ struct vcpu_vmx { u64 ept_pointer; struct pt_desc pt_desc; - - /* which host CPU was used for running this vcpu */ - unsigned int last_cpu; }; enum ept_pointers_status { From patchwork Wed Jun 3 23:56:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Mattson X-Patchwork-Id: 11586737 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 E1861138C for ; Wed, 3 Jun 2020 23:56:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C8B8220658 for ; Wed, 3 Jun 2020 23:56:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="j25/soJx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726460AbgFCX4q (ORCPT ); Wed, 3 Jun 2020 19:56:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59410 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726371AbgFCX4p (ORCPT ); Wed, 3 Jun 2020 19:56:45 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 06292C08C5C2 for ; Wed, 3 Jun 2020 16:56:44 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id g15so5876127ybd.20 for ; Wed, 03 Jun 2020 16:56:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=wWCKn9ltRt9CYrTgEB7AQJne8Q4xu3HLXvC1DA8IJZ4=; b=j25/soJxvne6NJ038UhLzu8JuVaJc92KvjcTHVN/I4KSuhtnahS1BCw+nzwiH80bok 5lAHV90oFFvqpjcJrVp39wAxxtwCOyqJGP+yTly712/uYsbHdShMhQeHgbl5YJmblXEU iZ1NBmWBQfxn8K0p18hogA3qr9zKAFeY2PIni2B+EQQNqwNUOXJkJ3hbM/O52kL8zf7b XHFQuxNCVcMUWfknJPEjmgLCpVKLI2HFj11XRv8QLhDkNTd/4vtpFdcTokP9SatCf7en U/7Vr4pesSLQuZXCbFSi74r502HcVtPIo5wPIGSzWhqbPn+/ndKSKczZyMeHSk+62PHt 2Mfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=wWCKn9ltRt9CYrTgEB7AQJne8Q4xu3HLXvC1DA8IJZ4=; b=tucWGESH4W4RSZDp9nBMcmCn79e8lBdxL75Bg6DAeO19OsNmgMUj0Eh/oAT23iPOby N6nvKPbG/+sHqJ4AZkOvJLf5Rg70qHCwzkMdEPf2rLNMzcV2UzFOl7RMECb96f87X72z b6Mkc0EbhoV/Hqxy3ulEDG4BKdazDU/15swjbveQN/vcrUCNmTPjoNgH8bdfZQEcT8zF rzb95HWWflWNCiZSXWjr4Pd2ZndJQORUhfsXxy+LAqk4uPnT7H1lBO+qwV0a3lj979ri 89dwWWb6m6Soe4EmUNqE/9GikAy7uzCqqr1VeacNHnHyL+BqdEAB4VFjOYOeFNtjt8gc T6YQ== X-Gm-Message-State: AOAM533iSQQmziCS0wIEdzqOWC9iPa15YVhSD29iqOWU+HVa5ZP8Uud+ BZRfC45XFBYOKQMm68YdZVfjafLhmONNAMSZ+wr5rMLtFqXOO7de7MLLMk16CiBBB3G6gT/oLGZ ZJ2VJfz3WoriFox5j+gA+VFeVKAtWQj5Er9A7Pj5g5wUwhE+TMg7JFfQzRrEAnis= X-Google-Smtp-Source: ABdhPJwlSskV4yCjP0Vvs3LbCai0ydvI5Qz9RGoXWQk1eyV8XAO8EMMy3a0XEDariV+kGGFrVC9bNxSbQbtYeA== X-Received: by 2002:a25:338b:: with SMTP id z133mr3899067ybz.329.1591228603191; Wed, 03 Jun 2020 16:56:43 -0700 (PDT) Date: Wed, 3 Jun 2020 16:56:23 -0700 In-Reply-To: <20200603235623.245638-1-jmattson@google.com> Message-Id: <20200603235623.245638-7-jmattson@google.com> Mime-Version: 1.0 References: <20200603235623.245638-1-jmattson@google.com> X-Mailer: git-send-email 2.27.0.rc2.251.g90737beb825-goog Subject: [PATCH v4 6/6] kvm: x86: Set last_vmentry_cpu in vcpu_enter_guest From: Jim Mattson To: kvm@vger.kernel.org, Paolo Bonzini Cc: Liran Alon , Oliver Upton , Peter Shier , Sean Christopherson , Jim Mattson Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Since this field is now in kvm_vcpu_arch, clean things up a little by setting it in vendor-agnostic code: vcpu_enter_guest. Note that it must be set after the call to kvm_x86_ops.run(), since it can't be updated before pre_sev_run(). Suggested-by: Sean Christopherson Signed-off-by: Jim Mattson Reviewed-by: Oliver Upton Reviewed-by: Peter Shier --- arch/x86/kvm/svm/svm.c | 1 - arch/x86/kvm/vmx/vmx.c | 1 - arch/x86/kvm/x86.c | 1 + 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 78b64d1ab7b1..bc8223df698f 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -3396,7 +3396,6 @@ static fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) */ x86_spec_ctrl_set_guest(svm->spec_ctrl, svm->virt_spec_ctrl); - vcpu->arch.last_vmentry_cpu = vcpu->cpu; __svm_vcpu_run(svm->vmcb_pa, (unsigned long *)&svm->vcpu.arch.regs); #ifdef CONFIG_X86_64 diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 562381073c40..c6eea58b5e66 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -6736,7 +6736,6 @@ static fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu) if (vcpu->arch.cr2 != read_cr2()) write_cr2(vcpu->arch.cr2); - vcpu->arch.last_vmentry_cpu = vcpu->cpu; vmx->fail = __vmx_vcpu_run(vmx, (unsigned long *)&vcpu->arch.regs, vmx->loaded_vmcs->launched); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 20c420a45847..512db3c39392 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -8554,6 +8554,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) if (hw_breakpoint_active()) hw_breakpoint_restore(); + vcpu->arch.last_vmentry_cpu = vcpu->cpu; vcpu->arch.last_guest_tsc = kvm_read_l1_tsc(vcpu, rdtsc()); vcpu->mode = OUTSIDE_GUEST_MODE;