Skip to content

Commit

Permalink
[PATCH] i386: PARAVIRT: Allow boot-time disable of paravirt_ops patching
Browse files Browse the repository at this point in the history
Add "noreplace-paravirt" to disable paravirt_ops patching.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  • Loading branch information
Jeremy Fitzhardinge authored and Andi Kleen committed May 2, 2007
1 parent 752783c commit 959b4fd
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ parameter is applicable:
GENERIC_TIME The generic timeofday code is enabled.
NFS Appropriate NFS support is enabled.
OSS OSS sound support is enabled.
PV_OPS A paravirtualized kernel
PARIDE The ParIDE subsystem is enabled.
PARISC The PA-RISC architecture is enabled.
PCI PCI bus support is enabled.
Expand Down Expand Up @@ -1164,6 +1165,8 @@ and is between 256 and 4096 characters. It is defined in the file

nomce [IA-32] Machine Check Exception

noreplace-paravirt [IA-32,PV_OPS] Don't patch paravirt_ops

noreplace-smp [IA-32,SMP] Don't replace SMP instructions
with UP alternatives

Expand Down
13 changes: 13 additions & 0 deletions arch/i386/kernel/alternative.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,16 @@ static int __init setup_noreplace_smp(char *str)
}
__setup("noreplace-smp", setup_noreplace_smp);

#ifdef CONFIG_PARAVIRT
static int noreplace_paravirt = 0;

static int __init setup_noreplace_paravirt(char *str)
{
noreplace_paravirt = 1;
return 1;
}
__setup("noreplace-paravirt", setup_noreplace_paravirt);
#endif

#define DPRINTK(fmt, args...) if (debug_alternative) \
printk(KERN_DEBUG fmt, args)
Expand Down Expand Up @@ -330,6 +340,9 @@ void apply_paravirt(struct paravirt_patch_site *start,
{
struct paravirt_patch_site *p;

if (noreplace_paravirt)
return;

for (p = start; p < end; p++) {
unsigned int used;

Expand Down

0 comments on commit 959b4fd

Please sign in to comment.