]> xenbits.xen.org Git - xenclient/ioemu-pq.git/commitdiff
Add a timeout to the uncompress code of 500ms:wq
authorJames Mckenzie <jamesmck@british-chap.cam.xci-test.com>
Wed, 2 Dec 2009 09:49:38 +0000 (09:49 +0000)
committerJames Mckenzie <jamesmck@british-chap.cam.xci-test.com>
Wed, 2 Dec 2009 09:49:38 +0000 (09:49 +0000)
master/intel

index 53fa2dc378a8cfb9dc945354452e241fd05635cc..33c3cb8e1306476987773dd94dcd2af90dd6300f 100644 (file)
@@ -201,10 +201,10 @@ index 90bd544..e4e27a9 100644
      vga_update_display(s);
 diff --git a/intel.c b/intel.c
 new file mode 100644
-index 0000000..3fd2379
+index 0000000..f3d6672
 --- /dev/null
 +++ b/intel.c
-@@ -0,0 +1,507 @@
+@@ -0,0 +1,518 @@
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <stdint.h>
@@ -303,6 +303,8 @@ index 0000000..3fd2379
 +    unsigned int *dspbstride = (unsigned int *)(intel_mmio + REG_DR_DSPBSTRIDE);
 +    volatile unsigned int *fbc_ctl = (unsigned int *)(intel_mmio + REG_FBC_CONTROL);
 +
++    struct timeval start_decompress;
++
 +    unsigned int surfa = 0, surfb = 0, pipea = 0, pipeb = 0;
 +    char pipeaenabled = !!(*pipeaconf & (1 << 30));
 +    char pipebenabled = !!(*pipebconf & (1 << 30));
@@ -367,9 +369,18 @@ index 0000000..3fd2379
 +
 +    /* Clear the compression bit */
 +    *fbc_ctl &= ~(1 << 31);
++
++    gettimeofday(&start_decompress,NULL);
 +    /* Wait for the status register */
-+    while (intel_get_reg(REG_FBC_STATUS) & (1 << 31))
-+        ;
++
++    while (intel_get_reg(REG_FBC_STATUS) & (1 << 31)) {
++      struct timeval now,diff;
++      gettimeofday(&now,NULL);
++      timersub(&now,&start_decompress,&diff);
++      
++      if (diff.tv_sec || diff.tv_usec>500000) break;
++      usleep(1000);
++    }
 +}
 +
 +static void set_fb_mapping(void)
@@ -752,7 +763,7 @@ index 0000000..cd7855e
 +
 +
 diff --git a/vl.c b/vl.c
-index 6350384..cf7ad19 100644
+index e5c0447..33cfb51 100644
 --- a/vl.c
 +++ b/vl.c
 @@ -235,6 +235,7 @@ int win2k_install_hack = 0;
@@ -779,7 +790,7 @@ index 6350384..cf7ad19 100644
  #if defined(CONFIG_XEN) && !defined(CONFIG_DM)
      { "xen-domid", HAS_ARG, QEMU_OPTION_xen_domid },
      { "xen-create", 0, QEMU_OPTION_xen_create },
-@@ -5318,6 +5321,9 @@ int main(int argc, char **argv, char **envp)
+@@ -5319,6 +5322,9 @@ int main(int argc, char **argv, char **envp)
              case QEMU_OPTION_dom0_input:
                  dom0_input = optarg;
                  break;
@@ -789,7 +800,7 @@ index 6350384..cf7ad19 100644
              case QEMU_OPTION_direct_pci:
                 direct_pci = optarg;
                  break;
-@@ -5922,26 +5928,26 @@ int main(int argc, char **argv, char **envp)
+@@ -5923,26 +5929,26 @@ int main(int argc, char **argv, char **envp)
                  curses_display_init(ds, full_screen);
              } else
  #endif