vmware2 patch for -CURRENT
Andrew Gallatin
gallatin at cs.duke.edu
Tue May 4 07:09:11 PDT 2004
Bruce Evans writes:
> On Mon, 3 May 2004, Andrew Gallatin wrote:
> > It panics in sse2_pagezero() on my p4, so I have to break into
> > the debugger and reduce my cpu_class to 3. I"m really glad that the
> > jsnap builds have ddb built in.. ;)
>
> Apparently vmware2 doesn't support some SSE2 instructions despite claiming
> to. The code that calls ss2_pagezero() seems to test mostly the right
> things. (cpu_feature & CPU_SSE2) is supposed to indicate that the CPU
> supports SSE2, and it shouldn't be necessary to also test cpu_class.
>
> Try my memory access benchmarks in ~bde/cache on freefall for debugging
> this in userland (./w -c sse2 -f 19 uses the same access method as
> sse2_pagezero()).
Weird. It works in userspace:
% ./bde_w -c sse2 -f 19
zeroJ: 2637193597 B/s ( 37919 us) (122532576 tsc) (movnti)
The generic kernel dies at sse2_pagezero+0xe with a
Fatal trap 1: priviliged instruction fault while in kernel mode
According to gdb's disassemble, its the movnti:
(gdb) disassemble sse2_pagezero
Dump of assembler code for function sse2_pagezero:
0xc0757e04 <sse2_pagezero>: push %ebx
0xc0757e05 <sse2_pagezero+1>: mov 0x8(%esp,1),%ecx
0xc0757e09 <sse2_pagezero+5>: mov %ecx,%eax
0xc0757e0b <sse2_pagezero+7>: add $0x1000,%eax
0xc0757e10 <sse2_pagezero+12>: xor %ebx,%ebx
0xc0757e12 <sse2_pagezero+14>: movnti %ebx,(%ecx)
0xc0757e15 <sse2_pagezero+17>: add $0x4,%ecx
0xc0757e18 <sse2_pagezero+20>: cmp %ecx,%eax
0xc0757e1a <sse2_pagezero+22>: jne 0xc0757e12 <sse2_pagezero+14>
0xc0757e1c <sse2_pagezero+24>: sfence
0xc0757e1f <sse2_pagezero+27>: pop %ebx
0xc0757e20 <sse2_pagezero+28>: ret
0xc0757e21 <sse2_pagezero+29>: lea 0x0(%esi),%esi
Drew
More information about the freebsd-emulation
mailing list