File 55506a66-x86-keep-high-bits-of-RAX-on-guest-port-reads.patch of Package xen.950
# Commit 1191aa9d1988c469844eb4545689617a8b13eae1
# Date 2015-05-11 10:37:58 +0200
# Author Jan Beulich <jbeulich@suse.com>
# Committer Jan Beulich <jbeulich@suse.com>
x86: don't clear high 32 bits of RAX on sub-word guest I/O port reads
1- or 2-byte operations never alter the high halves of registers.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -2126,7 +2126,7 @@ static int emulate_privileged_op(struct
if ( op_bytes == 4 )
regs->eax = 0;
else
- regs->eax &= ~((1u << (op_bytes * 8)) - 1);
+ regs->eax &= ~((1 << (op_bytes * 8)) - 1);
regs->eax |= guest_io_read(port, op_bytes, v, regs);
}
bpmatch = check_guest_io_breakpoint(v, port, op_bytes);