From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 923FDC433ED for ; Tue, 11 May 2021 11:20:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5E1966193A for ; Tue, 11 May 2021 11:20:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231393AbhEKLVM (ORCPT ); Tue, 11 May 2021 07:21:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:28639 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230483AbhEKLVL (ORCPT ); Tue, 11 May 2021 07:21:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1620732004; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=R2FIcJy0FhG18L85AGaMz34fEcXRgkeJKI2TAP1uabE=; b=KlogoGDKO1Pf4EcngUTgAmVTR7MMCzJFJpuK0vh1tHGDIp8ERxAQswpcpyLWU4iF67odJC Rg7IhhwVwuntWKR1TRhtAOmL2qHvxd7kRhsyqMOUZOk52kn4C6d8TEM5QjtR6HeBJ69f6K zTf1QmCF4wkxZuywY4UUNnRPDJy6LI4= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-503-6w7aAOSuOMKj46QWvgFSyw-1; Tue, 11 May 2021 07:20:03 -0400 X-MC-Unique: 6w7aAOSuOMKj46QWvgFSyw-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A94AF8015F3; Tue, 11 May 2021 11:20:01 +0000 (UTC) Received: from vitty.brq.redhat.com (unknown [10.40.193.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 520A163746; Tue, 11 May 2021 11:19:57 +0000 (UTC) From: Vitaly Kuznetsov To: kvm@vger.kernel.org, Paolo Bonzini Cc: linux-kernel@vger.kernel.org, Sean Christopherson , Wanpeng Li , Jim Mattson , Maxim Levitsky Subject: [PATCH 0/7] KVM: nVMX: Fixes for nested state migration when eVMCS is in use Date: Tue, 11 May 2021 13:19:49 +0200 Message-Id: <20210511111956.1555830-1-vkuznets@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Commit f5c7e8425f18 ("KVM: nVMX: Always make an attempt to map eVMCS after migration") fixed the most obvious reason why Hyper-V on KVM (e.g. Win10 + WSL2) was crashing immediately after migration. It was also reported that we have more issues to fix as, while the failure rate was lowered signifincatly, it was still possible to observe crashes after several dozens of migration. Turns out, the issue arises when we manage to issue KVM_GET_NESTED_STATE right after L2->L2 VMEXIT but before L1 gets a chance to run. This state is tracked with 'need_vmcs12_to_shadow_sync' flag but the flag itself is not part of saved nested state. A few other less significant issues are fixed along the way. While there's no proof this series fixes all eVMCS related problems, Win10+WSL2 was able to survive 500 migrations without crashing in my testing. Patches are based on the current kvm/next tree. Vitaly Kuznetsov (7): KVM: nVMX: Introduce nested_evmcs_is_used() KVM: nVMX: Release enlightened VMCS on VMCLEAR KVM: nVMX: Ignore 'hv_clean_fields' data when eVMCS data is copied in vmx_get_nested_state() KVM: nVMX: Force enlightened VMCS sync from nested_vmx_failValid() KVM: nVMX: Reset eVMCS clean fields data from prepare_vmcs02() KVM: nVMX: Request to sync eVMCS from VMCS12 after migration KVM: selftests: evmcs_test: Test that KVM_STATE_NESTED_EVMCS is never lost arch/x86/kvm/vmx/nested.c | 99 +++++++++++++------ .../testing/selftests/kvm/x86_64/evmcs_test.c | 64 +++++++----- 2 files changed, 109 insertions(+), 54 deletions(-) -- 2.30.2