kernel-fxtec-pro1x/arch/x86/include/asm
Suresh Siddha 45a94d7cd4 x86, cpuid: Add "volatile" to asm in native_cpuid()
xsave_cntxt_init() does something like:

	cpuid(0xd, ..);	// find out what features FP/SSE/.. etc are supported

	xsetbv();	// enable the features known to OS

	cpuid(0xd, ..);	// find out the size of the context for features enabled

Depending on what features get enabled in xsetbv(), value of the
cpuid.eax=0xd.ecx=0.ebx changes correspondingly (representing the
size of the context that is enabled).

As we don't have volatile keyword for native_cpuid(), gcc 4.1.2
optimizes away the second cpuid and the kernel continues to use
the cpuid information obtained before xsetbv(), ultimately leading to kernel
crash on processors supporting more state than the legacy FP/SSE.

Add "volatile" for native_cpuid().

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
LKML-Reference: <1261009542.2745.55.camel@sbs-t61.sc.intel.com>
Cc: stable@kernel.org
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2009-12-16 16:30:57 -08:00
..
uv Merge branch 'for-next' into for-linus 2009-12-07 18:36:35 +01:00
visws
xen
a.out-core.h hw-breakpoints: Fix broken a.out format dump 2009-11-10 11:23:05 +01:00
a.out.h
acpi.h x86: Make sure wakeup trampoline code is below 1MB 2009-11-11 20:14:32 +01:00
aes.h
agp.h
alternative-asm.h x86/alternatives: No need for alternatives-asm.h to re-invent stuff already in asm.h 2009-12-02 11:39:45 +01:00
alternative.h x86/alternatives: Check replacementlen <= instrlen at build time 2009-12-02 11:39:45 +01:00
amd_iommu.h x86/amd-iommu: Update copyright headers 2009-11-27 11:45:49 +01:00
amd_iommu_proto.h x86/amd-iommu: Fix PCI hotplug with passthrough mode 2009-12-10 12:23:47 +01:00
amd_iommu_types.h x86/amd-iommu: Remove amd_iommu_pd_table 2009-11-27 14:20:37 +01:00
apic.h x86: apic: Do not use stacked physid_mask_t 2009-11-10 05:52:07 +01:00
apicdef.h x86: io-apic: IO-APIC MMIO should not fail on resource insertion 2009-11-16 16:37:10 +01:00
apm.h
asm.h
atomic.h
atomic_32.h
atomic_64.h
auxvec.h
bios_ebda.h
bitops.h
bitsperlong.h
boot.h
bootparam.h Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-09-18 14:05:47 -07:00
bug.h x86: Convert BUG() to use unreachable() 2009-12-05 09:10:12 -08:00
bugs.h
byteorder.h
cache.h x86: Eliminate redundant/contradicting cache line size config options 2009-11-19 04:58:34 +01:00
cacheflush.h Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-08 13:27:33 -08:00
calgary.h x86: Calgary: Convert detect_calgary() to use iommu_init hook 2009-11-10 12:31:15 +01:00
calling.h
checksum.h
checksum_32.h x86: fix csum_ipv6_magic asm memory clobber 2009-10-01 16:11:12 -07:00
checksum_64.h
cmpxchg.h
cmpxchg_32.h Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-05 15:32:03 -08:00
cmpxchg_64.h x86: Generate cmpxchg build failures 2009-10-09 15:57:00 +02:00
compat.h
cpu.h
cpu_debug.h
cpufeature.h x86, amd: Get multi-node CPU info from NodeId MSR instead of PCI config space 2009-12-16 15:06:23 -08:00
cpumask.h
cputime.h
current.h
debugreg.h x86: Rename global percpu symbol dr7 to cpu_dr7 2009-11-25 14:30:04 +01:00
delay.h
desc.h x86: Make sure get_user_desc() doesn't sign extend. 2009-11-05 13:22:18 -08:00
desc_defs.h tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
device.h x86/amd-iommu: Use dev->arch->iommu to store iommu related information 2009-11-27 14:20:32 +01:00
div64.h
dma-mapping.h x86: Kill bad_dma_address variable 2009-11-17 07:53:21 +01:00
dma.h
dmi.h
ds.h
dwarf2.h
e820.h x86, mm: Correct the implementation of is_untracked_pat_range() 2009-11-30 21:33:51 -08:00
edac.h
efi.h
elf.h x86-64: make compat_start_thread() match start_thread() 2009-10-09 16:26:38 -07:00
emergency-restart.h
entry_arch.h x86: UV RTC: Rename generic_interrupt to x86_platform_ipi 2009-10-14 18:27:11 +02:00
errno.h
fb.h
fcntl.h
fixmap.h
floppy.h
frame.h
ftrace.h
futex.h
gart.h x86: GART: Convert gart_iommu_hole_init() to use iommu_init hook 2009-11-10 12:31:23 +01:00
genapic.h
geode.h
gpio.h
hardirq.h Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-08 13:38:21 -08:00
highmem.h
hpet.h
hugetlb.h
hw_breakpoint.h hw-breakpoints: Rewrite the hw-breakpoints layer on top of perf events 2009-11-08 15:34:42 +01:00
hw_irq.h Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-08 13:38:21 -08:00
hypertransport.h
hypervisor.h
i387.h crypto: ghash-intel - Add PSHUFB macros 2009-11-03 09:11:15 -05:00
i8253.h
i8259.h
ia32.h
ia32_unistd.h
idle.h
inat.h x86: AVX instruction set decoder support 2009-10-29 08:47:46 +01:00
inat_types.h
init.h
insn.h x86: AVX instruction set decoder support 2009-10-29 08:47:46 +01:00
inst.h x86: Generate .byte code for some new instructions via gas macro 2009-11-09 13:52:26 -05:00
io.h
io_32.h
io_64.h
io_apic.h Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-09-18 14:05:47 -07:00
ioctl.h
ioctls.h
iomap.h
iommu.h x86: Move iommu_shutdown_noop to x86_init.c 2009-11-15 09:03:10 +01:00
ipcbuf.h
ipi.h
irq.h Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-08 13:38:21 -08:00
irq_regs.h
irq_remapping.h
irq_vectors.h x86: Fix duplicated UV BAU interrupt vector 2009-12-13 08:17:40 +01:00
irqflags.h
ist.h
k8.h x86: k8.h: Add struct bootnode 2009-11-08 12:55:38 +01:00
Kbuild hw-breakpoints: Rewrite the hw-breakpoints layer on top of perf events 2009-11-08 15:34:42 +01:00
kdebug.h
kexec.h
kgdb.h
kmap_types.h
kmemcheck.h
kprobes.h
kvm.h KVM: x86: Add KVM_GET/SET_VCPU_EVENTS 2009-12-03 09:32:25 +02:00
kvm_emulate.h KVM: x86 emulator: limit instructions to 15 bytes 2009-12-03 09:32:25 +02:00
kvm_host.h KVM: VMX: Fix comparison of guest efer with stale host value 2009-12-03 09:34:20 +02:00
kvm_para.h KVM: Add missing #include 2009-09-10 10:46:49 +03:00
ldt.h
lguest.h
lguest_hcall.h
linkage.h
local.h
mach_timer.h
mach_traps.h
math_emu.h
mc146818rtc.h
mca.h
mca_dma.h
mce.h x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value 2009-11-10 05:57:55 +01:00
microcode.h x86: ucode-amd: Load ucode-patches once and not separately of each CPU 2009-11-10 12:15:48 +01:00
mman.h
mmconfig.h
mmu.h
mmu_context.h cpumask: use mm_cpumask() wrapper: x86 2009-09-24 09:34:52 +09:30
mmx.h
mmzone.h
mmzone_32.h tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
mmzone_64.h
module.h Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-09-14 07:57:32 -07:00
mpspec.h Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-08 13:27:33 -08:00
mpspec_def.h
msgbuf.h
msidef.h
msr-index.h x86, amd: Get multi-node CPU info from NodeId MSR instead of PCI config space 2009-12-16 15:06:23 -08:00
msr.h x86, msr: msrs_alloc/free for CONFIG_SMP=n 2009-12-16 15:36:32 -08:00
mtrr.h
mutex.h
mutex_32.h
mutex_64.h
nmi.h sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
nops.h x86/tracing: comment need for atomic nop 2009-09-10 17:22:44 -04:00
numa.h
numa_32.h
numa_64.h
numaq.h
olpc.h
page.h
page_32.h
page_32_types.h
page_64.h
page_64_types.h
page_types.h x86: Export k8 physical topology 2009-10-12 22:56:45 +02:00
param.h
paravirt.h x86/paravirt: Use normal calling sequences for irq enable/disable 2009-10-13 09:22:01 +02:00
paravirt_types.h x86/paravirt: Use normal calling sequences for irq enable/disable 2009-10-13 09:22:01 +02:00
parport.h
pat.h x86, platform: Change is_untracked_pat_range() to bool; cleanup init 2009-11-23 17:09:59 -08:00
pci-direct.h
pci-functions.h
pci.h x86/PCI: default pcibus cpumask to all cpus if it lacks affinity 2009-09-18 08:51:10 -07:00
pci_64.h
pci_x86.h
percpu.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-09-15 09:39:44 -07:00
perf_event.h perf_events: Check for filters on fixed counter events 2009-10-09 15:56:10 +02:00
pgalloc.h
pgtable-2level.h
pgtable-2level_types.h
pgtable-3level.h
pgtable-3level_types.h
pgtable.h x86, mm: is_untracked_pat_range() takes a normal semiclosed range 2009-11-23 17:09:59 -08:00
pgtable_32.h
pgtable_32_types.h
pgtable_64.h
pgtable_64_types.h
pgtable_types.h Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/urgent 2009-09-23 14:35:10 +02:00
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
prctl.h
processor-cyrix.h
processor-flags.h
processor.h x86, cpuid: Add "volatile" to asm in native_cpuid() 2009-12-16 16:30:57 -08:00
proto.h x86: remove "extern" from function prototypes in <asm/proto.h> 2009-11-16 13:55:31 -08:00
ptrace-abi.h
ptrace.h x86: Fix comments of register/stack access functions 2009-12-02 10:22:22 +01:00
pvclock-abi.h
pvclock.h
rdc321x_defs.h
reboot.h
reboot_fixups.h
required-features.h
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp.h
seccomp_32.h
seccomp_64.h
sections.h x86-64: align RODATA kernel section to 2MB with CONFIG_DEBUG_RODATA 2009-10-20 14:46:00 +09:00
segment.h
sembuf.h
serial.h
setup.h
setup_arch.h
shmbuf.h
shmparam.h
sigcontext.h tree-wide: fix misspelling of "definition" in comments 2009-12-04 23:41:47 +01:00
sigcontext32.h
sigframe.h
siginfo.h
signal.h
smp.h cpumask: remove arch_send_call_function_ipi 2009-09-24 09:34:47 +09:30
smpboot_hooks.h
socket.h
sockios.h
sparsemem.h
spinlock.h
spinlock_types.h
srat.h
stackprotector.h x86/i386: Make sure stack-protector segment base is cache aligned 2009-09-03 21:30:51 +02:00
stacktrace.h
stat.h
statfs.h
string.h
string_32.h x86: Use __builtin_memset and __builtin_memcpy for memset/memcpy 2009-09-28 16:43:15 -07:00
string_64.h
suspend.h
suspend_32.h
suspend_64.h
svm.h KVM: SVM: Support Pause Filter in AMD processors 2009-12-03 09:32:17 +02:00
swab.h
swiotlb.h x86: Split swiotlb initialization into two stages 2009-12-15 13:01:57 +01:00
sync_bitops.h
sys_ia32.h sysctl: x86 Use the compat_sys_sysctl 2009-11-06 03:53:58 -08:00
syscall.h x86: syscall_get_nr returns int 2009-09-22 19:57:51 -07:00
syscalls.h x86: Merge sys_clone 2009-12-09 16:29:42 -08:00
system.h x86: Factor duplicated code out of __show_regs() into show_regs_common() 2009-12-09 10:17:58 +01:00
system_64.h
tce.h
termbits.h
termios.h
thread_info.h core, x86: Add user return notifiers 2009-10-01 12:12:18 -07:00
time.h x86: Move get/set_wallclock to x86_platform_ops 2009-09-16 14:34:50 +02:00
timer.h
timex.h
tlb.h
tlbflush.h
topology.h sched: Disable SD_PREFER_LOCAL at node level 2009-11-03 07:24:07 +01:00
trampoline.h x86: Use find_e820() instead of hard coded trampoline address 2009-12-11 09:28:22 +01:00
traps.h
tsc.h
types.h
uaccess.h x86, 64-bit: Move K8 B step iret fixup to fault entry asm 2009-10-12 18:29:46 +02:00
uaccess_32.h x86: Add a Kconfig option to turn the copy_from_user warnings into errors 2009-10-02 19:01:42 +02:00
uaccess_64.h x86: Add missing might_fault() checks to copy_{to,from}_user() 2009-11-16 16:09:52 +01:00
ucontext.h
unaligned.h
unistd.h
unistd_32.h net: Introduce recvmmsg socket syscall 2009-10-12 23:40:10 -07:00
unistd_64.h net: Introduce recvmmsg socket syscall 2009-10-12 23:40:10 -07:00
user.h
user32.h
user_32.h
user_64.h
vdso.h
vga.h
vgtod.h
virtext.h
vm86.h
vmi.h
vmi_time.h
vmware.h
vmx.h KVM: VMX: Add support for Pause-Loop Exiting 2009-12-03 09:32:17 +02:00
vsyscall.h
x86_init.h Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-08 13:27:33 -08:00
xcr.h
xor.h
xor_32.h
xor_64.h
xsave.h