[Spice-devel] VirtIO bug (Mouse & Keyboard fail to work after opeining an non-exist serial port)
Charles.Tsai-蔡清海-研究發展部
charles.tsai at cloudena.com
Thu Jun 21 02:55:56 PDT 2012
We implemented an virt IO port for printing channel. It works without any problem if Qemu command options specify our printing device.
However, we found a bug in virtio serial driver when a VM is launched without specifying the “printing device” from the qemu command line.
In this case, mouse click does not work and no any key can be typed from keyboard.
In application(vdservice), it simply calls the following API to open the underline device.
_handle = CreateFile(DeviceName, GENERIC_READ | GENERIC_WRITE , 0, NULL,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
if (_handle == INVALID_HANDLE_VALUE) {
vd_printf("CreateFile() %ls failed: %lu", DeviceName, GetLastError());
return false;
}
For working case, virioserial driver shows that both “com.redhat.spice.0” and “com.redhat.print.0” are opened.
00000001 0.00000000 ==>VIOSerialPortCreate Port id = 1
00000002 0.00001717 Port Name =com.redhat.spice.0
………………………………….
00000107 0.00481843 ==>VIOSerialPortCreate Port id = 2
00000108 0.00483288 Port Name =com.redhat.print.0
00000109 0.00484705 No more buffers in queue: last_used_idx 0 vring.used->idx 0
For the failure case, “CreateFile” fails because it cannot open “com.redhat.print.0” device. But trace message of virioserial driver only shows that “com.redhat.spice.0” is opened.
If virioserial is not touched for “com.redhat.print.0” device, why it affects the “com.redhat.spice.0” device?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20120621/62301863/attachment.html>
More information about the Spice-devel
mailing list