Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac72e788 authored by Andi Kleen's avatar Andi Kleen Committed by Ingo Molnar
Browse files

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: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 191679fd
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -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
+11 −0
Original line number Original line Diff line number Diff line
@@ -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. :)
+11 −0
Original line number Original line Diff line number Diff line
@@ -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.
 */
 */