Subject: Re: randconfig build error with next-20150209, in arch/x86/kvm/vmx.c

From: Radim Krčmář <[email-masked]>
Date: Mon, 9 Feb 2015 22:44:07 +0100

2015-02-09 10:46-0700, Jim Davis:
> Building with the attached random configuration file,

Thank you for catching it!

> arch/x86/kvm/vmx.c: In function ‘vmx_deliver_nested_posted_interrupt’:
> arch/x86/kvm/vmx.c:4378:4: error: ‘apic’ undeclared (first use in this function)
>     apic->send_IPI_mask(get_cpu_mask(vcpu->cpu),
>     ^

---8<---
KVM: VMX: include <asm/apic.h> to fix build error

<asm/apic.h> isn't included directly and without CONFIG_SMP, an option
that automagically pulls it can't be enabled.

Reported-by: Jim Davis <[email-masked]>
Signed-off-by: Radim Krčmář <[email-masked]>
---
 We could just #ifdef because the vcpu isn't running at that time,
 but I think that including the header instead of introducing an
 exception is worth the slowdown on UP.   #ifdef for comparison:
   @@ -4374,9 +4374,11 @@ static int vmx_deliver_nested_posted_interrupt(struct kvm_vcpu *vcpu,
    	if (is_guest_mode(vcpu) &&
    	    vector == vmx->nested.posted_intr_nv) {
    		/* the PIR and ON have been set by L1. */
   +#ifdef CONFIG_SMP
    		if (vcpu->mode == IN_GUEST_MODE)
    			apic->send_IPI_mask(get_cpu_mask(vcpu->cpu),
    				POSTED_INTR_VECTOR);
   +#endif
    		/*
    		 * If a posted intr is not recognized by hardware,
    		 * we will accomplish it in the next vmentry.
 
 arch/x86/kvm/vmx.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 6e112472b0b3..3f73bfad0349 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -45,6 +45,7 @@
 #include <asm/perf_event.h>
 #include <asm/debugreg.h>
 #include <asm/kexec.h>
+#include <asm/apic.h>
 
 #include "trace.h"