Commit fe954bcd authored by Neeraj Upadhyay's avatar Neeraj Upadhyay Committed by Sean Christopherson
Browse files

x86/apic: KVM: Move lapic set/clear_vector() helpers to common code



Move apic_clear_vector() and apic_set_vector() helper functions to
apic.h in order to reuse them in the Secure AVIC guest APIC driver
in later patches to atomically set/clear vectors in the APIC backing
page.

No functional change intended.

Signed-off-by: default avatarNeeraj Upadhyay <Neeraj.Upadhyay@amd.com>
Acked-by: default avatarSean Christopherson <seanjc@google.com>
Link: https://lore.kernel.org/r/20250709033242.267892-13-Neeraj.Upadhyay@amd.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent 3d3a9083
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -547,6 +547,16 @@ static __always_inline void apic_set_reg64(void *regs, int reg, u64 val)
	*((u64 *) (regs + reg)) = val;
}

static inline void apic_clear_vector(int vec, void *bitmap)
{
	clear_bit(APIC_VECTOR_TO_BIT_NUMBER(vec), bitmap + APIC_VECTOR_TO_REG_OFFSET(vec));
}

static inline void apic_set_vector(int vec, void *bitmap)
{
	set_bit(APIC_VECTOR_TO_BIT_NUMBER(vec), bitmap + APIC_VECTOR_TO_REG_OFFSET(vec));
}

/*
 * Warm reset vector position:
 */
+0 −10
Original line number Diff line number Diff line
@@ -147,16 +147,6 @@ void kvm_lapic_exit(void);

u64 kvm_lapic_readable_reg_mask(struct kvm_lapic *apic);

static inline void apic_clear_vector(int vec, void *bitmap)
{
	clear_bit(APIC_VECTOR_TO_BIT_NUMBER(vec), bitmap + APIC_VECTOR_TO_REG_OFFSET(vec));
}

static inline void apic_set_vector(int vec, void *bitmap)
{
	set_bit(APIC_VECTOR_TO_BIT_NUMBER(vec), bitmap + APIC_VECTOR_TO_REG_OFFSET(vec));
}

static inline void kvm_lapic_set_irr(int vec, struct kvm_lapic *apic)
{
	apic_set_vector(vec, apic->regs + APIC_IRR);