From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f201.google.com (mail-pf1-f201.google.com [209.85.210.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 174DC284693 for ; Mon, 17 Nov 2025 15:47:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763394473; cv=none; b=KLaJJTpWKkG02fb/NktVFF4xLHDOmeEm27BoQ9Jh0bVMAMRdmMjyjyv9MOhTjxndgG5RSZkw+hA8ZA44XBvQ7ne10T7niIfHstjQOxf9FRoFkeaxvvb+YXU7dpu5dCwOIPA8xuEq83lFWxzczistCTZGSxwXw/IZ4Ay2vzpjPPA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763394473; c=relaxed/simple; bh=S3VS2vlTquoz0Ey+ul06GiZbnYLVMgC2APREHcx/Xog=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=kD7eCXxJD9Pa8DiOSWuYRX9c2HbiQmXeiCuUto0Z/ntFH4iOVSepaaYlq2pSsLVIsaWDNc8VOLNTAXg4FuuuGjP8pdFWCyJj1asm1v+7GuMQN8wQ6m3BnHp0MrF2VUAl6YI+DLXezggg/zJLG5SxHVNezFgQCdNQqnPiCkzSUK0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=R1XdJy27; arc=none smtp.client-ip=209.85.210.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="R1XdJy27" Received: by mail-pf1-f201.google.com with SMTP id d2e1a72fcca58-7b82c2c2ca2so6477550b3a.1 for ; Mon, 17 Nov 2025 07:47:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1763394471; x=1763999271; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=wdsS2EyVSMNBbGPJvYoyehbAtWAmx3Bt9tblbDN3w7s=; b=R1XdJy27JkZcBuVy5ISvRr68V6E6ovQ1x7nLo3DOGKsnAz0pCW3mNamnMQOmXklH9D YtCNAp0JDgsge7ly85dkCF3UKxHfjOA1d574JhGFOk0deEaNgJM9T/DUcpb3g9nSVQTv NI5eafHB9TpNXnc8oOqeV0k5P/hKChNP7cs6RS3j9s/FRtA/IhO0feFMnyyTL+yCHCHN 9cRCGD47sQid/tZ+3qvyRs95LUEMGkmBQInt9851ozj9vtbIJXdJURZPBFLGX2hqjOjy QMZNpggNGT/Uwwiemq9OtaMGE2EqTPaO9mHHO4IPQsMuvTSC/LdbbaCBf8diynsckUvu j9BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763394471; x=1763999271; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wdsS2EyVSMNBbGPJvYoyehbAtWAmx3Bt9tblbDN3w7s=; b=HkkDx7lUKICI6ZXGW2pbscMjc6FQ7YhYZyQYFYoBJCFklQCVcTqby09h2pitGzQ1Lp hTnJPmQ7T4XCOIWa9ysrT1EwIc4y8kUqgYWTNaa5zeFo+ukWMUfDIyZYQxQW7EVnqD0F vC+8iY7/0hGndSWR3e8woU8Wwy/yp5eeJLSTUOxZC1wuqBo+UQjRmexpkViCVyoRT6E/ aeE2DskzA+7qM53C/lp3Nix2S5GutLVlk9v3bljeivly3F3pslmLZetC3ie38AQBXXvt KtKv6fcmGQaNTOE2/7B4oe5ZWmahPtsu/kH9MaFkdNE4t0aWre8XequMPvSP8jyT6aff m/3A== X-Forwarded-Encrypted: i=1; AJvYcCXQ/80ezyLYurKjqnpLJTdBEZ3DMvTIK+ppcdyMS6wVFQEqBkUuoiaXhGCuh/Nqofc5M6YSb0KZFnjnGOA=@vger.kernel.org X-Gm-Message-State: AOJu0YwcGXCW4vkITU474DbzRIu7yTaIqNUSlELtfnpUIN0sJ80DAGSO L2gDFb157GqbjM24k5suc1hn5r9jGQBMszn7//4BF0W1aUy8nokEj5TQo1UbSGn/Xw/2ZQWk5R/ UmJN7AQ== X-Google-Smtp-Source: AGHT+IGuz5sFBTWGUG0HC+frxB6UxyEssga+2yAcLsRRtLljmZ5LW6SqXSoQEtV1ACaAj1R7XFvuwQiZVV0= X-Received: from pfbhm2.prod.google.com ([2002:a05:6a00:6702:b0:77c:6e29:42af]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:2449:b0:35f:e2c8:247 with SMTP id adf61e73a8af0-35fe2c80442mr3496015637.32.1763394471289; Mon, 17 Nov 2025 07:47:51 -0800 (PST) Date: Mon, 17 Nov 2025 07:47:49 -0800 In-Reply-To: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251030224246.3456492-1-seanjc@google.com> <20251030224246.3456492-3-seanjc@google.com> Message-ID: Subject: Re: [PATCH 2/4] KVM: VMX: Handle #MCs on VM-Enter/TD-Enter outside of the fastpath From: Sean Christopherson To: Tony Lindgren Cc: Rick P Edgecombe , Paolo Bonzini , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Jon Kohler Content-Type: text/plain; charset="us-ascii" On Mon, Nov 17, 2025, Tony Lindgren wrote: > Hi, > > On Thu, Oct 30, 2025 at 03:42:44PM -0700, Sean Christopherson wrote: > > --- a/arch/x86/kvm/vmx/main.c > > +++ b/arch/x86/kvm/vmx/main.c > > @@ -608,6 +608,17 @@ static void vt_load_mmu_pgd(struct kvm_vcpu *vcpu, hpa_t root_hpa, > > vmx_load_mmu_pgd(vcpu, root_hpa, pgd_level); > > } > > > > +static void vt_handle_exit_irqoff(struct kvm_vcpu *vcpu) > > +{ > > + if (unlikely((u16)vmx_get_exit_reason(vcpu).basic == EXIT_REASON_MCE_DURING_VMENTRY)) > > + kvm_machine_check(); > > + > > + if (is_td_vcpu(vcpu)) > > + return; > > + > > + return vmx_handle_exit_irqoff(vcpu); > > +} > > I bisected kvm-x86/next down to this change for a TDX guest not booting > and host producing errors like: > > watchdog: CPU118: Watchdog detected hard LOCKUP on cpu 118 > > Dropping the is_td_vcpu(vcpu) check above fixes the issue. Earlier the > call for vmx_handle_exit_irqoff() was unconditional. Ugh, once you see it, it's obvious. Sorry :-( I'll drop the entire series and send a v2. There's only one other patch that I already sent the "thank you" for, so I think it's worth unwinding to avoid breaking bisection for TDX (and because the diff can be very different). Lightly tested, but I think this patch can instead be: diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c index 163f854a39f2..6d41d2fc8043 100644 --- a/arch/x86/kvm/vmx/tdx.c +++ b/arch/x86/kvm/vmx/tdx.c @@ -1063,9 +1063,6 @@ fastpath_t tdx_vcpu_run(struct kvm_vcpu *vcpu, u64 run_flags) if (unlikely((tdx->vp_enter_ret & TDX_SW_ERROR) == TDX_SW_ERROR)) return EXIT_FASTPATH_NONE; - if (unlikely(vmx_get_exit_reason(vcpu).basic == EXIT_REASON_MCE_DURING_VMENTRY)) - kvm_machine_check(); - trace_kvm_exit(vcpu, KVM_ISA_VMX); if (unlikely(tdx_failed_vmentry(vcpu))) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index d98107a7bdaa..d1117da5463f 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -7035,10 +7035,19 @@ void vmx_handle_exit_irqoff(struct kvm_vcpu *vcpu) if (to_vt(vcpu)->emulation_required) return; - if (vmx_get_exit_reason(vcpu).basic == EXIT_REASON_EXTERNAL_INTERRUPT) + switch (vmx_get_exit_reason(vcpu).basic) { + case EXIT_REASON_EXTERNAL_INTERRUPT: handle_external_interrupt_irqoff(vcpu, vmx_get_intr_info(vcpu)); - else if (vmx_get_exit_reason(vcpu).basic == EXIT_REASON_EXCEPTION_NMI) + break; + case EXIT_REASON_EXCEPTION_NMI: handle_exception_irqoff(vcpu, vmx_get_intr_info(vcpu)); + break; + case EXIT_REASON_MCE_DURING_VMENTRY: + kvm_machine_check(); + break; + default: + break; + } } /* @@ -7501,9 +7510,6 @@ fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu, u64 run_flags) if (unlikely(vmx->fail)) return EXIT_FASTPATH_NONE; - if (unlikely((u16)vmx_get_exit_reason(vcpu).basic == EXIT_REASON_MCE_DURING_VMENTRY)) - kvm_machine_check(); - trace_kvm_exit(vcpu, KVM_ISA_VMX); if (unlikely(vmx_get_exit_reason(vcpu).failed_vmentry))