Merge branch 'kvm-guest-sev-migration' into kvm-master
[platform/kernel/linux-starfive.git] / arch / x86 / include / asm / paravirt.h
index 540bf8c..21c4a69 100644 (file)
@@ -52,11 +52,11 @@ void __init paravirt_set_cap(void);
 /* The paravirtualized I/O functions */
 static inline void slow_down_io(void)
 {
-       pv_ops.cpu.io_delay();
+       PVOP_VCALL0(cpu.io_delay);
 #ifdef REALLY_SLOW_IO
-       pv_ops.cpu.io_delay();
-       pv_ops.cpu.io_delay();
-       pv_ops.cpu.io_delay();
+       PVOP_VCALL0(cpu.io_delay);
+       PVOP_VCALL0(cpu.io_delay);
+       PVOP_VCALL0(cpu.io_delay);
 #endif
 }
 
@@ -119,12 +119,12 @@ static inline void __cpuid(unsigned int *eax, unsigned int *ebx,
 /*
  * These special macros can be used to get or set a debugging register
  */
-static inline unsigned long paravirt_get_debugreg(int reg)
+static __always_inline unsigned long paravirt_get_debugreg(int reg)
 {
        return PVOP_CALL1(unsigned long, cpu.get_debugreg, reg);
 }
 #define get_debugreg(var, reg) var = paravirt_get_debugreg(reg)
-static inline void set_debugreg(unsigned long val, int reg)
+static __always_inline void set_debugreg(unsigned long val, int reg)
 {
        PVOP_VCALL2(cpu.set_debugreg, reg, val);
 }
@@ -139,14 +139,14 @@ static inline void write_cr0(unsigned long x)
        PVOP_VCALL1(cpu.write_cr0, x);
 }
 
-static inline unsigned long read_cr2(void)
+static __always_inline unsigned long read_cr2(void)
 {
        return PVOP_ALT_CALLEE0(unsigned long, mmu.read_cr2,
                                "mov %%cr2, %%rax;",
                                ALT_NOT(X86_FEATURE_XENPV));
 }
 
-static inline void write_cr2(unsigned long x)
+static __always_inline void write_cr2(unsigned long x)
 {
        PVOP_VCALL1(mmu.write_cr2, x);
 }
@@ -659,10 +659,10 @@ bool __raw_callee_save___native_vcpu_is_preempted(long cpu);
  * functions.
  */
 #define PV_THUNK_NAME(func) "__raw_callee_save_" #func
-#define PV_CALLEE_SAVE_REGS_THUNK(func)                                        \
+#define __PV_CALLEE_SAVE_REGS_THUNK(func, section)                     \
        extern typeof(func) __raw_callee_save_##func;                   \
                                                                        \
-       asm(".pushsection .text;"                                       \
+       asm(".pushsection " section ", \"ax\";"                         \
            ".globl " PV_THUNK_NAME(func) ";"                           \
            ".type " PV_THUNK_NAME(func) ", @function;"                 \
            PV_THUNK_NAME(func) ":"                                     \
@@ -675,6 +675,9 @@ bool __raw_callee_save___native_vcpu_is_preempted(long cpu);
            ".size " PV_THUNK_NAME(func) ", .-" PV_THUNK_NAME(func) ";" \
            ".popsection")
 
+#define PV_CALLEE_SAVE_REGS_THUNK(func)                        \
+       __PV_CALLEE_SAVE_REGS_THUNK(func, ".text")
+
 /* Get a reference to a callee-save function */
 #define PV_CALLEE_SAVE(func)                                           \
        ((struct paravirt_callee_save) { __raw_callee_save_##func })
@@ -684,23 +687,23 @@ bool __raw_callee_save___native_vcpu_is_preempted(long cpu);
        ((struct paravirt_callee_save) { func })
 
 #ifdef CONFIG_PARAVIRT_XXL
-static inline notrace unsigned long arch_local_save_flags(void)
+static __always_inline unsigned long arch_local_save_flags(void)
 {
        return PVOP_ALT_CALLEE0(unsigned long, irq.save_fl, "pushf; pop %%rax;",
                                ALT_NOT(X86_FEATURE_XENPV));
 }
 
-static inline notrace void arch_local_irq_disable(void)
+static __always_inline void arch_local_irq_disable(void)
 {
        PVOP_ALT_VCALLEE0(irq.irq_disable, "cli;", ALT_NOT(X86_FEATURE_XENPV));
 }
 
-static inline notrace void arch_local_irq_enable(void)
+static __always_inline void arch_local_irq_enable(void)
 {
        PVOP_ALT_VCALLEE0(irq.irq_enable, "sti;", ALT_NOT(X86_FEATURE_XENPV));
 }
 
-static inline notrace unsigned long arch_local_irq_save(void)
+static __always_inline unsigned long arch_local_irq_save(void)
 {
        unsigned long f;