• Andi Kleen's avatar
    x86/cpuid: Add generic table for CPUID dependencies · 0b00de85
    Andi Kleen authored
    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: default avatarAndi Kleen <ak@linux.intel.com>
    Reviewed-by: default avatarThomas 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.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    0b00de85
cpuid-deps.c 3.44 KB