aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/Kconfig.debug10
-rw-r--r--arch/i386/kernel/alternative.c14
2 files changed, 1 insertions, 23 deletions
diff --git a/arch/i386/Kconfig.debug b/arch/i386/Kconfig.debug
index 458bc1611933..b31c0802e1cc 100644
--- a/arch/i386/Kconfig.debug
+++ b/arch/i386/Kconfig.debug
@@ -85,14 +85,4 @@ config DOUBLEFAULT
85 option saves about 4k and might cause you much additional grey 85 option saves about 4k and might cause you much additional grey
86 hair. 86 hair.
87 87
88config DEBUG_PARAVIRT
89 bool "Enable some paravirtualization debugging"
90 default n
91 depends on PARAVIRT && DEBUG_KERNEL
92 help
93 Currently deliberately clobbers regs which are allowed to be
94 clobbered in inlined paravirt hooks, even in native mode.
95 If turning this off solves a problem, then DISABLE_INTERRUPTS() or
96 ENABLE_INTERRUPTS() is lying about what registers can be clobbered.
97
98endmenu 88endmenu
diff --git a/arch/i386/kernel/alternative.c b/arch/i386/kernel/alternative.c
index 9b8e85a8edec..915b6c4d9baf 100644
--- a/arch/i386/kernel/alternative.c
+++ b/arch/i386/kernel/alternative.c
@@ -334,19 +334,7 @@ void apply_paravirt(struct paravirt_patch *start, struct paravirt_patch *end)
334 334
335 used = paravirt_ops.patch(p->instrtype, p->clobbers, p->instr, 335 used = paravirt_ops.patch(p->instrtype, p->clobbers, p->instr,
336 p->len); 336 p->len);
337#ifdef CONFIG_DEBUG_PARAVIRT 337
338 {
339 int i;
340 /* Deliberately clobber regs using "not %reg" to find bugs. */
341 for (i = 0; i < 3; i++) {
342 if (p->len - used >= 2 && (p->clobbers & (1 << i))) {
343 memcpy(p->instr + used, "\xf7\xd0", 2);
344 p->instr[used+1] |= i;
345 used += 2;
346 }
347 }
348 }
349#endif
350 /* Pad the rest with nops */ 338 /* Pad the rest with nops */
351 nop_out(p->instr + used, p->len - used); 339 nop_out(p->instr + used, p->len - used);
352 } 340 }