>>> On 31.01.12 at 10:34, Laszlo Ersek <ler...@redhat.com> wrote: > in the qemu-xen-unstable tree > (git://xenbits.xen.org/qemu-xen-unstable.git), the do_inp() function > [i386-dm/helper2.c] makes the process exit if the operand size is wrong. > Blame: 6040eea5 ("More files imported from xen-unstable > 17192:59b8768d0d0d"). > > In the qemu tree (git://git.qemu.org/qemu.git), the do_inp() function > [xen-all.c] does the same (via hw_error() / abort()). Blame: 9ce94e7c > ("xen: Initialize event channels and io rings"). > > Is it justified to kill the emulator when this happens (eg. memory > mapped IO with 64-bit operand)?
Afaict, this is not about MMIO, but PIO. > What would happen on real hardware? If > it's "undefined", wouldn't it be "better" (for some definition of > "better") to return a constant? The AMD manual specifies that REX.W is ignored; the Intel manual doesn't mention REX at all here. However, if a decoder incorrectly decodes the guest instruction, that's a bug there. So imo qemu validly treats this condition as fatal. Jan