kernel-fxtec-pro1x/arch/x86/kernel
H. Peter Anvin b38b066590 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>
2009-01-23 18:08:05 -08:00
..
acpi Merge branch 'cpus4096-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-10 06:12:18 -08:00
cpu x86: filter CPU features dependent on unavailable CPUID levels 2009-01-23 18:08:05 -08:00
.gitignore
alternative.c
amd_iommu.c AMD IOMMU: remove now unnecessary #ifdefs 2009-01-03 16:44:15 +01:00
amd_iommu_init.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu 2009-01-03 12:03:52 -08:00
aperture_64.c aperture_64.c: clarify that too small aperture is valid reason for this code 2008-11-28 15:24:39 +01:00
apic.c x86: fix apic.c build error on latest git 2009-01-12 19:24:23 +01:00
apm_32.c x86: update Alan Cox's email addresses 2009-01-05 15:19:16 +01:00
asm-offsets.c
asm-offsets_32.c x86: signal: move sigframe.h to arch/x86/include/asm 2008-12-18 11:28:54 +01:00
asm-offsets_64.c x86: asm-offset_64: use rt_sigframe_ia32 2008-12-18 15:01:24 -08:00
audit_64.c
bios_uv.c x86: bios_uv.c: uv_systab should be static 2008-12-29 22:08:28 -08:00
bootflag.c
check.c x86: corruption-check: some post-move cleanups 2008-10-27 18:09:45 +01:00
cpuid.c Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-03 12:04:39 -08:00
crash.c kdump: forcibly disable VMX and SVM on machine_crash_shutdown() 2008-12-31 16:52:30 +02:00
crash_dump_32.c kdump: make elfcorehdr_addr independent of CONFIG_PROC_VMCORE 2008-10-20 08:52:39 -07:00
crash_dump_64.c kdump: make elfcorehdr_addr independent of CONFIG_PROC_VMCORE 2008-10-20 08:52:39 -07:00
doublefault_32.c
ds.c Merge branch 'x86/ptrace' into x86/tsc 2008-12-23 16:29:31 +01:00
dumpstack.c ftrace: print real return in dumpstack for function graph 2008-12-03 08:56:25 +01:00
dumpstack.h ftrace: print real return in dumpstack for function graph 2008-12-03 08:56:25 +01:00
dumpstack_32.c ftrace: print real return in dumpstack for function graph 2008-12-03 08:56:25 +01:00
dumpstack_64.c ftrace: print real return in dumpstack for function graph 2008-12-03 08:56:25 +01:00
e820.c Merge branch 'linus' into release 2009-01-09 03:39:43 -05:00
early-quirks.c x86: only scan the root bus in early PCI quirks 2009-01-09 12:46:22 -08:00
early_printk.c x86: early_printk - use sizeof instead of hardcoded number 2009-01-02 10:27:46 +01:00
efi.c x86: Add UV EFI table entry v4 2008-10-16 16:53:13 +02:00
efi_32.c
efi_64.c
efi_stub_32.S
efi_stub_64.S
entry_32.S Revert "i386: add TRACE_IRQS_OFF for the nmi" 2009-01-12 19:36:59 +01:00
entry_64.S Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-28 12:21:10 -08:00
es7000_32.c Merge branch 'linus' into x86/quirks 2008-12-08 15:07:49 +01:00
ftrace.c tracing/function-graph-tracer: append the tracing_graph_flag 2008-12-08 15:11:45 +01:00
genapic_64.c x86: fix wakeup_cpu with numaq/es7000, v2, fix 2008-11-18 00:27:24 +01:00
genapic_flat_64.c x86: fix cpu_mask_to_apicid_and to include cpu_online_mask 2008-12-18 11:59:24 +01:00
genx2apic_cluster.c x86: use logical apicid in x2apic_cluster's x2apic_cpu_mask_to_apicid_and() 2008-12-23 22:37:30 +01:00
genx2apic_phys.c Merge branch 'linus' into x86/cleanups 2009-01-02 22:41:36 +01:00
genx2apic_uv_x.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask 2009-01-03 18:53:31 +01:00
geode_32.c
head.c x86, debug: remove EBDA debug printk 2008-12-12 11:08:42 +01:00
head32.c x86: change static allocation of trampoline area 2008-12-08 13:49:45 +01:00
head64.c x86: fix incorrect __read_mostly on _boot_cpu_pda 2009-01-02 17:16:29 +01:00
head_32.S
head_64.S x86: fix RIP printout in early_idt_handler 2009-01-04 10:20:29 +01:00
hpet.c Merge branch 'cpus4096-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-02 11:44:09 -08:00
i386_ksyms_32.c ftrace: rename FTRACE to FUNCTION_TRACER 2008-10-20 18:27:03 +02:00
i387.c x86: fix __cpuinit/__init tangle in init_thread_xstate() 2008-11-20 16:43:41 +01:00
i8237.c
i8253.c cpumask: convert struct clock_event_device to cpumask pointers. 2008-12-13 21:20:26 +10:30
i8259.c x86: i8259.c fix style problems 2009-01-04 18:19:37 +01:00
init_task.c take init_fs to saner place 2008-12-31 18:07:42 -05:00
io_apic.c Merge branches 'x86/cleanups', 'x86/mpparse', 'x86/numa' and 'x86/uv' into x86/urgent 2009-01-06 17:39:52 +01:00
io_delay.c
ioport.c x86: ioport.c fix style problems 2009-01-04 13:23:07 +01:00
ipi.c x86: cosmetic changes apic-related files. 2008-12-16 17:40:57 -08:00
irq.c x86: irq.c fix style problems 2009-01-04 13:23:04 +01:00
irq_32.c x86: irq_32.c fix style problems 2009-01-04 18:19:37 +01:00
irq_64.c x86: irq_64.c fix style problems 2009-01-04 13:23:04 +01:00
irqinit_32.c x86: irqinit_32.c fix style problems 2009-01-04 18:19:38 +01:00
irqinit_64.c x86: irqinit_64.c init_ISA_irqs should be static 2009-01-04 18:19:41 +01:00
k8.c x86, gart: fix gart detection for Fam11h CPUs 2008-10-28 17:10:27 +01:00
kdebugfs.c
kgdb.c
kprobes.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
kvm.c
kvmclock.c x86: KVM guest: kvm_get_tsc_khz: return khz, not lpj 2008-12-31 16:55:44 +02:00
ldt.c x86: ldt.c fix style problems 2009-01-02 17:46:24 +01:00
machine_kexec_32.c kexec/i386: setup kexec page table in C 2008-10-31 10:01:57 +01:00
machine_kexec_64.c
Makefile Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-30 16:10:19 -08:00
mca_32.c
mfgpt_32.c trivial: fix then -> than typos in comments and documentation 2009-01-06 11:28:06 +01:00
microcode_amd.c x86: fix warning in arch/x86/kernel/microcode_amd.c 2008-12-19 01:31:54 +01:00
microcode_core.c Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core 2008-12-23 16:27:23 +01:00
microcode_intel.c Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core 2008-12-23 16:27:23 +01:00
mmconf-fam10h_64.c x86, pci: move arch/x86/pci/pci.h to arch/x86/include/asm/pci_x86.h 2008-12-29 18:17:36 +01:00
module_32.c
module_64.c
mpparse.c x86: fix mpparse.c build error on latest git 2009-01-12 19:24:22 +01:00
msr.c x86: cleanup some remaining usages of NR_CPUS where s/b nr_cpu_ids 2009-01-03 19:00:55 +01:00
nmi.c x86: remove duplicated #include's 2009-01-06 13:34:03 +01:00
numaq_32.c x86: rename all fields of mpc_oemtable oem_X to X 2009-01-05 14:08:34 +01:00
olpc.c
paravirt-spinlocks.c x86: fix default_spin_lock_flags() prototype 2008-12-08 16:08:29 +01:00
paravirt.c
paravirt_patch_32.c
paravirt_patch_64.c
pci-calgary_64.c arch/x86/kernel/pci-calgary_64.c: change simple_strtol to simple_strtoul 2008-11-25 15:56:03 +01:00
pci-dma.c PCI: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-07 11:12:23 -08:00
pci-gart_64.c x86_64: pci-gart_64.c iommu_fullflush should be static 2008-12-29 18:17:33 +01:00
pci-nommu.c
pci-swiotlb_64.c Merge branch 'core/iommu' into core/urgent 2009-01-05 14:17:24 +01:00
pcspeaker.c
pmtimer_64.c
probe_roms_32.c
process.c Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-28 12:21:10 -08:00
process_32.c x86: process_32.c fix style problems 2009-01-04 13:23:03 +01:00
process_64.c x86, bts: add fork and exit handling 2008-12-20 09:15:46 +01:00
ptrace.c x86, bts: memory accounting 2008-12-20 09:15:47 +01:00
pvclock.c
quirks.c x86: enable HPET on Fujitsu u9200 2008-12-16 20:36:44 +01:00
reboot.c Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-03 12:04:39 -08:00
reboot_fixups_32.c
relocate_kernel_32.S kexec/i386: setup kexec page table in C 2008-10-31 10:01:57 +01:00
relocate_kernel_64.S
rtc.c rtc: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
scx200_32.c
setup.c Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-30 16:20:19 -08:00
setup_percpu.c Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-10 06:13:09 -08:00
signal.c x86: signal: move sigframe.h to arch/x86/include/asm 2008-12-18 11:28:54 +01:00
smp.c Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-10 06:13:09 -08:00
smpboot.c Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-10 06:13:09 -08:00
smpcommon.c
stacktrace.c tracing/stack-tracer: fix style issues 2008-11-23 11:53:48 +01:00
step.c
summit_32.c
sys_i386_32.c
sys_x86_64.c
syscall_64.c x86: Fix ASM_X86__ header guards 2008-10-22 22:55:23 -07:00
syscall_table_32.S [CVE-2009-0029] Rename old_readdir to sys_old_readdir 2009-01-14 14:15:15 +01:00
tce_64.c
test_nx.c
test_rodata.c
time_32.c x86: time_32.c fix style problems 2009-01-04 13:23:05 +01:00
time_64.c x86: time_64.c fix style problems 2009-01-04 13:23:05 +01:00
tlb_32.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask 2009-01-03 18:53:31 +01:00
tlb_64.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask 2009-01-03 18:53:31 +01:00
tlb_uv.c x86, UV: remove erroneous BAU initialization 2009-01-02 17:26:25 +01:00
tls.c
tls.h
topology.c
trampoline.c x86: change static allocation of trampoline area 2008-12-08 13:49:45 +01:00
trampoline_32.S
trampoline_64.S
traps.c Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-10 06:13:09 -08:00
tsc.c Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core 2008-12-23 16:27:23 +01:00
tsc_sync.c Merge branches 'x86/apic', 'x86/cleanups', 'x86/cpufeature', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/detect-hyper', 'x86/doc', 'x86/dumpstack', 'x86/early-printk', 'x86/fpu', 'x86/idle', 'x86/io', 'x86/memory-corruption-check', 'x86/microcode', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/pat2', 'x86/pci-ioapic-boot-irq-quirks', 'x86/ptrace', 'x86/quirks', 'x86/reboot', 'x86/setup-memory', 'x86/signal', 'x86/sparse-fixes', 'x86/time', 'x86/uv' and 'x86/xen' into x86/core 2008-12-23 16:27:23 +01:00
uv_irq.c x86, UV: add uv_setup_irq() and uv_teardown_irq() functions, v3, fix 2008-10-16 16:53:13 +02:00
uv_sysfs.c x86: Add sysfs entries for UV v4 2008-10-16 16:53:13 +02:00
verify_cpu_64.S
visws_quirks.c x86: rename all fields of mpc_cpu mpc_X to X 2009-01-05 14:08:33 +01:00
vm86_32.c
vmi_32.c Merge branch 'x86/fpu' into x86/cleanups 2008-12-26 09:21:05 +01:00
vmiclock_32.c cpumask: convert struct clock_event_device to cpumask pointers. 2008-12-13 21:20:26 +10:30
vmlinux.lds.S
vmlinux_32.lds.S tracing/function-graph-tracer: add a new .irqentry.text section, fix 2008-12-12 12:14:05 +01:00
vmlinux_64.lds.S tracing/function-graph-tracer: add a new .irqentry.text section 2008-12-12 11:14:07 +01:00
vsmp_64.c x86: two trivial sparse annotations 2008-10-29 08:02:28 +01:00
vsyscall_64.c Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-28 12:21:10 -08:00
x8664_ksyms_64.c ftrace: rename FTRACE to FUNCTION_TRACER 2008-10-20 18:27:03 +02:00
xsave.c x86: xsave.c: restore_user_xstate should be static 2008-12-30 13:31:41 -08:00