On 01/31/12 11:36, Jan Beulich wrote:
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.
One possible way seems to be (see
http://xenbits.xensource.com/hg/linux-2.6.18-xen.hg/rev/1141):
vmx_hpw_miss() [xen/arch/ia64/vmx/vmx_fault.c]
-> emulate_io_inst() [xen/arch/ia64/vmx/mmio.c]
-> mmio_access()
-> legacy_io_access()
-> vmx_send_assist_req() [xen/arch/ia64/vmx/vmx_support.c]
-> notify_via_xen_event_channel() [xen/common/event_channel.c]
and in qemu-xen-unstable,
cpu_handle_ioreq() [i386-dm/helper2.c], set up in main_loop()
-> __handle_ioreq()
-> cpu_ioreq_pio()
-> do_inp()
Thanks,
Laszlo