Hi, This one seems to solve the problem I have been seeing with ld2.acq not being zero extended under KVM. I believe this patch is correct - please shoot me if I am wrong. Cheers, Jes
Only copy in the data actually requested by the instruction emulation and zero pad the destination register first. This avoids the problem where emulated mmio access got garbled data from ld2.acq instructions in the vga console driver. Signed-off-by: Jes Sorensen <jes@xxxxxxx> --- arch/ia64/kvm/mmio.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) Index: linux-2.6.git/arch/ia64/kvm/mmio.c =================================================================== --- linux-2.6.git.orig/arch/ia64/kvm/mmio.c +++ linux-2.6.git/arch/ia64/kvm/mmio.c @@ -158,8 +158,10 @@ vmm_transition(vcpu); if (p->u.ioreq.state == STATE_IORESP_READY) { - if (dir == IOREQ_READ) - *dest = p->u.ioreq.data; + if (dir == IOREQ_READ) { + *dest = 0; + memcpy(dest, &p->u.ioreq.data, s); + } } else panic_vm(vcpu); out:
![]() |