linux/arch/x86/kernel
Borislav Petkov 6dcbfe4f0b x86, AMD, MCE thresholding: Fix the MCi_MISCj iteration order
This fixes possible cases of not collecting valid error info in
the MCE error thresholding groups on F10h hardware.

The current code contains a subtle problem of checking only the
Valid bit of MSR0000_0413 (which is MC4_MISC0 - DRAM
thresholding group) in its first iteration and breaking out if
the bit is cleared.

But (!), this MSR contains an offset value, BlkPtr[31:24], which
points to the remaining MSRs in this thresholding group which
might contain valid information too. But if we bail out only
after we checked the valid bit in the first MSR and not the
block pointer too, we miss that other information.

The thing is, MC4_MISC0[BlkPtr] is not predicated on
MCi_STATUS[MiscV] or MC4_MISC0[Valid] and should be checked
prior to iterating over the MCI_MISCj thresholding group,
irrespective of the MC4_MISC0[Valid] setting.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Cc: <stable@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2010-10-11 11:04:36 +02:00
..
acpi ACPI: add missing __percpu markup in arch/x86/kernel/acpi/cstate.c 2010-09-28 21:38:20 -04:00
apic x86, irq: Plug memory leak in sparse irq 2010-09-30 15:57:35 -07:00
cpu x86, AMD, MCE thresholding: Fix the MCi_MISCj iteration order 2010-10-11 11:04:36 +02:00
.gitignore
alternative.c
amd_iommu_init.c x86/amd-iommu: Work around S3 BIOS bug 2010-09-23 16:26:03 +02:00
amd_iommu.c x86/amd-iommu: Fix rounding-bug in __unmap_single 2010-09-23 16:26:20 +02:00
apb_timer.c
aperture_64.c
apm_32.c
asm-offsets_32.c
asm-offsets_64.c
asm-offsets.c
audit_64.c
bios_uv.c
bootflag.c
check.c
cpuid.c
crash_dump_32.c
crash_dump_64.c
crash.c
doublefault_32.c
dumpstack_32.c
dumpstack_64.c
dumpstack.c
e820.c
early_printk.c
early-quirks.c x86: hpet: Work around hardware stupidity 2010-09-15 00:55:13 +02:00
efi_32.c
efi_64.c
efi_stub_32.S
efi_stub_64.S
efi.c
entry_32.S Merge branch 'x86-alternatives-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-08-06 16:24:17 -07:00
entry_64.S Mark arguments to certain syscalls as being const 2010-08-13 16:53:13 -07:00
ftrace.c
head32.c
head64.c
head_32.S x86-32: Separate 1:1 pagetables from swapper_pg_dir 2010-08-18 09:17:20 -07:00
head_64.S
head.c
hpet.c x86, hpet: Fix bogus error check in hpet_assign_irq() 2010-09-30 15:57:35 -07:00
hw_breakpoint.c x86: Fix instruction breakpoint encoding 2010-09-17 03:24:13 +02:00
i386_ksyms_32.c
i387.c Merge branch 'kvm-updates/2.6.36' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2010-08-22 11:27:36 -07:00
i8237.c
i8253.c
i8259.c
init_task.c
io_delay.c
ioport.c
irq_32.c
irq_64.c
irq.c
irqinit.c
k8.c
kdebugfs.c
kgdb.c kgdb: add missing __percpu markup in arch/x86/kernel/kgdb.c 2010-08-16 15:58:30 -05:00
kprobes.c kprobes/x86: Fix the return address of multiple kretprobes 2010-08-19 12:49:56 +02:00
kvm.c
kvmclock.c
ldt.c
machine_kexec_32.c
machine_kexec_64.c
Makefile tracing/x86: Don't use mcount in kvmclock.c 2010-09-22 23:01:19 -04:00
mca_32.c
microcode_amd.c
microcode_core.c
microcode_intel.c
mmconf-fam10h_64.c
module.c modules: Fix module_bug_list list corruption race 2010-10-05 11:29:27 -07:00
mpparse.c x86, apic: Map the local apic when parsing the MP table. 2010-08-05 16:26:42 -07:00
mrst.c Merge branch 'x86-mrst-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-08-06 10:06:28 -07:00
msr.c
olpc_ofw.c
olpc.c
paravirt_patch_32.c
paravirt_patch_64.c
paravirt-spinlocks.c
paravirt.c
pci-calgary_64.c
pci-dma.c
pci-gart_64.c
pci-nommu.c
pci-swiotlb.c
pcspeaker.c
pmtimer_64.c
probe_roms_32.c
process_32.c
process_64.c
process.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
ptrace.c
pvclock.c
quirks.c
reboot_fixups_32.c
reboot.c
relocate_kernel_32.S
relocate_kernel_64.S
rtc.c
scx200_32.c
setup_percpu.c
setup.c x86-32: Separate 1:1 pagetables from swapper_pg_dir 2010-08-18 09:17:20 -07:00
sfi.c
signal.c
smp.c
smpboot.c x86, hotplug: Serialize CPU hotplug to avoid bringup concurrency issues 2010-08-19 14:47:43 -07:00
stacktrace.c
step.c
sys_i386_32.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
sys_x86_64.c
syscall_64.c
syscall_table_32.S x86: fix up system call numbering nit 2010-08-10 15:35:10 -07:00
tboot.c
tce_64.c
test_nx.c
test_rodata.c
time.c
tlb_uv.c
tls.c
tls.h
topology.c
trampoline_32.S
trampoline_64.S
trampoline.c x86, mm: Fix CONFIG_VMSPLIT_1G and 2G_OPT trampoline 2010-08-24 23:05:17 -07:00
traps.c Merge branch 'perf/nmi' into perf/core 2010-08-05 08:45:05 +02:00
tsc_sync.c
tsc.c x86, tsc: Fix a preemption leak in restore_sched_clock_state() 2010-09-10 18:17:45 -07:00
uv_irq.c
uv_sysfs.c
uv_time.c
verify_cpu_64.S
visws_quirks.c
vm86_32.c
vmi_32.c
vmiclock_32.c
vmlinux.lds.S
vsmp_64.c
vsyscall_64.c
x86_init.c
x8664_ksyms_64.c
xsave.c Merge branch 'x86-xsave-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-08-06 16:25:13 -07:00