[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] usb: usb tablet freeze when save/restore guest os
From: |
Gonglei (Arei) |
Subject: |
Re: [Qemu-devel] usb: usb tablet freeze when save/restore guest os |
Date: |
Thu, 15 May 2014 11:23:00 +0000 |
> -----Original Message-----
> From: Gerd Hoffmann [mailto:address@hidden
> Sent: Thursday, May 15, 2014 2:50 PM
> To: Gonglei (Arei)
> Cc: Paolo Bonzini; address@hidden; Huangweidong (C); Michael S.
> Tsirkin
> Subject: Re: usb: usb tablet freeze when save/restore guest os
>
> Hi,
>
> > Well then, may I post a formal patch for this issue, Gerd? Thanks.
>
> I'd like to know what the root cause for the lost interrupt is.
>
Hi, Gerd. I must clarify the scene of this issue.
1)The problem occurred on Xen platform.
the process of hibernate vm on Xen:
suspend vm (pause all vcpus)
call xc_save to save memory
stop qemu (vm_stop)
save qemu
destroy vm
2)The process of hibernate vm on KVM:
vm_stop
do_vm_stop
pause_all_vcpus
runstate_set(state); //change the runstate to paused
3)the usb tablet backtrace:
vnc_client_read
protocol_client_msg
pointer_event
qemu_input_event_sync
in qemu_input_event_sync(), there is a check vm runstate, as below:
if (!runstate_is_running() && !runstate_check(RUN_STATE_SUSPENDED)) {
return;
}
On KVM platform, the usb tablet event will be return at there.
As for Xen, It's too later. After suspend vm, the qemu process can response the
event
of usb tablet event. Because guest os's vcpus are paused, guest os cannot
response
interrupt injected by qemu. Then the interrupt will be lost.
> Not implementing PIRQ enable could be it, especially as the guest os
> seems to use it (otherwise your patch would have no effect).
>
> The check for the PIRQ enable bit should be in uhci_update_irq though,
> and you should check the single bit only, not the whole legacy support
> register.
>
Agreed. Thanks.
> cheers,
> Gerd
>
>
Best regards,
-Gonglei