Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp438288pxk; Wed, 2 Sep 2020 05:56:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyyysj+gEMKBGvTSXb/OYNz0KQzk+WmM0Y+7GNVtkn8ObJqtSk6UJOWlWlI8pcW5t0z3anW X-Received: by 2002:a17:906:3552:: with SMTP id s18mr1930857eja.23.1599051416817; Wed, 02 Sep 2020 05:56:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599051416; cv=none; d=google.com; s=arc-20160816; b=n6uJPQ1rNMG5chjwT5/EgC+uXn/TuZPHyVPDJ/Vz0tqR68gqGAxQihCu+c/vk9hVoC y9qb0IiLfmAa0HfhAdo3a/kCOnBa4GFRcpVnMoNl0XSBv/CyGQLIFIGpDSU5RXYeoXKg 26Xfzl7uwI9E14o7Cg4mDzYYgAnJsALLEF1w6MntB13cAsnpiRgnYu6lnM+8lFJ/4V8L jb7cxDjUPevn092ZOBvW2FjFw1bHjEREG0IlerPRtK7gBC5fcnSt88k1gusf632t8c7I JlPWfZQ7dsXDtn1tFgtEtopIh5DWDAc+ul7E0Ji3ZizZlXJAeuOeegtHkD1OFRs2qRWz 5Y8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=GPYnsVkem3+rGz/hx35DWNwrA6gRvemoFnUQJ0NxbXk=; b=lVVtKgpOEjUIv9WlYDbGHzNkNeQKFmDSaylJnCjJPRIIjNpZlTlgSs8IzzXwWsfh0i mJ5Y5GDBv2H70aLMEi5LgxkXILoVDBxNITyUlu/f5ec8fYnct8lh9uW/XqdIuiotgpFg QzA5FzpTqrZKLCINxSRLy4ry1hPkOOielyH1YxWR4PFTBAwkivbMmRWnAhSc8chomyPA dTOzCWXm55EXyLTQsZ16zjOgXfRlATbb8PHxrTO/t/z/BTq4+2sQa3VKz1i5tYzlScai vVv8uRhqM0bQXK7sVbmnH7N9HPAl02cVMzmTRFKDgNkcRliSTlm5PkQaU5vhItNnKPZO o+6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=O3IliV7T; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g90si2956245edd.492.2020.09.02.05.56.33; Wed, 02 Sep 2020 05:56:56 -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=@gmail.com header.s=20161025 header.b=O3IliV7T; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727061AbgIBMyE (ORCPT + 99 others); Wed, 2 Sep 2020 08:54:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54042 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726686AbgIBMx7 (ORCPT ); Wed, 2 Sep 2020 08:53:59 -0400 Received: from mail-pj1-x1043.google.com (mail-pj1-x1043.google.com [IPv6:2607:f8b0:4864:20::1043]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D6829C061244; Wed, 2 Sep 2020 05:53:58 -0700 (PDT) Received: by mail-pj1-x1043.google.com with SMTP id gf14so2260023pjb.5; Wed, 02 Sep 2020 05:53:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GPYnsVkem3+rGz/hx35DWNwrA6gRvemoFnUQJ0NxbXk=; b=O3IliV7T1Fi5FVyDT80cvvfFZipGaOhG7IHj5wmk+aM5nRA+7s6hAcCzbQlG8BwdxX 54f/Gvy8uAPninfvMtb5FsMDiz3OvpvPWVhF3Q5dML5syZvJF0mgurliqkv009WVDxkV DKCIKjfCcCJSb6alglsLEty0+b2/OGbCF7y2MQ8e1IkBpiwfNMd957e6nCfIELviTgwg 86+eVzUqh36SZuRlLGOkd6BZntCZx7OAJGgYl+4yp86c/EJ/5M4W9JhiDd3rMAq6bFtZ A9k+04RosFknwjeAGWeIMUC5Eeb/AU1BIeIHS9R7CkFXuyhhS2qN/YRAsCVrJ0xyGgBZ h0gQ== 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:mime-version:content-transfer-encoding; bh=GPYnsVkem3+rGz/hx35DWNwrA6gRvemoFnUQJ0NxbXk=; b=rgxVA5l7ZuF2BTUsNVpRp45PBl87Spxe8jfEu75REIHAcYDHOlrTMgCOmSB0rMZYvU BjMpZqDGdEA9EHzyWuJ07hUPq2excrQtYtrbWdGTUVXrvsWA2yQLbig0FtGJpKEpDJHj M7txCiCysKf6TOWtaGjZUka87U/QLvTmRSX12WLbqPDpLw5ld0aXdTzpX0j5sTNiwyXO VqdeDtmZsLWC+OIOza/kpKFlW4971VRX2wpibwBET0LfOdOHtIEPFO+ZPru34p8e/Cza y0CmXg9TItwILDG/zuWGNyNJL9m8l6wY6Au+GnIFGKaz8OECnVCHATnlLVD58CnrIa9n h21w== X-Gm-Message-State: AOAM532isjszWnsACXVykOToUA1/36o9a2o36bIN+33/mEpNcvhya6hF Rm2evoGHdApGDKZQqidHPbw5IKsIiUDKpg== X-Received: by 2002:a17:90a:e2cc:: with SMTP id fr12mr2143502pjb.125.1599051238181; Wed, 02 Sep 2020 05:53:58 -0700 (PDT) Received: from localhost ([121.0.29.56]) by smtp.gmail.com with ESMTPSA id np4sm4243201pjb.4.2020.09.02.05.53.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Sep 2020 05:53:57 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org Cc: Lai Jiangshan , Sean Christopherson , Vitaly Kuznetsov , Paolo Bonzini , Wanpeng Li , Jim Mattson , Joerg Roedel , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , kvm@vger.kernel.org Subject: [PATCH V2] kvm x86/mmu: use KVM_REQ_MMU_SYNC to sync when needed Date: Wed, 2 Sep 2020 21:54:21 +0800 Message-Id: <20200902135421.31158-1-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <87y2ltx6gl.fsf@vitty.brq.redhat.com> References: <87y2ltx6gl.fsf@vitty.brq.redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lai Jiangshan When kvm_mmu_get_page() gets a page with unsynced children, the spt pagetable is unsynchronized with the guest pagetable. But the guest might not issue a "flush" operation on it when the pagetable entry is changed from zero or other cases. The hypervisor has the responsibility to synchronize the pagetables. The linux kernel behaves as above for many years, But 8c8560b83390("KVM: x86/mmu: Use KVM_REQ_TLB_FLUSH_CURRENT for MMU specific flushes) inadvertently included a line of code to change it without giving any reason in the changelog. It is clear that the commit's intention was to change KVM_REQ_TLB_FLUSH -> KVM_REQ_TLB_FLUSH_CURRENT, so we don't unneedlesly flush other contexts but one of the hunks changed nearby KVM_REQ_MMU_SYNC instead. The this patch changes it back. Link: https://lore.kernel.org/lkml/20200320212833.3507-26-sean.j.christopherson@intel.com/ Cc: Sean Christopherson Cc: Vitaly Kuznetsov Signed-off-by: Lai Jiangshan --- Changed from v1: update patch description arch/x86/kvm/mmu/mmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 4e03841f053d..9a93de921f2b 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -2468,7 +2468,7 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu, } if (sp->unsync_children) - kvm_make_request(KVM_REQ_TLB_FLUSH_CURRENT, vcpu); + kvm_make_request(KVM_REQ_MMU_SYNC, vcpu); __clear_sp_write_flooding_count(sp); -- 2.19.1.6.gb485710b