Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp440399pxf; Wed, 7 Apr 2021 03:26:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyQA5Z8jvWF5Tpxu+y2cYaYyhSOc8QZTo03+8DB0KydLx+wpckxdwmWLrLeccIBgGIvrBGs X-Received: by 2002:a17:907:778d:: with SMTP id ky13mr2879744ejc.291.1617791182811; Wed, 07 Apr 2021 03:26:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617791182; cv=none; d=google.com; s=arc-20160816; b=G9wFtiDG3FO0ak19IMllb2tf2zAeBLc+TBDdXiec8aWdwuRL5qGPJF2sTpQzLvYR1P 8kSeiM76/z0eLhBf6QQI0iB70dj5lGiGDWXuucF4yaTJ0iAxEnZKw+ybAzqAH0bOEhss xLx+66Tlh8E2w6u0I07incTFPQkeoFotbo7tFvDHo9j66wLZ5ZL8hRMfakHMROibgDAL IYrafLiDF79srNff/7PkI+0WEO3LaTjBDEULi0lROaLAQFgC9nOvI9K1sySQSF6gbxqE NOS0yjJF+M+Jmug0fLZnCWU3hq3aZpMrBuu5gEDrde5yv1MHT4n1VQvf+dYZh+UIzAHB 1YOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:references:mime-version :message-id:in-reply-to:date:reply-to:dkim-signature; bh=oivDkQlUDQSvSEYmPed6OfkcBD+Dvdh/iwh7GoMJjX4=; b=UVMs4rhRKfKwWVKwKxBCVMZGbIQuuIa0TQCThSMvuRuUGxtMvcNKSdoCgUxojBUS/6 dXCa4iKuj++N0yGK1tGliiBoq/yulZwJwDQWvAsUe4V14vLfefHr/kb2idH37kKBr06b jptwyHFTg+IZx/38QqgNQ6cZwezJT2GxbsZGL3nCRBKRwAuNxUwjxEcPBRiW/LPDGOL7 QynqXrS/iM1jTBIzj+WcvGe5zscif/mXlvEu8zoGxLkd3MFvc15m9dr7PODT38VqtsFH GcCS32bPkDzUfe1v4yFh56jeL+Svh4+6uwi6eR5sUa987cVj/0tCn5J7vKvSBYT7HxrA ZqHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ggRtauV+; 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 lr6si21799449ejb.9.2021.04.07.03.25.59; Wed, 07 Apr 2021 03:26:22 -0700 (PDT) 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=ggRtauV+; 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 S1346845AbhDFRSc (ORCPT + 99 others); Tue, 6 Apr 2021 13:18:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52458 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244432AbhDFRSZ (ORCPT ); Tue, 6 Apr 2021 13:18:25 -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 219F1C061756 for ; Tue, 6 Apr 2021 10:18:17 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id f75so20888032yba.8 for ; Tue, 06 Apr 2021 10:18:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=oivDkQlUDQSvSEYmPed6OfkcBD+Dvdh/iwh7GoMJjX4=; b=ggRtauV+tbl//nJw9paxByj4LnhMRWjJS7yrReiQAs3GvtMi2oMAS3yC1IFT/CoHGe RbHKiJ1H2D6MEi7QYMNkil9+Aerk0FiECYeaBlD1QcAbi4iwn9qABTyT+fbass/ZEKZK 3O42kT5OWCcSyNhlMLf8w3yu9VoxhzkZCASbdbh7Oux8hBaJRF3a1sV/BRnoro+fNLqL i4VaQRGWV/vRQ9Upp4+ARASsJyVGOZ+KYidRi4jgR08qmw6WiN5ol62J7MEE08WTqx5i tlJuZeYrMa/TcwXLNfLfk3XjGLKtoWUnYWpdeNyjNrxXxGTs90da8KmBkWR/SRjHyngM YnGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=oivDkQlUDQSvSEYmPed6OfkcBD+Dvdh/iwh7GoMJjX4=; b=kUV4z/xiyiOfOM57Hn9LImu/5wfq3bHGt1NEriyP3zjIHsfMc/DyYzcnoMtXgxEiir jjmYaEOlR9VAbkLv/DtO9ezQLD6Qv1I0iJASqPtxeUZo1PMEqV9u7TAfFQUUYudQzYi6 JohlfrUChC7m1ea9rz1WfXS3bs7HjqAm4+CGONd1J2D6aNYGt47XsLRAnYg3QXvN2UpU xJySpG4pfHrXBedit8SL8en+dN1CF01UfdUaRHiXZLj7U5nlgOTAdnDZDB2EQo1PIcre 3grCU40OCb8IEaLNVTEoTfJk94bamz+Erm2lEnlWrSrFgLlVTsyt0wnbrlO02t9Leoaf zo6A== X-Gm-Message-State: AOAM533fjj+0M0VAIujSmesJaI2Clkh1isnNoB1WgrH6Z52VzC8tB4kq MroPo+F8YNxtv8maId61tChAN0ldKXI= X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:24a1:90fb:182b:777c]) (user=seanjc job=sendgmr) by 2002:a05:6902:100d:: with SMTP id w13mr21865678ybt.489.1617729496367; Tue, 06 Apr 2021 10:18:16 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 6 Apr 2021 10:18:08 -0700 In-Reply-To: <20210406171811.4043363-1-seanjc@google.com> Message-Id: <20210406171811.4043363-2-seanjc@google.com> Mime-Version: 1.0 References: <20210406171811.4043363-1-seanjc@google.com> X-Mailer: git-send-email 2.31.0.208.g409f899ff0-goog Subject: [PATCH 1/4] KVM: SVM: Don't set current_vmcb->cpu when switching vmcb From: Sean Christopherson To: Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Cathy Avery , Maxim Levitsky Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Do not update the new vmcb's last-run cpu when switching to a different vmcb. If the vCPU is migrated between its last run and a vmcb switch, e.g. for nested VM-Exit, then setting the cpu without marking the vmcb dirty will lead to KVM running the vCPU on a different physical cpu with stale clean bit settings. vcpu->cpu current_vmcb->cpu hardware pre_svm_run() cpu0 cpu0 cpu0,clean kvm_arch_vcpu_load() cpu1 cpu0 cpu0,clean svm_switch_vmcb() cpu1 cpu1 cpu0,clean pre_svm_run() cpu1 cpu1 kaboom Simply delete the offending code; unlike VMX, which needs to update the cpu at switch time due to the need to do VMPTRLD, SVM only cares about which cpu last ran the vCPU. Fixes: af18fa775d07 ("KVM: nSVM: Track the physical cpu of the vmcb vmrun through the vmcb") Cc: Cathy Avery Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/svm.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 48b396f33bee..89619cc52cf4 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -1311,14 +1311,6 @@ void svm_switch_vmcb(struct vcpu_svm *svm, struct kvm_vmcb_info *target_vmcb) svm->current_vmcb = target_vmcb; svm->vmcb = target_vmcb->ptr; svm->vmcb_pa = target_vmcb->pa; - - /* - * Track the physical CPU the target_vmcb is running on - * in order to mark the VMCB dirty if the cpu changes at - * its next vmrun. - */ - - svm->current_vmcb->cpu = svm->vcpu.cpu; } static int svm_create_vcpu(struct kvm_vcpu *vcpu) -- 2.31.0.208.g409f899ff0-goog