public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Sean Christopherson <seanjc@google.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 1/7] KVM: x86: Short-circuit all kvm_lapic_set_base() if MSR value isn't changing
Date: Wed,  9 Oct 2024 11:17:35 -0700	[thread overview]
Message-ID: <20241009181742.1128779-2-seanjc@google.com> (raw)
In-Reply-To: <20241009181742.1128779-1-seanjc@google.com>

Do nothing in kvm_lapic_set_base() if the APIC base MSR value is the same
as the current value.  All flows except the handling of the base address
explicitly take effect if and only if relevant bits are changing.

For the base address, invoking kvm_lapic_set_base() before KVM initializes
the base to APIC_DEFAULT_PHYS_BASE during vCPU RESET would be a KVM bug,
i.e. KVM _must_ initialize apic->base_address before exposing the vCPU (to
userspace or KVM at-large).

Note, the inhibit is intended to be set if the base address is _changed_
from the default, i.e. is also covered by the RESET behavior.

Signed-off-by: Sean Christopherson <seanjc@google.com>
---
 arch/x86/kvm/lapic.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 2098dc689088..ffccd6e7e5c1 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -2582,6 +2582,9 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value)
 	u64 old_value = vcpu->arch.apic_base;
 	struct kvm_lapic *apic = vcpu->arch.apic;
 
+	if (old_value == value)
+		return;
+
 	vcpu->arch.apic_base = value;
 
 	if ((old_value ^ value) & MSR_IA32_APICBASE_ENABLE)
-- 
2.47.0.rc1.288.g06298d1525-goog


  reply	other threads:[~2024-10-09 18:17 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-09 18:17 [PATCH 0/7] KVM: x86: Clean up MSR_IA32_APICBASE_BASE code Sean Christopherson
2024-10-09 18:17 ` Sean Christopherson [this message]
2024-10-09 18:17 ` [PATCH 2/7] KVM: x86: Drop superfluous kvm_lapic_set_base() call when setting APIC state Sean Christopherson
2024-10-09 18:17 ` [PATCH 3/7] KVM: x86: Get vcpu->arch.apic_base directly and drop kvm_get_apic_base() Sean Christopherson
2024-10-09 18:17 ` [PATCH 4/7] KVM: x86: Inline kvm_get_apic_mode() in lapic.h Sean Christopherson
2024-10-09 18:17 ` [PATCH 5/7] KVM: x86: Move kvm_set_apic_base() implementation to lapic.c (from x86.c) Sean Christopherson
2024-10-14 12:09   ` Huang, Kai
2024-10-14 19:06     ` Sean Christopherson
2024-10-14 19:40       ` Sean Christopherson
2024-10-14 23:22         ` Huang, Kai
2024-10-09 18:17 ` [PATCH 6/7] KVM: x86: Rename APIC base setters to better capture their relationship Sean Christopherson
2024-10-10 12:53   ` Paolo Bonzini
2024-10-09 18:17 ` [PATCH 7/7] KVM: x86: Make kvm_recalculate_apic_map() local to lapic.c Sean Christopherson
2024-10-14 12:10 ` [PATCH 0/7] KVM: x86: Clean up MSR_IA32_APICBASE_BASE code Huang, Kai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241009181742.1128779-2-seanjc@google.com \
    --to=seanjc@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox