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 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -2234,7 +2234,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);