[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] This patch fixed keyboard issue for linux kernel 2.6 in vmx guest.



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 3864566bc8338de6e162d9e8a484c5e1f6e23183
# Parent  00aa8e4609e202b7204563c4a42f8dd8220e07b4
This patch fixed keyboard issue for linux kernel 2.6 in vmx guest.
linux 2.6 kernel keyboard use a timer to poll the kbd state,in
virtualization environment,the kbd interrupt injection is very likely
to happend just after kbd state query in the kbd timer and thus 
will reverse sequence of scan code.
Also fix env->send_event SMP issue.

Signed-off-by: Xiaofeng Ling <xiaofeng.ling@xxxxxxxxx>
Signed-off-by: Edwin Zhai<edwin.zhai@xxxxxxxxx>
Signed-off-by: Eddion Dong <eddie.dong@xxxxxxxxx>
Signed-off-by: Asit Mallick <asit.k.mallick@xxxxxxxxx>

diff -r 00aa8e4609e2 -r 3864566bc833 tools/ioemu/target-i386-dm/helper2.c
--- a/tools/ioemu/target-i386-dm/helper2.c      Tue Nov 15 10:28:33 2005
+++ b/tools/ioemu/target-i386-dm/helper2.c      Tue Nov 15 10:34:29 2005
@@ -416,6 +416,7 @@
        FD_ZERO(&wakeup_rfds);
        FD_SET(evtchn_fd, &wakeup_rfds);
        highest_fds = evtchn_fd;
+       env->send_event = 0
        while (1) {
                 if (vm_running) {
                     if (shutdown_requested) {
@@ -431,7 +432,6 @@
                tv.tv_sec = 0;
                tv.tv_usec = 100000;
 
-               env->send_event = 0;
                retval = select(highest_fds+1, &wakeup_rfds, NULL, NULL, &tv);
                if (retval == -1) {
                        perror("select");
@@ -447,12 +447,13 @@
 #define ULONGLONG_MAX   ULONG_MAX
 #endif
 
-               main_loop_wait(0);
         tun_receive_handler(&rfds);
         if ( FD_ISSET(evtchn_fd, &rfds) ) {
             cpu_handle_ioreq(env);
         }
+               main_loop_wait(0);
                if (env->send_event) {
+                   env->send_event = 0;
                        struct ioctl_evtchn_notify notify;
                        notify.port = ioreq_local_port;
                        (void)ioctl(evtchn_fd, IOCTL_EVTCHN_NOTIFY, &notify);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.