Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 27876f38 authored by Juergen Gross's avatar Juergen Gross Committed by Thomas Gleixner
Browse files

x86/paravirt: Remove clobbers from struct paravirt_patch_site



There is no need any longer to store the clobbers in struct
paravirt_patch_site. Remove clobbers from the struct and from the
related macros.

While at it fix some lines longer than 80 characters.

Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-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: boris.ostrovsky@oracle.com
Cc: hpa@zytor.com
Link: https://lkml.kernel.org/r/20180828074026.820-8-jgross@suse.com
parent abc745f8
Loading
Loading
Loading
Loading
+15 −18
Original line number Original line Diff line number Diff line
@@ -827,7 +827,7 @@ extern void default_banner(void);


#else  /* __ASSEMBLY__ */
#else  /* __ASSEMBLY__ */


#define _PVSITE(ptype, clobbers, ops, word, algn)	\
#define _PVSITE(ptype, ops, word, algn)		\
771:;						\
771:;						\
	ops;					\
	ops;					\
772:;						\
772:;						\
@@ -836,7 +836,6 @@ extern void default_banner(void);
	 word 771b;				\
	 word 771b;				\
	 .byte ptype;				\
	 .byte ptype;				\
	 .byte 772b-771b;			\
	 .byte 772b-771b;			\
	 .short clobbers;			\
	.popsection
	.popsection




@@ -869,7 +868,7 @@ extern void default_banner(void);
	COND_POP(set, CLBR_RAX, rax)
	COND_POP(set, CLBR_RAX, rax)


#define PARA_PATCH(struct, off)        ((PARAVIRT_PATCH_##struct + (off)) / 8)
#define PARA_PATCH(struct, off)        ((PARAVIRT_PATCH_##struct + (off)) / 8)
#define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .quad, 8)
#define PARA_SITE(ptype, ops)	_PVSITE(ptype, ops, .quad, 8)
#define PARA_INDIRECT(addr)	*addr(%rip)
#define PARA_INDIRECT(addr)	*addr(%rip)
#else
#else
#define PV_SAVE_REGS(set)			\
#define PV_SAVE_REGS(set)			\
@@ -884,24 +883,24 @@ extern void default_banner(void);
	COND_POP(set, CLBR_EAX, eax)
	COND_POP(set, CLBR_EAX, eax)


#define PARA_PATCH(struct, off)        ((PARAVIRT_PATCH_##struct + (off)) / 4)
#define PARA_PATCH(struct, off)        ((PARAVIRT_PATCH_##struct + (off)) / 4)
#define PARA_SITE(ptype, clobbers, ops) _PVSITE(ptype, clobbers, ops, .long, 4)
#define PARA_SITE(ptype, ops)	_PVSITE(ptype, ops, .long, 4)
#define PARA_INDIRECT(addr)	*%cs:addr
#define PARA_INDIRECT(addr)	*%cs:addr
#endif
#endif


#define INTERRUPT_RETURN						\
#define INTERRUPT_RETURN						\
	PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_iret), CLBR_NONE,	\
	PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_iret),			\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_iret);)
		  jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_iret);)


#define DISABLE_INTERRUPTS(clobbers)					\
#define DISABLE_INTERRUPTS(clobbers)					\
	PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_irq_disable), clobbers, \
	PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_irq_disable),		\
		  PV_SAVE_REGS(clobbers | CLBR_CALLEE_SAVE);		\
		  PV_SAVE_REGS(clobbers | CLBR_CALLEE_SAVE);		\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  call PARA_INDIRECT(pv_irq_ops+PV_IRQ_irq_disable);	\
		  call PARA_INDIRECT(pv_irq_ops+PV_IRQ_irq_disable);	\
		  PV_RESTORE_REGS(clobbers | CLBR_CALLEE_SAVE);)
		  PV_RESTORE_REGS(clobbers | CLBR_CALLEE_SAVE);)


#define ENABLE_INTERRUPTS(clobbers)					\
#define ENABLE_INTERRUPTS(clobbers)					\
	PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_irq_enable), clobbers,	\
	PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_irq_enable),		\
		  PV_SAVE_REGS(clobbers | CLBR_CALLEE_SAVE);		\
		  PV_SAVE_REGS(clobbers | CLBR_CALLEE_SAVE);		\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  call PARA_INDIRECT(pv_irq_ops+PV_IRQ_irq_enable);	\
		  call PARA_INDIRECT(pv_irq_ops+PV_IRQ_irq_enable);	\
@@ -921,8 +920,7 @@ extern void default_banner(void);
 * inlined, or the swapgs instruction must be trapped and emulated.
 * inlined, or the swapgs instruction must be trapped and emulated.
 */
 */
#define SWAPGS_UNSAFE_STACK						\
#define SWAPGS_UNSAFE_STACK						\
	PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_swapgs), CLBR_NONE,	\
	PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_swapgs), swapgs)
		  swapgs)


/*
/*
 * Note: swapgs is very special, and in practise is either going to be
 * Note: swapgs is very special, and in practise is either going to be
@@ -931,7 +929,7 @@ extern void default_banner(void);
 * it.
 * it.
 */
 */
#define SWAPGS								\
#define SWAPGS								\
	PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_swapgs), CLBR_NONE,	\
	PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_swapgs),		\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  call PARA_INDIRECT(pv_cpu_ops+PV_CPU_swapgs);		\
		  call PARA_INDIRECT(pv_cpu_ops+PV_CPU_swapgs);		\
		 )
		 )
@@ -942,13 +940,12 @@ extern void default_banner(void);


#define USERGS_SYSRET64							\
#define USERGS_SYSRET64							\
	PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_usergs_sysret64),	\
	PARA_SITE(PARA_PATCH(pv_cpu_ops, PV_CPU_usergs_sysret64),	\
		  CLBR_NONE,						\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  ANNOTATE_RETPOLINE_SAFE;				\
		  jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret64);)
		  jmp PARA_INDIRECT(pv_cpu_ops+PV_CPU_usergs_sysret64);)


#ifdef CONFIG_DEBUG_ENTRY
#ifdef CONFIG_DEBUG_ENTRY
#define SAVE_FLAGS(clobbers)                                        \
#define SAVE_FLAGS(clobbers)                                        \
	PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_save_fl), clobbers, \
	PARA_SITE(PARA_PATCH(pv_irq_ops, PV_IRQ_save_fl),	    \
		  PV_SAVE_REGS(clobbers | CLBR_CALLEE_SAVE);        \
		  PV_SAVE_REGS(clobbers | CLBR_CALLEE_SAVE);        \
		  ANNOTATE_RETPOLINE_SAFE;			    \
		  ANNOTATE_RETPOLINE_SAFE;			    \
		  call PARA_INDIRECT(pv_irq_ops+PV_IRQ_save_fl);    \
		  call PARA_INDIRECT(pv_irq_ops+PV_IRQ_save_fl);    \
+0 −1
Original line number Original line Diff line number Diff line
@@ -681,7 +681,6 @@ struct paravirt_patch_site {
	u8 *instr; 		/* original instructions */
	u8 *instr; 		/* original instructions */
	u8 instrtype;		/* type of this instruction */
	u8 instrtype;		/* type of this instruction */
	u8 len;			/* length of original instruction */
	u8 len;			/* length of original instruction */
	u16 clobbers;		/* what registers you may clobber */
};
};


extern struct paravirt_patch_site __parainstructions[],
extern struct paravirt_patch_site __parainstructions[],