Skip to content

Commit

Permalink
x86emul: fix FXRSTOR test for most AMD CPUs
Browse files Browse the repository at this point in the history
AMD CPUs that we classify as X86_BUG_FPU_PTRS don't touch the selector/
offset portion of the save image during FXSAVE unless an unmasked
exception is pending. Hence the selector zapping done between the
initial FXSAVE and the emulated FXRSTOR needs to be mirrored onto the
second FXSAVE, output of which gets fed into memcmp() to compare with
the input image.

Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Tested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Release-acked-by: Paul Durrant <paul@xen.org>
  • Loading branch information
jbeulich authored and liuw committed Jul 6, 2020
1 parent 158912a commit f97f99c
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions tools/tests/x86_emulator/test_x86_emulator.c
Original file line number Diff line number Diff line change
Expand Up @@ -2577,6 +2577,7 @@ int main(int argc, char **argv)
regs.ecx = (unsigned long)(res + 0x81);
rc = x86_emulate(&ctxt, &emulops);
asm volatile ( "fxsave %0" : "=m" (res[0x100]) :: "memory" );
zap_xfpsel(&res[0x100]);
if ( (rc != X86EMUL_OKAY) ||
memcmp(res + 0x100, res + 0x80, 0x200) ||
(regs.eip != (unsigned long)&instr[4]) )
Expand Down

0 comments on commit f97f99c

Please sign in to comment.