AMD cpu bug update #3 -- Official AMD reference now available

Venkatesh Srinivas vsrinivas at ops101.org
Fri Mar 23 17:39:28 PDT 2012


Hi,

As a followup, here is our simplified test case:

ras.s ======================
.global ras
ras:
        movq $80, %r8
ras2:
        pushq %rax
        pushq %rcx
        pushq %rdx
        pushq %r9
        pushq %r10
        decq %r8
        jz ras3
        call ras2
ras3:
        popq %r10
        popq %r9
        popq %rdx
        popq %rcx
        popq %rax
        ret

main.c ======================
main(argc, argv)
        int argc;
        char *argv[];
{
	for(;;)
               ras();
}

compile main.c and ras.s  (gcc main.c ras.s) and run ./a.out; you may
quickly see %rsp updated incorrectly, which will likely manifest as a
segmentation fault. The fault is fairly sensitive to stack alignment,
so you may need to run it a few times to hit it; simply cancel the run
and try again.

This errata affects all AMD K10 CPUs; Families 10h and 12h. It does
not affect family 15h (Bulldozer).

There is a workaround -- setting bit 0 of MSR 0xc0011029. DragonFly
just got a patch to do so, expect other systems to follow suit soon.

Thanks!
-- vs;
http://ops101.org/4k/





More information about the Kernel mailing list