bool "Xen guest support"
        depends on PARAVIRT
        select PARAVIRT_CLOCK
-       select XEN_HAVE_VPMU
        depends on X86_64 || (X86_32 && X86_PAE)
        depends on X86_LOCAL_APIC && X86_TSC
        help
        default y
        depends on XEN
        select XEN_HAVE_PVMMU
+       select XEN_HAVE_VPMU
        help
          Support running as a Xen PV guest.
 
 
 CFLAGS_enlighten_pv.o          := $(nostackp)
 CFLAGS_mmu_pv.o                := $(nostackp)
 
-obj-y          := enlighten.o setup.o multicalls.o mmu.o irq.o \
+obj-y          := enlighten.o multicalls.o mmu.o irq.o \
                        time.o xen-asm.o xen-asm_$(BITS).o \
                        grant-table.o suspend.o platform-pci-unplug.o \
-                       p2m.o apic.o pmu.o enlighten_pv.o mmu_pv.o
+                       p2m.o enlighten_pv.o mmu_pv.o
 
 obj-$(CONFIG_XEN_PVHVM)                += enlighten_hvm.o mmu_hvm.o suspend_hvm.o
-obj-$(CONFIG_XEN_PV)                   += suspend_pv.o
+obj-$(CONFIG_XEN_PV)                   += setup.o apic.o pmu.o suspend_pv.o
 obj-$(CONFIG_XEN_PVH)                  += enlighten_pvh.o
 
 obj-$(CONFIG_EVENT_TRACING) += trace.o
 
 #include <xen/interface/xenpmu.h>
 
 irqreturn_t xen_pmu_irq_handler(int irq, void *dev_id);
+#ifdef CONFIG_XEN_HAVE_VPMU
 void xen_pmu_init(int cpu);
 void xen_pmu_finish(int cpu);
+#else
+static inline void xen_pmu_init(int cpu) {}
+static inline void xen_pmu_finish(int cpu) {}
+#endif
 bool is_xen_pmu(int cpu);
 bool pmu_msr_read(unsigned int msr, uint64_t *val, int *err);
 bool pmu_msr_write(unsigned int msr, uint32_t low, uint32_t high, int *err);