/*
  * 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);
 }
 
        return _hypercall2(int, set_debugreg, reg, value);
 }
 
-static inline unsigned long
+static __always_inline unsigned long
 HYPERVISOR_get_debugreg(int reg)
 {
        return _hypercall1(unsigned long, get_debugreg, reg);
 
 {
        native_write_cr2(val);
 }
+
+static noinstr unsigned long pv_native_get_debugreg(int regno)
+{
+       return native_get_debugreg(regno);
+}
 #endif
 
 enum paravirt_lazy_mode paravirt_get_lazy_mode(void)
 
 #ifdef CONFIG_PARAVIRT_XXL
        .cpu.cpuid              = native_cpuid,
-       .cpu.get_debugreg       = native_get_debugreg,
+       .cpu.get_debugreg       = pv_native_get_debugreg,
        .cpu.set_debugreg       = native_set_debugreg,
        .cpu.read_cr0           = native_read_cr0,
        .cpu.write_cr0          = native_write_cr0,
 
 #ifdef CONFIG_PARAVIRT_XXL
 /* At this point, native_get/set_debugreg has real function entries */
-NOKPROBE_SYMBOL(native_get_debugreg);
 NOKPROBE_SYMBOL(native_set_debugreg);
 NOKPROBE_SYMBOL(native_load_idt);
 
 
        HYPERVISOR_set_debugreg(reg, val);
 }
 
-static unsigned long xen_get_debugreg(int reg)
+static noinstr unsigned long xen_get_debugreg(int reg)
 {
        return HYPERVISOR_get_debugreg(reg);
 }