Reading a vCPU's APIC ID from the host means open coding KVM_GET_LAPIC and picking the field out of the register block, which several tests already do. Add a helper next to the other APIC definitions so that a test that needs to target a vCPU, e.g. to send it an IPI, can just ask for its ID.
Assisted-by: Cursor:claude-opus-5 Signed-off-by: Hemanth Selam <[email protected]> --- tools/testing/selftests/kvm/include/x86/apic.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/kvm/include/x86/apic.h b/tools/testing/selftests/kvm/include/x86/apic.h index 31887bdc3d6c..293044c81228 100644 --- a/tools/testing/selftests/kvm/include/x86/apic.h +++ b/tools/testing/selftests/kvm/include/x86/apic.h @@ -79,6 +79,15 @@ void apic_disable(void); void xapic_enable(void); void x2apic_enable(void); +/* Reads the APIC ID of a vCPU from the host, e.g. to target an IPI at it. */ +static inline u32 vcpu_get_apic_id(struct kvm_vcpu *vcpu) +{ + struct kvm_lapic_state lapic; + + vcpu_ioctl(vcpu, KVM_GET_LAPIC, &lapic); + return GET_APIC_ID_FIELD(*(u32 *)&lapic.regs[APIC_ID]); +} + static inline u32 get_bsp_flag(void) { return rdmsr(MSR_IA32_APICBASE) & MSR_IA32_APICBASE_BSP; -- 2.43.7

