x86: add generic clearcpuid=... option
Add a generic option to clear any cpuid bit. I added it because it was very easy to add with the new generic cpuid disable bitmap and perhaps it will be useful in the future. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
191679fdfa
commit
ac72e7888a
@ -416,6 +416,19 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||||||
[SPARC64] tick
|
[SPARC64] tick
|
||||||
[X86-64] hpet,tsc
|
[X86-64] hpet,tsc
|
||||||
|
|
||||||
|
clearcpuid=BITNUM [X86]
|
||||||
|
Disable CPUID feature X for the kernel. See
|
||||||
|
include/asm-x86/cpufeature.h for the valid bit numbers.
|
||||||
|
Note the Linux specific bits are not necessarily
|
||||||
|
stable over kernel options, but the vendor specific
|
||||||
|
ones should be.
|
||||||
|
Also note that user programs calling CPUID directly
|
||||||
|
or using the feature without checking anything
|
||||||
|
will still see it. This just prevents it from
|
||||||
|
being used by the kernel or shown in /proc/cpuinfo.
|
||||||
|
Also note the kernel might malfunction if you disable
|
||||||
|
some critical bits.
|
||||||
|
|
||||||
code_bytes [IA32/X86_64] How many bytes of object code to print
|
code_bytes [IA32/X86_64] How many bytes of object code to print
|
||||||
in an oops report.
|
in an oops report.
|
||||||
Range: 0 - 8192
|
Range: 0 - 8192
|
||||||
|
@ -572,6 +572,17 @@ void __cpuinit print_cpu_info(struct cpuinfo_x86 *c)
|
|||||||
printk("\n");
|
printk("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __init int setup_disablecpuid(char *arg)
|
||||||
|
{
|
||||||
|
int bit;
|
||||||
|
if (get_option(&arg, &bit) && bit < NCAPINTS*32)
|
||||||
|
setup_clear_cpu_cap(bit);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
__setup("clearcpuid=", setup_disablecpuid);
|
||||||
|
|
||||||
cpumask_t cpu_initialized __cpuinitdata = CPU_MASK_NONE;
|
cpumask_t cpu_initialized __cpuinitdata = CPU_MASK_NONE;
|
||||||
|
|
||||||
/* This is hacky. :)
|
/* This is hacky. :)
|
||||||
|
@ -1050,6 +1050,17 @@ void __cpuinit print_cpu_info(struct cpuinfo_x86 *c)
|
|||||||
printk(KERN_CONT "\n");
|
printk(KERN_CONT "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __init int setup_disablecpuid(char *arg)
|
||||||
|
{
|
||||||
|
int bit;
|
||||||
|
if (get_option(&arg, &bit) && bit < NCAPINTS*32)
|
||||||
|
setup_clear_cpu_cap(bit);
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
__setup("clearcpuid=", setup_disablecpuid);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get CPU information for use by the procfs.
|
* Get CPU information for use by the procfs.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user