Commit 28c11b0f authored by Juergen Gross's avatar Juergen Gross Committed by Thomas Gleixner
Browse files

x86/xen: Move pv irq related functions under CONFIG_XEN_PV umbrella



All functions in arch/x86/xen/irq.c and arch/x86/xen/xen-asm*.S are
specific to PV guests. Include them in the kernel with CONFIG_XEN_PV only.

Make the PV specific code in arch/x86/entry/entry_*.S dependent on
CONFIG_XEN_PV instead of CONFIG_XEN.

The HVM specific code should depend on CONFIG_XEN_PVHVM.

While at it reformat the Makefile to make it more readable.

Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: xen-devel@lists.xenproject.org
Cc: virtualization@lists.linux-foundation.org
Cc: akataria@vmware.com
Cc: rusty@rustcorp.com.au
Cc: hpa@zytor.com
Link: https://lkml.kernel.org/r/20180828074026.820-2-jgross@suse.com
parent 60c1f892
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -782,7 +782,7 @@ GLOBAL(__begin_SYSENTER_singlestep_region)
 * will ignore all of the single-step traps generated in this range.
 */

#ifdef CONFIG_XEN
#ifdef CONFIG_XEN_PV
/*
 * Xen doesn't set %esp to be precisely what the normal SYSENTER
 * entry point expects, so fix it up before using the normal path.
@@ -1240,7 +1240,7 @@ ENTRY(spurious_interrupt_bug)
	jmp	common_exception
END(spurious_interrupt_bug)

#ifdef CONFIG_XEN
#ifdef CONFIG_XEN_PV
ENTRY(xen_hypervisor_callback)
	pushl	$-1				/* orig_ax = -1 => not a system call */
	SAVE_ALL
@@ -1321,11 +1321,13 @@ ENTRY(xen_failsafe_callback)
	_ASM_EXTABLE(3b, 8b)
	_ASM_EXTABLE(4b, 9b)
ENDPROC(xen_failsafe_callback)
#endif /* CONFIG_XEN_PV */

#ifdef CONFIG_XEN_PVHVM
BUILD_INTERRUPT3(xen_hvm_callback_vector, HYPERVISOR_CALLBACK_VECTOR,
		 xen_evtchn_do_upcall)
#endif

#endif /* CONFIG_XEN */

#if IS_ENABLED(CONFIG_HYPERV)

+5 −3
Original line number Diff line number Diff line
@@ -1050,7 +1050,7 @@ ENTRY(do_softirq_own_stack)
	ret
ENDPROC(do_softirq_own_stack)

#ifdef CONFIG_XEN
#ifdef CONFIG_XEN_PV
idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0

/*
@@ -1130,11 +1130,13 @@ ENTRY(xen_failsafe_callback)
	ENCODE_FRAME_POINTER
	jmp	error_exit
END(xen_failsafe_callback)
#endif /* CONFIG_XEN_PV */

#ifdef CONFIG_XEN_PVHVM
apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
	xen_hvm_callback_vector xen_evtchn_do_upcall
#endif

#endif /* CONFIG_XEN */

#if IS_ENABLED(CONFIG_HYPERV)
apicinterrupt3 HYPERVISOR_CALLBACK_VECTOR \
@@ -1151,7 +1153,7 @@ idtentry debug do_debug has_error_code=0 paranoid=1 shift_ist=DEBUG_STACK
idtentry int3			do_int3			has_error_code=0
idtentry stack_segment		do_stack_segment	has_error_code=1

#ifdef CONFIG_XEN
#ifdef CONFIG_XEN_PV
idtentry xennmi			do_nmi			has_error_code=0
idtentry xendebug		do_debug		has_error_code=0
idtentry xenint3		do_int3			has_error_code=0
+31 −10
Original line number Diff line number Diff line
@@ -14,23 +14,44 @@ nostackp := $(call cc-option, -fno-stack-protector)
CFLAGS_enlighten_pv.o		:= $(nostackp)
CFLAGS_mmu_pv.o			:= $(nostackp)

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
obj-y				+= enlighten.o
obj-y				+= multicalls.o
obj-y				+= mmu.o
obj-y				+= time.o
obj-y				+= grant-table.o
obj-y				+= suspend.o
obj-y				+= platform-pci-unplug.o

obj-$(CONFIG_XEN_PVHVM)		+= enlighten_hvm.o
obj-$(CONFIG_XEN_PVHVM)		+= mmu_hvm.o
obj-$(CONFIG_XEN_PVHVM)		+= suspend_hvm.o

obj-$(CONFIG_XEN_PV)		+= setup.o
obj-$(CONFIG_XEN_PV)		+= apic.o
obj-$(CONFIG_XEN_PV)		+= pmu.o
obj-$(CONFIG_XEN_PV)		+= suspend_pv.o
obj-$(CONFIG_XEN_PV)		+= p2m.o
obj-$(CONFIG_XEN_PV)		+= enlighten_pv.o
obj-$(CONFIG_XEN_PV)		+= mmu_pv.o
obj-$(CONFIG_XEN_PV)		+= irq.o
obj-$(CONFIG_XEN_PV)		+= xen-asm.o
obj-$(CONFIG_XEN_PV)		+= xen-asm_$(BITS).o

obj-$(CONFIG_XEN_PVHVM)		+= enlighten_hvm.o mmu_hvm.o suspend_hvm.o
obj-$(CONFIG_XEN_PV)			+= setup.o apic.o pmu.o suspend_pv.o \
						p2m.o enlighten_pv.o mmu_pv.o
obj-$(CONFIG_XEN_PVH)		+= enlighten_pvh.o
obj-$(CONFIG_XEN_PVH)	 	+= xen-pvh.o

obj-$(CONFIG_EVENT_TRACING)	+= trace.o

obj-$(CONFIG_SMP)		+= smp.o
obj-$(CONFIG_XEN_PV_SMP)  	+= smp_pv.o
obj-$(CONFIG_XEN_PVHVM_SMP)  	+= smp_hvm.o

obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= spinlock.o

obj-$(CONFIG_XEN_DEBUG_FS)	+= debugfs.o

obj-$(CONFIG_XEN_DOM0)		+= vga.o

obj-$(CONFIG_SWIOTLB_XEN)	+= pci-swiotlb-xen.o

obj-$(CONFIG_XEN_EFI)		+= efi.o
obj-$(CONFIG_XEN_PVH)	 	+= xen-pvh.o
+2 −0
Original line number Diff line number Diff line
@@ -89,11 +89,13 @@ unsigned irq_from_evtchn(unsigned int evtchn);
int irq_from_virq(unsigned int cpu, unsigned int virq);
unsigned int evtchn_from_irq(unsigned irq);

#ifdef CONFIG_XEN_PVHVM
/* Xen HVM evtchn vector callback */
void xen_hvm_callback_vector(void);
#ifdef CONFIG_TRACING
#define trace_xen_hvm_callback_vector xen_hvm_callback_vector
#endif
#endif
int xen_set_callback_via(uint64_t via);
void xen_evtchn_do_upcall(struct pt_regs *regs);
void xen_hvm_evtchn_do_upcall(void);