From nobody Tue Dec 16 15:10:06 2025 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) (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 154662FF173 for ; Fri, 5 Dec 2025 23:19:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764976768; cv=none; b=joQC0B43qSGRE57H7lk+aTDM/icuy7tR1QGSr8twFgdt6uTIQhXUVxF8d8GSmJduC9cMR8rHUq/RcYY5mnbvOtP08uscIwXMv47A9C57NmHLxFJhMG1KXojUr04CztIrvs7JqlqGJRPznfhKwNSlhybBCFYxsu20FEj0D2Y9BEo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764976768; c=relaxed/simple; bh=exo09ceDmXypfTxtCerCEjZOA8vfVIz2MO3bU0BfyqM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=jeBVD+eqPLRPo6jRJzFeSDimYuKWNGThemwJzuvidjIKIHOvxWs1aRHw5CJt4mxdaxhAoD/Qxx1eOo1AQo9pTjTXlyVcHrrCtPstDAQbXhi5fWeyOEchAp0X5kremyQlmSUzJU3Q4FWVWY282+fViqKMttkzMiNGNE4ekb0jsXw= 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=Q/1uz9Xi; arc=none smtp.client-ip=209.85.210.202 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="Q/1uz9Xi" Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-7be94e1a073so4887512b3a.2 for ; Fri, 05 Dec 2025 15:19:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1764976761; x=1765581561; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=ZcJtGX0VmRX2lzBpy3LVmAgEJDoeGm/VKWbOEKmvPbc=; b=Q/1uz9XivDHtxidfZatlGz3AlOkrPxeNxWEOD8cuNTAKLc+PmwMHG0/1tldCQ54uQn gkIKuLpntMG766ZSjv0NhaNv5t7QfuvIoobCwaaMjunWUoWGOBr9CUmltTeo/RY9bd3M m/uHmzl4pGkM8f1K0jcaxE1XVEGz87MBvWx2c/hYWwhucBEfpuk1pHJayz0K9nfz10AI pwUDhSHVpj5Tu94Ulh+bfqmIacP4l2vBsNAXw1i0g003jKMyueZx/GqyGnT/Km8oC7IA cj8TsGWWR0TaIwj9BF/c+fpC/kf/KocyC486MOKFOCfmHdJRiGpMtRXHMUCsARtnzZT/ IlVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764976761; x=1765581561; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ZcJtGX0VmRX2lzBpy3LVmAgEJDoeGm/VKWbOEKmvPbc=; b=UppDb33RcrDBBY5c3jvN5QRvZMPh5tH/EXO/Z9uqLpuIvAHYwD0yUpmmY4EOnPMuP9 bFVJsauXUBiIdUkpnL+SKc8gQqHvW/DSzmJlixm6YBJTHkdCsAxQIQvlIDVDs6/vXpEx nVL8i8iXMWkwk4obaoh0rIcCvhD26XPeuQCGHDRwPkrJTBlgtC2lp/LH5Suhb+MEIWa6 ZYFz9I21TZkBaqYaTA86oQ1k/3X8RW8SLnawHqkYqSbvUNG+AfWz8eGt/YfnhjgkY/M1 1qsbktKygWfPyrS2v9h+vq4oYPBIYpHJObO4kRyY0Eb0TXVG/glpRmdUBALI8HnHA7Q/ y6jQ== X-Forwarded-Encrypted: i=1; AJvYcCWM4losQQN+rpUzjBM8uGMYWvvGeifA43XC7BZk6QGOHYlXsbmJeIN5RDAqmGJFyrxrI2VHw9+vDz6xVCA=@vger.kernel.org X-Gm-Message-State: AOJu0Ywodp390qYg84HGx4UhqIJWGbUqcXnUvMMGfSkPiUyFKEuP8bKL 80TX1YMARNjFb2ABfndm07Xfvu3qqG+spL/wR4pyvspIpEQXBBQ/qg9ifNON1YMZLu+lIOqukdJ R+IUz1g== X-Google-Smtp-Source: AGHT+IH0SYz00lEf7HVPssFZvqoZIZN/mMz1YTgzQllfd0G4FhVaPgZKdiRo2+ZPkMMERZPCk7sSwMWCPk4= X-Received: from pgam21.prod.google.com ([2002:a05:6a02:2b55:b0:bc1:99a7:3f1b]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:e211:b0:366:14af:9bb8 with SMTP id adf61e73a8af0-36618017e9cmr908273637.66.1764976761202; Fri, 05 Dec 2025 15:19:21 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 5 Dec 2025 15:19:05 -0800 In-Reply-To: <20251205231913.441872-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251205231913.441872-1-seanjc@google.com> X-Mailer: git-send-email 2.52.0.223.gf5cc29aaa4-goog Message-ID: <20251205231913.441872-3-seanjc@google.com> Subject: [PATCH v3 02/10] KVM: nVMX: Immediately refresh APICv controls as needed on nested VM-Exit From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Dongli Zhang , Chao Gao Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Dongli Zhang If an APICv status updated was pended while L2 was active, immediately refresh vmcs01's controls instead of pending KVM_REQ_APICV_UPDATE as kvm_vcpu_update_apicv() only calls into vendor code if a change is necessary. E.g. if APICv is inhibited, and then activated while L2 is running: kvm_vcpu_update_apicv() | -> __kvm_vcpu_update_apicv() | -> apic->apicv_active =3D true | -> vmx_refresh_apicv_exec_ctrl() | -> vmx->nested.update_vmcs01_apicv_status =3D true | -> return Then L2 exits to L1: __nested_vmx_vmexit() | -> kvm_make_request(KVM_REQ_APICV_UPDATE) vcpu_enter_guest(): KVM_REQ_APICV_UPDATE -> kvm_vcpu_update_apicv() | -> __kvm_vcpu_update_apicv() | -> return // because if (apic->apicv_active =3D=3D activate) Reported-by: Chao Gao Closes: https://lore.kernel.org/all/aQ2jmnN8wUYVEawF@intel.com Fixes: 7c69661e225c ("KVM: nVMX: Defer APICv updates while L2 is active unt= il L1 is active") Cc: stable@vger.kernel.org Signed-off-by: Dongli Zhang [sean: write changelog] Signed-off-by: Sean Christopherson --- arch/x86/kvm/vmx/nested.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c index 40777278eabb..6137e5307d0f 100644 --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c @@ -19,6 +19,7 @@ #include "trace.h" #include "vmx.h" #include "smm.h" +#include "x86_ops.h" =20 static bool __read_mostly enable_shadow_vmcs =3D 1; module_param_named(enable_shadow_vmcs, enable_shadow_vmcs, bool, S_IRUGO); @@ -5165,7 +5166,7 @@ void __nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 v= m_exit_reason, =20 if (vmx->nested.update_vmcs01_apicv_status) { vmx->nested.update_vmcs01_apicv_status =3D false; - kvm_make_request(KVM_REQ_APICV_UPDATE, vcpu); + vmx_refresh_apicv_exec_ctrl(vcpu); } =20 if (vmx->nested.update_vmcs01_hwapic_isr) { --=20 2.52.0.223.gf5cc29aaa4-goog