x86/cpuid: Add generic table for CPUID dependencies
authorAndi Kleen <ak@linux.intel.com>
Fri, 13 Oct 2017 21:56:42 +0000 (14:56 -0700)
committerIngo Molnar <mingo@kernel.org>
Tue, 17 Oct 2017 15:14:57 +0000 (17:14 +0200)
commit0b00de857a648dafe7020878c7a27cf776f5edf4
tree0636ebe4115b37999ad5e00ddf41df9f89d188ba
parentcbe96375025e14fc76f9ed42ee5225120d7210f8
x86/cpuid: Add generic table for CPUID dependencies

Some CPUID features depend on other features. Currently it's
possible to to clear dependent features, but not clear the base features,
which can cause various interesting problems.

This patch implements a generic table to describe dependencies
between CPUID features, to be used by all code that clears
CPUID.

Some subsystems (like XSAVE) had an own implementation of this,
but it's better to do it all in a single place for everyone.

Then clear_cpu_cap and setup_clear_cpu_cap always look up
this table and clear all dependencies too.

This is intended to be a practical table: only for features
that make sense to clear. If someone for example clears FPU,
or other features that are essentially part of the required
base feature set, not much is going to work. Handling
that is right now out of scope. We're only handling
features which can be usefully cleared.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jonathan McDowell <noodles@earth.li>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20171013215645.23166-3-andi@firstfloor.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/cpufeature.h
arch/x86/include/asm/cpufeatures.h
arch/x86/kernel/cpu/Makefile
arch/x86/kernel/cpu/cpuid-deps.c [new file with mode: 0644]