Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4652068pxj; Wed, 12 May 2021 10:06:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxhfez4DlE3kgRRbmx3cmscMpOWQ5QRVWJPcpcVcxydKAFrlQPkBomqTOApryKVcIPfHAa7 X-Received: by 2002:a05:6830:1ac7:: with SMTP id r7mr25783979otc.167.1620839164903; Wed, 12 May 2021 10:06:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620839164; cv=none; d=google.com; s=arc-20160816; b=atj96Haw0KhNzrZFfWNM4s3kP+DwxZHnoMBH6ykVYuV4u07PGQqBZ4tTOGY5BZRJJZ a4ySMcalo/4k2MtG8qBwIFCGezM/sSkFtHOcyh+hUMwtKrBPjoxJPmEty20J8GYPqU7j 8YnqSvLpkrsvdVdzb+wnxiK9O2U/4PoGSHJwvpM+IGDSlYdVj4a0k+FkIe8PCrSpp+LK bbv880q6ZXep5bZ5q7DwddJBplBM2n+s6qbyOUY5T6y8JuwKbQ3Xk+dmOSC4ZuaIon/v izvhRcmcUjae12R53akIA7xxXclgzLqJeZcbhWGBaYf80eEPtNBJeyfLM0z8jZhd/xGM Eycw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=QhQILGy/bxCvjW4ZPb0iLoTYia9iIwOndIDVpTZadUU=; b=qNJ03rZ8jAHPj9wg2wYstkPh1GcOGlfUsJY2VFcE6GPN1XIJvKxQssLJwlvjTJF3gi J5qZ2mgQCjBXoVC8KJCrfRjCzR/fWzOoUby352ujmnswWBhcnFWz5ixu1DWMhpdDyUkT DeJnaMqMMtwQgz4NpGFSsjtbzTsdYskkWvxVbbMP1sK+t9SS2qCaTOb2x1C4q5A358Na xeH34cMsObJK3cXdyUMy5WvCjc1vw4yp8dIKEM4HvgIrn/GeYUnDUqeRKtc2A+jCbcqC e4hZgdoxBN8zhboJ/aurB0ikTFlHcYruhfesEC1Es+cPZ+gWoSqREPWV+n2Y8MBEeW2p NBHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=sP2uDMLU; 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=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l207si432123oig.171.2021.05.12.10.05.50; Wed, 12 May 2021 10:06:04 -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=@linuxfoundation.org header.s=korg header.b=sP2uDMLU; 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=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344202AbhELRBJ (ORCPT + 99 others); Wed, 12 May 2021 13:01:09 -0400 Received: from mail.kernel.org ([198.145.29.99]:34658 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237986AbhELP46 (ORCPT ); Wed, 12 May 2021 11:56:58 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 17D6961C2F; Wed, 12 May 2021 15:29:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620833369; bh=cq5qPy48V/531d3zpmLUJEhZpG60JBeVN8crghx57FA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sP2uDMLU/77BDZutQogS0xvvlisK4VxeBu9JgA5nfuFTvA9rUhyd8cTAO25/v6V6j VoIq+qScQ2DjWuih386r9Cl/cOfRHGXXLAGsAXRnW6IR0GqhMDwgVaXx1Vq34JQTTN NMWC+n39cuhUp7PehW3+M1jWWeviEthPNnMHud1Q= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sean Christopherson , Paolo Bonzini Subject: [PATCH 5.11 105/601] KVM: nVMX: Defer the MMU reload to the normal path on an EPTP switch Date: Wed, 12 May 2021 16:43:02 +0200 Message-Id: <20210512144831.304869029@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144827.811958675@linuxfoundation.org> References: <20210512144827.811958675@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sean Christopherson commit c805f5d5585ab5e0cdac6b1ccf7086eb120fb7db upstream. Defer reloading the MMU after a EPTP successful EPTP switch. The VMFUNC instruction itself is executed in the previous EPTP context, any side effects, e.g. updating RIP, should occur in the old context. Practically speaking, this bug is benign as VMX doesn't touch the MMU when skipping an emulated instruction, nor does queuing a single-step #DB. No other post-switch side effects exist. Fixes: 41ab93727467 ("KVM: nVMX: Emulate EPTP switching for the L1 hypervisor") Cc: stable@vger.kernel.org Signed-off-by: Sean Christopherson Message-Id: <20210305011101.3597423-14-seanjc@google.com> Signed-off-by: Paolo Bonzini Signed-off-by: Greg Kroah-Hartman --- arch/x86/kvm/vmx/nested.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c @@ -5517,16 +5517,11 @@ static int nested_vmx_eptp_switching(str if (!nested_vmx_check_eptp(vcpu, new_eptp)) return 1; - kvm_mmu_unload(vcpu); mmu->ept_ad = accessed_dirty; mmu->mmu_role.base.ad_disabled = !accessed_dirty; vmcs12->ept_pointer = new_eptp; - /* - * TODO: Check what's the correct approach in case - * mmu reload fails. Currently, we just let the next - * reload potentially fail - */ - kvm_mmu_reload(vcpu); + + kvm_make_request(KVM_REQ_MMU_RELOAD, vcpu); } return 0;