2015-02-09 17:47:00

by Jim Davis

[permalink] [raw]
Subject: randconfig build error with next-20150209, in arch/x86/kvm/vmx.c

Building with the attached random configuration file,

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),
^
arch/x86/kvm/vmx.c:4378:4: note: each undeclared identifier is
reported only once for each function it appears in
CC kernel/locking/mutex.o
make[2]: *** [arch/x86/kvm/vmx.o] Error 1


Attachments:
randconfig-1423477786.txt (68.25 kB)

2015-02-09 21:44:24

by Radim Krčmář

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

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 protected]>
Signed-off-by: Radim Krčmář <[email protected]>
---
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"