x86: filter CPU features dependent on unavailable CPUID levels
commitb38b0665905538e76e26f2a4c686179abb1f69f6
authorH. Peter Anvin <hpa@linux.intel.com>
Sat, 24 Jan 2009 01:20:50 +0000 (23 17:20 -0800)
committerH. Peter Anvin <hpa@linux.intel.com>
Sat, 24 Jan 2009 02:08:05 +0000 (23 18:08 -0800)
tree849514b44863461c542872173221c3f365a0e6a7
parent75a048119e76540d73132cfc8e0fa0c0a8bb6c83
x86: filter CPU features dependent on unavailable CPUID levels

Impact: Fixes potential crashes on misconfigured systems.

Some CPU features require specific CPUID levels to be available in
order to function, as they contain information about the operation of
a specific feature.  However, some BIOSes and virtualization software
provide the ability to mask CPUID levels in order to support legacy
operating systems.  We try to enable such CPUID levels when we know
how to do it, but for the remaining cases, filter out such CPU
features when there is no way for us to support them.

Do this in one place, in the CPUID code, with a table-driven approach.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/kernel/cpu/common.c