+* 1.5.24
+- increased virtio keyboard queue and fixed overwrite bug
+== SungMin Ha <sungmin82.ha@samsung.com> 2013-04-06
* 1.5.23
- no need to get the shmkey from another shm
== GiWoong Kim <giwoong.kim@samsung.com> 2013-04-03
while ((written_cnt--)) {
kbdevt = &vkbd->kbdqueue.kbdevent[vkbd->kbdqueue.rptr];
+ while (((EmulKbdEvent*)(elem.in_sg[index].iov_base))->code != 0) {
+ if (++index == VIRTIO_KBD_QUEUE_SIZE) {
+ index--;
+ TRACE("virtio queue is full.\n");
+ break;
+ }
+ }
+
/* Copy keyboard data into guest side. */
TRACE("copy: keycode %d, type %d, elem_index %d\n",
kbdevt->code, kbdevt->type, index);
vkbd->kbdqueue.rptr++;
if (vkbd->kbdqueue.rptr == VIRTIO_KBD_QUEUE_SIZE) {
vkbd->kbdqueue.rptr = 0;
+ TRACE("kbdqueue is full.\n");
}
}
qemu_mutex_unlock(&vkbd->event_mutex);
vkbd->vdev.get_features = virtio_keyboard_get_features;
- vkbd->vq = virtio_add_queue(&vkbd->vdev, 64, virtio_keyboard_handle);
+ vkbd->vq = virtio_add_queue(&vkbd->vdev, 128, virtio_keyboard_handle);
vkbd->qdev = dev;
/* bottom half */
/* register keyboard handler */
qemu_add_kbd_event_handler(virtio_keyboard_event, vkbd);
-
+
return &vkbd->vdev;
}
#include "hw/virtio.h"
#define VIRTIO_KBD_DEVICE_NAME "virtio-keyboard"
-#define VIRTIO_KBD_QUEUE_SIZE 10
+#define VIRTIO_KBD_QUEUE_SIZE 100
typedef struct EmulKbdEvent {
uint16_t code;