From nobody Fri Apr 3 09:35:18 2026 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (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 A3E09338591 for ; Wed, 18 Feb 2026 23:10:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771456217; cv=none; b=VA+M938AvrDjbk12N6UOc4VGGQMiS4dypbRcqfejN/DVhexgTHx4/xL3kbSE+PHZhycZZO0joc6jZEqXdQlrVVOhYSVJgcdwuuhfvQB785PiN1Wx3GLeLUrV8rFxQb3iSLrMgrbFy7+X41T78of+9bfPZg3BUuVDw8yEKf1o7GQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771456217; c=relaxed/simple; bh=6FyplMM1/1R9SGHEATi52jcFIHbZhtgrlM8MlbeHBx0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=OVktEK52W6FrkE7tGHlhdsctoZ+LZluvlv9xbVoCkUIQyc6ryRV0x+Y5c7Xag9sbqIXTKLWMEl/4SnlOHlC+HmOdukM1EUfdjvTGk+V9nuGfDqttOhNYjBlJyyE/VnU2QZBm7ZD6lr6t1VW0lxAC0qA0GSK1JrABt65YAtA2FPE= 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=FPB5h3Ne; arc=none smtp.client-ip=209.85.216.74 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="FPB5h3Ne" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-35464d7c539so274555a91.0 for ; Wed, 18 Feb 2026 15:10:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1771456211; x=1772061011; 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=CwBzC8ApcuV0uoozPZcU/zrvhWxwiR2ykbpvaueWHXY=; b=FPB5h3Ne1Wu3a58F+GMnDsHUPKHA0LHBfe5X9pbcl0K6mNNoqe+c8lCeoxrvdo3gx2 MiKOsoKJksbqsuNnfgJn/W+BLPsfVdGjdhPtIlIMeqB82zXDnLljyuRFstdKrobP2tfL vp67Gw4NuU09Pevjrf+yAYP9yAH7NcGH2rpeOMLIiSPatpkof+mMXN2bwK6wQn53EuKq IOPmbmvNqJLAmEUdl00eN9p6ZrxxdE6jcVz+uyh7kQ1ywimr2HPBJ+RIeOdIJq/mZG+H Zs3/C67qP3L/4YXlxR43w97LvAk0iBb98RzBsSduhnuQIyWBgEdjNoOpOrGIeP5V5hWt uwoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771456211; x=1772061011; 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=CwBzC8ApcuV0uoozPZcU/zrvhWxwiR2ykbpvaueWHXY=; b=MaJqqKPYlvXD89ouVEJcSqTW7n7k+WCxl/yJmrAhIsOPYJw6oIQVgTtX/3tlx1Vgq1 sRLxvXOKvh0tYbjL4xTTiQALHHmWpsQC9jmZPukwbEruNdTGyHEg6KgcgKEYLvd7N+a6 7TYwyPKFHSB/mJjF56ZY91QZrEh8QCWlwLinoBgnZRFAD8Ldi9RP60KpHUfSuWW0drqF D2e0o0KwuuLNjUZH4wzQvg+fE2nMmNOKpLBYz3ZDxG1i1JdhK0RrlHSBnSlAD+b8OetY CtQaFQTOagmwbh6UbPU01zCGaaKnU69MlFtCMwAjGQmncFjG4DaCEUh+jQatsnx8J86Y uquA== X-Forwarded-Encrypted: i=1; AJvYcCUPxljKpk7C3m2XPDtSkqvB8MYsXqFddiS8J1mN1mICt1U1Fa3T0E0pTFH1McsGB7wlH1/F7oVIN5CTxk8=@vger.kernel.org X-Gm-Message-State: AOJu0YxEbtgTOCwS07SMzC4FiXT3FqlmMzlJ2WQ55YNpDCsH2isyc6Iz HsrkPuwzoKRRsPTGIgkDxwc4aPSJdWFFd+W1CGOy0JkjdsMtauEvR4APNPUlyQhLhe3RO8NHr7j HmaDEOg== X-Received: from pjph2.prod.google.com ([2002:a17:90a:9c02:b0:351:c17:c7b9]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3cd:b0:356:3ba2:1233 with SMTP id 98e67ed59e1d1-35844f9bf1dmr8741212a91.22.1771456210724; Wed, 18 Feb 2026 15:10:10 -0800 (PST) Reply-To: Sean Christopherson Date: Wed, 18 Feb 2026 15:09:55 -0800 In-Reply-To: <20260218230958.2877682-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: <20260218230958.2877682-1-seanjc@google.com> X-Mailer: git-send-email 2.53.0.345.g96ddfc5eaa-goog Message-ID: <20260218230958.2877682-6-seanjc@google.com> Subject: [PATCH v2 5/8] KVM: nSVM: Use intuitive local variables in nested_vmcb02_recalc_intercepts() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Yosry Ahmed Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now that nested_vmcb02_recalc_intercepts() is explicitly scoped to deal with *only* recalculating vmcb02 intercepts, rename its local variables to use more intuivite names. The current "c", "h", and "g" local variables, for the current VMCB, vmcb01, and (cached) vmcb12 respectively, are short and sweet, but don't do much to help unfamiliar readers understand what the code is doing. Use vmcb12_ctrl/vmcb01/vmcb02/vmcb12_ctrl in lieu of c/h/g to make it clear the function is updating intercepts in vmcb02 based on the intercepts in vmcb01 and (cached) vmcb12. Opportunistically change the existing WARN_ON to a WARN_ON_ONCE so that a KVM bug doesn't unintentionally DoS the host. No functional change intended. Signed-off-by: Yosry Ahmed [sean: use WARN_ON_ONCE, keep local vmcb12 cache as vmcb12_ctrl] Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/nested.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c index e8512de5aef7..bda2d6d613c9 100644 --- a/arch/x86/kvm/svm/nested.c +++ b/arch/x86/kvm/svm/nested.c @@ -124,23 +124,20 @@ static bool nested_vmcb_needs_vls_intercept(struct vc= pu_svm *svm) =20 void nested_vmcb02_recalc_intercepts(struct vcpu_svm *svm) { - struct vmcb_control_area *c, *h; - struct vmcb_ctrl_area_cached *g; + struct vmcb_ctrl_area_cached *vmcb12_ctrl =3D &svm->nested.ctl; + struct vmcb *vmcb02 =3D svm->nested.vmcb02.ptr; + struct vmcb *vmcb01 =3D svm->vmcb01.ptr; unsigned int i; =20 - if (WARN_ON_ONCE(svm->vmcb !=3D svm->nested.vmcb02.ptr)) + if (WARN_ON_ONCE(svm->vmcb !=3D vmcb02)) return; =20 - vmcb_mark_dirty(svm->vmcb, VMCB_INTERCEPTS); - - c =3D &svm->vmcb->control; - h =3D &svm->vmcb01.ptr->control; - g =3D &svm->nested.ctl; + vmcb_mark_dirty(vmcb02, VMCB_INTERCEPTS); =20 for (i =3D 0; i < MAX_INTERCEPT; i++) - c->intercepts[i] =3D h->intercepts[i]; + vmcb02->control.intercepts[i] =3D vmcb01->control.intercepts[i]; =20 - if (g->int_ctl & V_INTR_MASKING_MASK) { + if (vmcb12_ctrl->int_ctl & V_INTR_MASKING_MASK) { /* * If L2 is active and V_INTR_MASKING is enabled in vmcb12, * disable intercept of CR8 writes as L2's CR8 does not affect @@ -151,9 +148,9 @@ void nested_vmcb02_recalc_intercepts(struct vcpu_svm *s= vm) * the effective RFLAGS.IF for L1 interrupts will never be set * while L2 is running (L2's RFLAGS.IF doesn't affect L1 IRQs). */ - vmcb_clr_intercept(c, INTERCEPT_CR8_WRITE); - if (!(svm->vmcb01.ptr->save.rflags & X86_EFLAGS_IF)) - vmcb_clr_intercept(c, INTERCEPT_VINTR); + vmcb_clr_intercept(&vmcb02->control, INTERCEPT_CR8_WRITE); + if (!(vmcb01->save.rflags & X86_EFLAGS_IF)) + vmcb_clr_intercept(&vmcb02->control, INTERCEPT_VINTR); } =20 /* @@ -161,14 +158,14 @@ void nested_vmcb02_recalc_intercepts(struct vcpu_svm = *svm) * flush feature is enabled. */ if (!nested_svm_l2_tlb_flush_enabled(&svm->vcpu)) - vmcb_clr_intercept(c, INTERCEPT_VMMCALL); + vmcb_clr_intercept(&vmcb02->control, INTERCEPT_VMMCALL); =20 for (i =3D 0; i < MAX_INTERCEPT; i++) - c->intercepts[i] |=3D g->intercepts[i]; + vmcb02->control.intercepts[i] |=3D vmcb12_ctrl->intercepts[i]; =20 /* If SMI is not intercepted, ignore guest SMI intercept as well */ if (!intercept_smi) - vmcb_clr_intercept(c, INTERCEPT_SMI); + vmcb_clr_intercept(&vmcb02->control, INTERCEPT_SMI); =20 if (nested_vmcb_needs_vls_intercept(svm)) { /* @@ -176,10 +173,10 @@ void nested_vmcb02_recalc_intercepts(struct vcpu_svm = *svm) * we must intercept these instructions to correctly * emulate them in case L1 doesn't intercept them. */ - vmcb_set_intercept(c, INTERCEPT_VMLOAD); - vmcb_set_intercept(c, INTERCEPT_VMSAVE); + vmcb_set_intercept(&vmcb02->control, INTERCEPT_VMLOAD); + vmcb_set_intercept(&vmcb02->control, INTERCEPT_VMSAVE); } else { - WARN_ON(!(c->virt_ext & VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK)); + WARN_ON_ONCE(!(vmcb02->control.virt_ext & VIRTUAL_VMLOAD_VMSAVE_ENABLE_M= ASK)); } } =20 --=20 2.53.0.345.g96ddfc5eaa-goog