WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [qemu patches] Update patches for changes

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [qemu patches] Update patches for changesets 10957:08a11694b109 - 10959:06e2a95d3395.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 07 Aug 2006 19:20:20 +0000
Delivery-date: Mon, 07 Aug 2006 12:23:38 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User chris@xxxxxxxxxxxxxxxxxxxxxxxx
# Node ID ec8dd0528fc69fc643268493d5a3d722a5650cd7
# Parent  06e2a95d33952a03c8b2d2b665b325c4d2343de0
[qemu patches] Update patches for changesets 10957:08a11694b109 - 
10959:06e2a95d3395.

Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxxx>
---
 tools/ioemu/patches/acpi-poweroff-support              |    8 -
 tools/ioemu/patches/acpi-support                       |  129 ++++++-----------
 tools/ioemu/patches/acpi-timer-support                 |    2 
 tools/ioemu/patches/domain-destroy                     |   21 +-
 tools/ioemu/patches/domain-reset                       |   12 -
 tools/ioemu/patches/domain-timeoffset                  |   40 ++---
 tools/ioemu/patches/hypervisor-pit                     |   18 +-
 tools/ioemu/patches/ide-hd-multithread                 |   24 +--
 tools/ioemu/patches/ioemu-ia64                         |   21 +-
 tools/ioemu/patches/qemu-64bit                         |   28 +--
 tools/ioemu/patches/qemu-allow-disable-sdl             |    6 
 tools/ioemu/patches/qemu-bugfixes                      |   25 ---
 tools/ioemu/patches/qemu-cleanup                       |   22 +-
 tools/ioemu/patches/qemu-dm                            |  126 ++++++++--------
 tools/ioemu/patches/qemu-fix-memset-args               |    4 
 tools/ioemu/patches/qemu-fix-write-to-disk-synchronous |   14 -
 tools/ioemu/patches/qemu-hvm-banner                    |    4 
 tools/ioemu/patches/qemu-init-vgabios                  |    6 
 tools/ioemu/patches/qemu-logging                       |   28 +--
 tools/ioemu/patches/qemu-no-apic                       |   16 +-
 tools/ioemu/patches/qemu-nobios                        |   19 +-
 tools/ioemu/patches/qemu-smp                           |   20 +-
 tools/ioemu/patches/qemu-target-i386-dm                |   48 ++----
 tools/ioemu/patches/qemu-timer                         |   14 -
 tools/ioemu/patches/serial-non-block                   |    4 
 tools/ioemu/patches/series                             |    1 
 tools/ioemu/patches/shadow-vram                        |   12 -
 tools/ioemu/patches/shared-vram                        |   26 +--
 tools/ioemu/patches/support-xm-console                 |    6 
 tools/ioemu/patches/vnc-access-monitor-vt              |   16 +-
 tools/ioemu/patches/vnc-cleanup                        |   19 +-
 tools/ioemu/patches/vnc-fixes                          |  101 +++++++++----
 tools/ioemu/patches/vnc-start-vncviewer                |   46 +++---
 tools/ioemu/patches/vnc-title-domain-name              |    6 
 tools/ioemu/patches/xen-build                          |   57 ++++---
 tools/ioemu/patches/xen-domain-name                    |   30 +--
 tools/ioemu/patches/xen-domid                          |   18 +-
 tools/ioemu/patches/xen-mm                             |   27 +--
 tools/ioemu/patches/xen-network                        |   12 -
 tools/ioemu/patches/xenstore-block-device-config       |   75 ++++-----
 tools/ioemu/patches/xenstore-write-vnc-port            |   10 -
 41 files changed, 557 insertions(+), 564 deletions(-)

diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/acpi-poweroff-support
--- a/tools/ioemu/patches/acpi-poweroff-support Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/acpi-poweroff-support Mon Aug 07 18:28:50 2006 +0100
@@ -1,10 +1,10 @@ Index: ioemu/hw/piix4acpi.c
 Index: ioemu/hw/piix4acpi.c
 ===================================================================
---- ioemu.orig/hw/piix4acpi.c  2006-07-12 11:35:03.574468946 +0100
-+++ ioemu/hw/piix4acpi.c       2006-07-12 11:35:03.631461806 +0100
+--- ioemu.orig/hw/piix4acpi.c  2006-08-06 02:30:29.288761563 +0100
++++ ioemu/hw/piix4acpi.c       2006-08-06 02:30:42.131331446 +0100
 @@ -45,6 +45,10 @@
  #define GBL_RLS           (1 << 2)
- #define SLP_EN          (1 << 13)
+ #define SLP_EN            (1 << 13)
  
 +/* Bits of PM1a register define here  */
 +#define SLP_TYP_MASK    0x1C00
@@ -13,7 +13,7 @@ Index: ioemu/hw/piix4acpi.c
  typedef struct AcpiDeviceState AcpiDeviceState;
  AcpiDeviceState *acpi_device_table;
  
-@@ -270,7 +274,14 @@
+@@ -190,7 +194,14 @@
      s->pm1_control = (val<<8)||(s->pm1_control);
  /*    printf("acpiPm1ControlP1_writeb \n addr %x val:%x\n", addr, val); */
  
@@ -29,7 +29,7 @@ Index: ioemu/hw/piix4acpi.c
  
  static uint32_t acpiPm1ControlP1_readb(void *opaque, uint32_t addr)
  {
-@@ -337,7 +348,14 @@
+@@ -257,7 +268,14 @@
      s->pm1_control = val;
  /*    printf("acpiPm1Control_writew \n addr %x val:%x\n", addr, val); */
  
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/acpi-support
--- a/tools/ioemu/patches/acpi-support  Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/acpi-support  Mon Aug 07 18:28:50 2006 +0100
@@ -1,94 +1,50 @@ Index: ioemu/Makefile.target
 Index: ioemu/Makefile.target
 ===================================================================
---- ioemu.orig/Makefile.target 2006-08-03 19:19:39.000000000 +0100
-+++ ioemu/Makefile.target      2006-08-04 10:35:36.445703379 +0100
-@@ -335,6 +335,7 @@
- VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
+--- ioemu.orig/Makefile.target 2006-08-06 02:23:23.000000000 +0100
++++ ioemu/Makefile.target      2006-08-07 17:38:47.698306442 +0100
+@@ -357,6 +357,7 @@
  VL_OBJS+= fdc.o mc146818rtc.o serial.o pc.o
- VL_OBJS+= cirrus_vga.o mixeng.o parallel.o
+ VL_OBJS+= cirrus_vga.o mixeng.o parallel.o acpi.o piix_pci.o
+ VL_OBJS+= usb-uhci.o
 +VL_OBJS+= piix4acpi.o
  DEFINES += -DHAS_AUDIO
  endif
  ifeq ($(TARGET_BASE_ARCH), ppc)
 Index: ioemu/hw/pc.c
 ===================================================================
---- ioemu.orig/hw/pc.c 2006-08-03 19:19:39.000000000 +0100
-+++ ioemu/hw/pc.c      2006-08-04 10:38:05.559415853 +0100
-@@ -566,6 +566,9 @@
+--- ioemu.orig/hw/pc.c 2006-08-06 02:23:45.000000000 +0100
++++ ioemu/hw/pc.c      2006-08-07 17:42:00.939426374 +0100
+@@ -572,6 +572,9 @@
  static int parallel_io[MAX_PARALLEL_PORTS] = { 0x378, 0x278, 0x3bc };
  static int parallel_irq[MAX_PARALLEL_PORTS] = { 7, 7, 7 };
  
 +/* PIIX4 acpi pci configuration space, func 3 */
-+extern void pci_piix4_acpi_init(PCIBus *bus);
++extern void pci_piix4_acpi_init(PCIBus *bus, int devfn);
 +
  #ifdef HAS_AUDIO
  static void audio_init (PCIBus *pci_bus)
  {
-@@ -867,6 +870,10 @@
+@@ -874,11 +877,15 @@
  
      cmos_init(ram_size, boot_device, bs_table, timeoffset);
  
 +    /* using PIIX4 acpi model */
 +    if (pci_enabled && acpi_enabled)
-+        pci_piix4_acpi_init(pci_bus);
++        pci_piix4_acpi_init(pci_bus, piix3_devfn + 3);
 +
      if (pci_enabled && usb_enabled) {
-         usb_uhci_init(pci_bus, usb_root_ports);
-         usb_attach(usb_root_ports[0], vm_usb_hub);
-Index: ioemu/hw/pci.c
-===================================================================
---- ioemu.orig/hw/pci.c        2006-08-03 19:19:35.000000000 +0100
-+++ ioemu/hw/pci.c     2006-08-03 19:19:39.000000000 +0100
-@@ -1697,7 +1697,7 @@
- static uint32_t pci_bios_io_addr;
- static uint32_t pci_bios_mem_addr;
- /* host irqs corresponding to PCI irqs A-D */
--static uint8_t pci_irqs[4] = { 11, 9, 11, 9 };
-+static uint8_t pci_irqs[4] = { 10, 11, 10, 11 };
- 
- static void pci_set_io_region_addr(PCIDevice *d, int region_num, uint32_t 
addr)
- {
-@@ -1750,12 +1750,22 @@
-             pci_set_io_region_addr(d, 3, 0x374);
-         }
-         break;
-+       case 0x0680:
-+       if (vendor_id == 0x8086 && device_id == 0x7113) {
-+          // PIIX4 ACPI PM 
-+        pci_config_writew(d, 0x20, 0x0000); // NO smb bus IO enable in PIIX4
-+        pci_config_writew(d, 0x22, 0x0000); 
-+        goto default_map;
-+      }
-+         break;
-+
-     case 0x0300:
-         if (vendor_id != 0x1234)
-             goto default_map;
-         /* VGA: map frame buffer to default Bochs VBE address */
-         pci_set_io_region_addr(d, 0, 0xE0000000);
-         break;
-+
-     case 0x0800:
-         /* PIC */
-         vendor_id = pci_config_readw(d, PCI_VENDOR_ID);
-@@ -1800,6 +1810,13 @@
-         pic_irq = pci_irqs[pin];
-         pci_config_writeb(d, PCI_INTERRUPT_LINE, pic_irq);
+         usb_uhci_init(pci_bus, piix3_devfn + 2);
      }
-+    if (class== 0x0680&& vendor_id == 0x8086 && device_id == 0x7113) {
-+         // PIIX4 ACPI PM
-+       pci_config_writew(d, 0x20, 0x0000); // NO smb bus IO enable in PIIX4
-+       pci_config_writew(d, 0x22, 0x0000);
-+       pci_config_writew(d, 0x3c, 0x0009); // Hardcodeed IRQ9
-+       pci_config_writew(d, 0x3d, 0x0001);
-+    }
- }
- 
- /*
+ 
+-    if (pci_enabled && acpi_enabled) {
++    if (pci_enabled && acpi_enabled && 0) {
+         piix4_pm_init(pci_bus, piix3_devfn + 3);
+     }
+ 
 Index: ioemu/hw/piix4acpi.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/hw/piix4acpi.c       2006-08-04 10:35:36.762666604 +0100
++++ ioemu/hw/piix4acpi.c       2006-08-07 17:41:41.932577728 +0100
 @@ -0,0 +1,388 @@
 +/*
 + * PIIX4 ACPI controller emulation
@@ -450,7 +406,7 @@ Index: ioemu/hw/piix4acpi.c
 +                                                                              
                        
 +
 +/* PIIX4 acpi pci configuration space, func 3 */
-+void pci_piix4_acpi_init(PCIBus *bus)
++void pci_piix4_acpi_init(PCIBus *bus, int devfn)
 +{
 +    PCIAcpiState *d;
 +    uint8_t *pci_conf;
@@ -458,7 +414,7 @@ Index: ioemu/hw/piix4acpi.c
 +    /* register a function 3 of PIIX4 */
 +    d = (PCIAcpiState *)pci_register_device(
 +        bus, "PIIX4 ACPI", sizeof(PCIAcpiState),
-+        ((PCIDevice *)piix3_state)->devfn + 3, NULL, NULL);
++        devfn, NULL, NULL);
 +
 +    acpi_state = d;
 +    pci_conf = d->dev.config;
@@ -480,18 +436,18 @@ Index: ioemu/hw/piix4acpi.c
 +}
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:35:36.697674145 +0100
-+++ ioemu/vl.c 2006-08-04 10:37:38.001608828 +0100
-@@ -166,6 +166,8 @@
- 
- time_t timeoffset = 0;
- 
+--- ioemu.orig/vl.c    2006-08-06 02:23:45.000000000 +0100
++++ ioemu/vl.c 2006-08-07 17:41:40.613727012 +0100
+@@ -156,7 +156,7 @@
+ #else
+ #define MAX_CPUS 1
+ #endif
+-int acpi_enabled = 1;
 +int acpi_enabled = 0;
-+
- char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'};
- extern int domid;
- 
-@@ -4803,6 +4805,7 @@
+ int fd_bootchk = 1;
+ 
+ extern int vcpus;
+@@ -5341,6 +5341,7 @@
             "-loadvm file    start right away with a saved state (loadvm in 
monitor)\n"
           "-vnc display    start a VNC server on display\n"
             "-timeoffset     time offset (in seconds) from local time\n"
@@ -499,7 +455,7 @@ Index: ioemu/vl.c
             "\n"
             "During emulation, the following keys are useful:\n"
             "ctrl-alt-f      toggle full screen\n"
-@@ -4894,6 +4897,7 @@
+@@ -5426,6 +5427,7 @@
      QEMU_OPTION_d,
      QEMU_OPTION_vcpus,
      QEMU_OPTION_timeoffset,
@@ -507,7 +463,7 @@ Index: ioemu/vl.c
  };
  
  typedef struct QEMUOption {
-@@ -4973,6 +4977,7 @@
+@@ -5509,6 +5511,7 @@
      { "d", HAS_ARG, QEMU_OPTION_d },
      { "vcpus", 1, QEMU_OPTION_vcpus },
      { "timeoffset", HAS_ARG, QEMU_OPTION_timeoffset },
@@ -515,7 +471,7 @@ Index: ioemu/vl.c
      { NULL },
  };
  
-@@ -5678,6 +5683,9 @@
+@@ -6256,6 +6259,9 @@
              case QEMU_OPTION_timeoffset:
                  timeoffset = strtol(optarg, NULL, 0);
                  break;
@@ -527,9 +483,9 @@ Index: ioemu/vl.c
      }
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-04 10:35:36.629682033 +0100
-+++ ioemu/vl.h 2006-08-04 10:36:21.513475699 +0100
-@@ -159,6 +159,7 @@
+--- ioemu.orig/vl.h    2006-08-06 02:23:45.000000000 +0100
++++ ioemu/vl.h 2006-08-07 17:38:47.847289567 +0100
+@@ -167,6 +167,7 @@
  extern int kqemu_allowed;
  extern int win2k_install_hack;
  extern int usb_enabled;
@@ -537,3 +493,46 @@ Index: ioemu/vl.h
  extern int smp_cpus;
  
  /* XXX: make it dynamic */
+Index: ioemu/hw/piix_pci.c
+===================================================================
+--- ioemu.orig/hw/piix_pci.c   2006-08-06 02:29:41.000000000 +0100
++++ ioemu/hw/piix_pci.c        2006-08-07 17:38:57.480198468 +0100
+@@ -241,7 +241,7 @@
+ static uint32_t pci_bios_io_addr;
+ static uint32_t pci_bios_mem_addr;
+ /* host irqs corresponding to PCI irqs A-D */
+-static uint8_t pci_irqs[4] = { 11, 9, 11, 9 };
++static uint8_t pci_irqs[4] = { 10, 11, 10, 11 };
+ 
+ static void pci_config_writel(PCIDevice *d, uint32_t addr, uint32_t val)
+ {
+@@ -336,6 +336,14 @@
+             pci_set_io_region_addr(d, 3, 0x374);
+         }
+         break;
++    case 0x0680:
++        if (vendor_id == 0x8086 && device_id == 0x7113) {
++            /* PIIX4 ACPI PM */
++            pci_config_writew(d, 0x20, 0x0000); /* NO smb bus IO enable in 
PIIX4 */
++            pci_config_writew(d, 0x22, 0x0000);
++            goto default_map;
++        }
++        break;
+     case 0x0300:
+         if (vendor_id != 0x1234)
+             goto default_map;
+@@ -386,6 +394,14 @@
+         pic_irq = pci_irqs[pin];
+         pci_config_writeb(d, PCI_INTERRUPT_LINE, pic_irq);
+     }
++
++    if (class== 0x0680&& vendor_id == 0x8086 && device_id == 0x7113) {
++         // PIIX4 ACPI PM
++       pci_config_writew(d, 0x20, 0x0000); // NO smb bus IO enable in PIIX4
++       pci_config_writew(d, 0x22, 0x0000);
++       pci_config_writew(d, 0x3c, 0x0009); // Hardcodeed IRQ9
++       pci_config_writew(d, 0x3d, 0x0001);
++    }
+ }
+ 
+ /*
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/acpi-timer-support
--- a/tools/ioemu/patches/acpi-timer-support    Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/acpi-timer-support    Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/hw/piix4acpi.c
 Index: ioemu/hw/piix4acpi.c
 ===================================================================
---- ioemu.orig/hw/piix4acpi.c  2006-08-04 10:57:28.922994985 +0100
-+++ ioemu/hw/piix4acpi.c       2006-08-04 11:35:15.177574467 +0100
+--- ioemu.orig/hw/piix4acpi.c  2006-08-06 02:24:54.262068457 +0100
++++ ioemu/hw/piix4acpi.c       2006-08-06 02:30:29.288761563 +0100
 @@ -24,31 +24,30 @@
   */
  
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/domain-destroy
--- a/tools/ioemu/patches/domain-destroy        Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/domain-destroy        Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,8 @@ diff -r e1dce5114e92 monitor.c
-diff -r e1dce5114e92 monitor.c
---- a/monitor.c        Mon Jun 26 16:04:15 2006 +0100
-+++ b/monitor.c        Mon Jun 26 16:04:26 2006 +0100
-@@ -306,6 +306,7 @@ static void do_info_history (void)
+Index: ioemu/monitor.c
+===================================================================
+--- ioemu.orig/monitor.c       2006-08-06 02:22:01.487319736 +0100
++++ ioemu/monitor.c    2006-08-06 02:23:02.269544103 +0100
+@@ -308,6 +308,7 @@
  
  static void do_quit(void)
  {
@@ -9,10 +10,11 @@ diff -r e1dce5114e92 monitor.c
      exit(0);
  }
  
-diff -r e1dce5114e92 target-i386-dm/helper2.c
---- a/target-i386-dm/helper2.c Mon Jun 26 16:04:15 2006 +0100
-+++ b/target-i386-dm/helper2.c Mon Jun 26 16:04:26 2006 +0100
-@@ -483,5 +483,25 @@ int main_loop(void)
+Index: ioemu/target-i386-dm/helper2.c
+===================================================================
+--- ioemu.orig/target-i386-dm/helper2.c        2006-08-06 02:22:59.251880493 
+0100
++++ ioemu/target-i386-dm/helper2.c     2006-08-06 02:23:02.270543991 +0100
+@@ -483,5 +483,25 @@
                               shared_page->vcpu_iodata[send_vcpu].dm_eport);
          }
      }
@@ -38,10 +40,11 @@ diff -r e1dce5114e92 target-i386-dm/help
 +        xc_interface_close(xcHandle);
 +    }
 +}
-diff -r e1dce5114e92 vl.h
---- a/vl.h     Mon Jun 26 16:04:15 2006 +0100
-+++ b/vl.h     Mon Jun 26 16:04:26 2006 +0100
-@@ -1098,4 +1098,7 @@ void kqemu_record_dump(void);
+Index: ioemu/vl.h
+===================================================================
+--- ioemu.orig/vl.h    2006-08-06 02:22:59.255880047 +0100
++++ ioemu/vl.h 2006-08-06 02:23:02.271543880 +0100
+@@ -1189,4 +1189,7 @@
  void kqemu_record_dump(void);
  
  extern char domain_name[];
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/domain-reset
--- a/tools/ioemu/patches/domain-reset  Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/domain-reset  Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/target-i386-dm/helper2.c
 Index: ioemu/target-i386-dm/helper2.c
 ===================================================================
---- ioemu.orig/target-i386-dm/helper2.c        2006-07-27 11:16:57.527492229 
+0100
-+++ ioemu/target-i386-dm/helper2.c     2006-07-27 11:16:59.381287013 +0100
+--- ioemu.orig/target-i386-dm/helper2.c        2006-08-06 02:21:15.779415007 
+0100
++++ ioemu/target-i386-dm/helper2.c     2006-08-06 02:22:59.251880493 +0100
 @@ -123,6 +123,25 @@
  /* called from main_cpu_reset */
  void cpu_reset(CPUX86State *env)
@@ -41,9 +41,9 @@ Index: ioemu/target-i386-dm/helper2.c
          /* Wait up to 10 msec. */
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:59.317294097 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:59.384286681 +0100
-@@ -4412,7 +4412,7 @@
+--- ioemu.orig/vl.c    2006-08-06 02:22:56.618174081 +0100
++++ ioemu/vl.c 2006-08-06 02:22:59.254880158 +0100
+@@ -4948,7 +4948,7 @@
  } QEMUResetEntry;
  
  static QEMUResetEntry *first_reset_entry;
@@ -54,9 +54,9 @@ Index: ioemu/vl.c
  
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-07-27 11:16:58.127425816 +0100
-+++ ioemu/vl.h 2006-07-27 11:16:59.384286681 +0100
-@@ -122,6 +122,7 @@
+--- ioemu.orig/vl.h    2006-08-06 02:22:01.501318175 +0100
++++ ioemu/vl.h 2006-08-06 02:22:59.255880047 +0100
+@@ -130,6 +130,7 @@
  
  void qemu_register_reset(QEMUResetHandler *func, void *opaque);
  void qemu_system_reset_request(void);
@@ -64,7 +64,7 @@ Index: ioemu/vl.h
  void qemu_system_shutdown_request(void);
  void qemu_system_powerdown_request(void);
  #if !defined(TARGET_SPARC)
-@@ -131,6 +132,8 @@
+@@ -139,6 +140,8 @@
  void qemu_system_powerdown(void);
  #endif
  
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/domain-timeoffset
--- a/tools/ioemu/patches/domain-timeoffset     Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/domain-timeoffset     Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/hw/mc146818rtc.c
 Index: ioemu/hw/mc146818rtc.c
 ===================================================================
---- ioemu.orig/hw/mc146818rtc.c        2006-08-04 10:57:22.049787220 +0100
-+++ ioemu/hw/mc146818rtc.c     2006-08-04 10:57:28.677023336 +0100
+--- ioemu.orig/hw/mc146818rtc.c        2006-08-07 17:44:43.593604340 +0100
++++ ioemu/hw/mc146818rtc.c     2006-08-07 17:44:47.594168708 +0100
 @@ -178,10 +178,27 @@
      }
  }
@@ -46,9 +46,9 @@ Index: ioemu/hw/mc146818rtc.c
  static void rtc_copy_date(RTCState *s)
 Index: ioemu/hw/pc.c
 ===================================================================
---- ioemu.orig/hw/pc.c 2006-08-04 10:57:28.406054568 +0100
-+++ ioemu/hw/pc.c      2006-08-04 10:57:28.678023221 +0100
-@@ -151,7 +151,7 @@
+--- ioemu.orig/hw/pc.c 2006-08-07 17:44:47.324198106 +0100
++++ ioemu/hw/pc.c      2006-08-07 17:44:54.830380715 +0100
+@@ -159,7 +159,7 @@
  }
  
  /* hd_table must contain 4 block drivers */
@@ -57,7 +57,7 @@ Index: ioemu/hw/pc.c
  {
      RTCState *s = rtc_state;
      int val;
-@@ -162,6 +162,7 @@
+@@ -170,6 +170,7 @@
  
      /* set the CMOS date */
      time(&ti);
@@ -65,7 +65,7 @@ Index: ioemu/hw/pc.c
      if (rtc_utc)
          tm = gmtime(&ti);
      else
-@@ -613,7 +614,7 @@
+@@ -619,7 +620,7 @@
  static void pc_init1(uint64_t ram_size, int vga_ram_size, int boot_device,
                       DisplayState *ds, const char **fd_filename, int snapshot,
                       const char *kernel_filename, const char *kernel_cmdline,
@@ -74,7 +74,7 @@ Index: ioemu/hw/pc.c
                       int pci_enabled)
  {
  #ifndef NOBIOS
-@@ -864,7 +865,7 @@
+@@ -871,7 +872,7 @@
  
      floppy_controller = fdctrl_init(6, 2, 0, 0x3f0, fd_table);
  
@@ -82,8 +82,8 @@ Index: ioemu/hw/pc.c
 +    cmos_init(ram_size, boot_device, bs_table, timeoffset);
  
      if (pci_enabled && usb_enabled) {
-         usb_uhci_init(pci_bus, usb_root_ports);
-@@ -883,12 +884,13 @@
+         usb_uhci_init(pci_bus, piix3_devfn + 2);
+@@ -912,12 +913,13 @@
                          int snapshot, 
                          const char *kernel_filename, 
                          const char *kernel_cmdline,
@@ -99,7 +99,7 @@ Index: ioemu/hw/pc.c
  }
  
  static void pc_init_isa(uint64_t ram_size, int vga_ram_size, int boot_device,
-@@ -896,12 +898,13 @@
+@@ -925,12 +927,13 @@
                          int snapshot, 
                          const char *kernel_filename, 
                          const char *kernel_cmdline,
@@ -117,9 +117,9 @@ Index: ioemu/hw/pc.c
  QEMUMachine pc_machine = {
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:57:28.545038549 +0100
-+++ ioemu/vl.c 2006-08-04 10:57:28.680022990 +0100
-@@ -164,6 +164,8 @@
+--- ioemu.orig/vl.c    2006-08-07 17:44:47.464182863 +0100
++++ ioemu/vl.c 2006-08-07 17:44:54.830380715 +0100
+@@ -163,6 +163,8 @@
  
  int xc_handle;
  
@@ -128,7 +128,7 @@ Index: ioemu/vl.c
  char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'};
  extern int domid;
  
-@@ -4800,6 +4802,7 @@
+@@ -5338,6 +5340,7 @@
  #endif
             "-loadvm file    start right away with a saved state (loadvm in 
monitor)\n"
           "-vnc display    start a VNC server on display\n"
@@ -136,7 +136,7 @@ Index: ioemu/vl.c
             "\n"
             "During emulation, the following keys are useful:\n"
             "ctrl-alt-f      toggle full screen\n"
-@@ -4890,6 +4893,7 @@
+@@ -5422,6 +5425,7 @@
  
      QEMU_OPTION_d,
      QEMU_OPTION_vcpus,
@@ -144,7 +144,7 @@ Index: ioemu/vl.c
  };
  
  typedef struct QEMUOption {
-@@ -4968,6 +4972,7 @@
+@@ -5504,6 +5508,7 @@
      
      { "d", HAS_ARG, QEMU_OPTION_d },
      { "vcpus", 1, QEMU_OPTION_vcpus },
@@ -152,7 +152,7 @@ Index: ioemu/vl.c
      { NULL },
  };
  
-@@ -5670,6 +5675,9 @@
+@@ -6248,6 +6253,9 @@
                  vcpus = atoi(optarg);
                  fprintf(logfile, "qemu: the number of cpus is %d\n", vcpus);
                  break;
@@ -162,7 +162,7 @@ Index: ioemu/vl.c
              }
          }
      }
-@@ -6007,7 +6015,8 @@
+@@ -6489,7 +6497,8 @@
  
      machine->init(ram_size, vga_ram_size, boot_device,
                    ds, fd_filename, snapshot,
@@ -170,13 +170,13 @@ Index: ioemu/vl.c
 +                  kernel_filename, kernel_cmdline, initrd_filename,
 +                  timeoffset);
  
-     gui_timer = qemu_new_timer(rt_clock, gui_update, NULL);
-     qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock));
+     /* init USB devices */
+     if (usb_enabled) {
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-04 10:57:28.411053992 +0100
-+++ ioemu/vl.h 2006-08-04 10:57:28.681022875 +0100
-@@ -556,7 +556,7 @@
+--- ioemu.orig/vl.h    2006-08-07 17:44:47.329197562 +0100
++++ ioemu/vl.h 2006-08-07 17:44:54.830380715 +0100
+@@ -575,7 +575,7 @@
                                   int boot_device,
               DisplayState *ds, const char **fd_filename, int snapshot,
               const char *kernel_filename, const char *kernel_cmdline,
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/hypervisor-pit
--- a/tools/ioemu/patches/hypervisor-pit        Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/hypervisor-pit        Mon Aug 07 18:28:50 2006 +0100
@@ -1,20 +1,20 @@ Index: ioemu/Makefile.target
 Index: ioemu/Makefile.target
 ===================================================================
---- ioemu.orig/Makefile.target 2006-07-27 11:16:58.970332506 +0100
-+++ ioemu/Makefile.target      2006-07-27 11:16:59.758245283 +0100
-@@ -333,7 +333,7 @@
+--- ioemu.orig/Makefile.target 2006-08-06 02:22:26.380544784 +0100
++++ ioemu/Makefile.target      2006-08-06 02:23:23.059226607 +0100
+@@ -354,7 +354,7 @@
  ifeq ($(TARGET_BASE_ARCH), i386)
  # Hardware support
  VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
 -VL_OBJS+= fdc.o mc146818rtc.o serial.o i8254.o pcspk.o pc.o
 +VL_OBJS+= fdc.o mc146818rtc.o serial.o pc.o
- VL_OBJS+= cirrus_vga.o mixeng.o parallel.o
+ VL_OBJS+= cirrus_vga.o mixeng.o parallel.o acpi.o piix_pci.o
+ VL_OBJS+= usb-uhci.o
  DEFINES += -DHAS_AUDIO
- endif
 Index: ioemu/hw/pc.c
 ===================================================================
---- ioemu.orig/hw/pc.c 2006-07-27 11:16:59.036325200 +0100
-+++ ioemu/hw/pc.c      2006-07-27 11:16:59.759245173 +0100
+--- ioemu.orig/hw/pc.c 2006-08-06 02:22:35.588518336 +0100
++++ ioemu/hw/pc.c      2006-08-06 02:23:07.875919141 +0100
 @@ -38,7 +38,9 @@
  
  static fdctrl_t *floppy_controller;
@@ -25,7 +25,7 @@ Index: ioemu/hw/pc.c
  #ifndef CONFIG_DM
  static IOAPICState *ioapic;
  #endif /* !CONFIG_DM */
-@@ -803,8 +805,10 @@
+@@ -810,8 +812,10 @@
      }
  #endif /* !CONFIG_DM */
      isa_pic = pic_init(pic_irq_request, first_cpu);
@@ -38,9 +38,9 @@ Index: ioemu/hw/pc.c
          pic_set_alt_irq_func(isa_pic, ioapic_set_irq, ioapic);
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:59.614261222 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:59.762244841 +0100
-@@ -5034,6 +5034,7 @@
+--- ioemu.orig/vl.c    2006-08-06 02:23:05.216215627 +0100
++++ ioemu/vl.c 2006-08-06 02:23:07.878918807 +0100
+@@ -5570,6 +5570,7 @@
  
  #ifdef HAS_AUDIO
  struct soundhw soundhw[] = {
@@ -48,7 +48,7 @@ Index: ioemu/vl.c
  #ifdef TARGET_I386
      {
          "pcspk",
-@@ -5043,6 +5044,7 @@
+@@ -5579,6 +5580,7 @@
          { .init_isa = pcspk_audio_init }
      },
  #endif
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/ide-hd-multithread
--- a/tools/ioemu/patches/ide-hd-multithread    Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/ide-hd-multithread    Mon Aug 07 18:28:50 2006 +0100
@@ -1,6 +1,7 @@ diff -r d711aa4fa261 hw/ide.c
-diff -r d711aa4fa261 hw/ide.c
---- a/hw/ide.c Fri Jun 16 10:13:37 2006 +0200
-+++ b/hw/ide.c Fri Jun 16 10:30:28 2006 +0200
+Index: ioemu/hw/ide.c
+===================================================================
+--- ioemu.orig/hw/ide.c        2006-08-06 02:03:50.520919718 +0100
++++ ioemu/hw/ide.c     2006-08-06 02:23:41.153209614 +0100
 @@ -22,6 +22,7 @@
   * THE SOFTWARE.
   */
@@ -9,7 +10,7 @@ diff -r d711aa4fa261 hw/ide.c
  
  /* debug IDE devices */
  //#define DEBUG_IDE
-@@ -390,6 +391,48 @@ typedef struct PCIIDEState {
+@@ -390,6 +391,48 @@
      int type; /* see IDE_TYPE_xxx */
  } PCIIDEState;
  
@@ -58,7 +59,7 @@ diff -r d711aa4fa261 hw/ide.c
  static void ide_dma_start(IDEState *s, IDEDMAFunc *dma_cb);
  
  static void padstr(char *str, const char *src, int len)
-@@ -695,7 +738,9 @@ static int ide_read_dma_cb(IDEState *s,
+@@ -695,7 +738,9 @@
      }
      if (s->io_buffer_index >= s->io_buffer_size && s->nsector == 0) {
          s->status = READY_STAT | SEEK_STAT;
@@ -68,7 +69,7 @@ diff -r d711aa4fa261 hw/ide.c
  #ifdef DEBUG_IDE_ATAPI
          printf("dma status=0x%x\n", s->status);
  #endif
-@@ -795,7 +840,11 @@ static int ide_write_dma_cb(IDEState *s,
+@@ -795,7 +840,11 @@
                              qemu_get_clock(vm_clock) + (ticks_per_sec / 
1000));
                  } else 
  #endif
@@ -80,7 +81,7 @@ diff -r d711aa4fa261 hw/ide.c
                  return 0;
              }
              if (n > MAX_MULT_SECTORS)
-@@ -1046,7 +1095,9 @@ static int ide_atapi_cmd_read_dma_cb(IDE
+@@ -1046,7 +1095,9 @@
      if (s->packet_transfer_size <= 0) {
          s->status = READY_STAT;
          s->nsector = (s->nsector & ~7) | ATAPI_INT_REASON_IO | 
ATAPI_INT_REASON_CD;
@@ -90,7 +91,7 @@ diff -r d711aa4fa261 hw/ide.c
  #ifdef DEBUG_IDE_ATAPI
          printf("dma status=0x%x\n", s->status);
  #endif
-@@ -2219,9 +2270,30 @@ static void ide_map(PCIDevice *pci_dev, 
+@@ -2103,9 +2154,30 @@
      }
  }
  
@@ -110,18 +111,18 @@ diff -r d711aa4fa261 hw/ide.c
  /* XXX: full callback usage to prepare non blocking I/Os support -
     error handling */
 +#ifdef DMA_MULTI_THREAD
- static void ide_dma_loop(BMDMAState *bm)
++static void ide_dma_loop(BMDMAState *bm)
 +{
 +    write(file_pipes[1], &bm, sizeof(bm));
 +}
 +static void dma_thread_loop(BMDMAState *bm)
 +#else  /* DMA_MULTI_THREAD */
-+static void ide_dma_loop(BMDMAState *bm)
+ static void ide_dma_loop(BMDMAState *bm)
 +#endif /* !DMA_MULTI_THREAD */
  {
      struct {
          uint32_t addr;
-@@ -2257,10 +2329,7 @@ static void ide_dma_loop(BMDMAState *bm)
+@@ -2141,10 +2213,7 @@
      }
      /* end of transfer */
   the_end:
@@ -133,7 +134,7 @@ diff -r d711aa4fa261 hw/ide.c
  }
  
  static void ide_dma_start(IDEState *s, IDEDMAFunc *dma_cb)
-@@ -2486,6 +2555,9 @@ void pci_cmd646_ide_init(PCIBus *bus, Bl
+@@ -2370,6 +2439,9 @@
                cmd646_set_irq, d, 0);
      ide_init2(&d->ide_if[2], hd_table[2], hd_table[3],
                cmd646_set_irq, d, 1);
@@ -143,7 +144,7 @@ diff -r d711aa4fa261 hw/ide.c
  }
  
  /* hd_table must contain 4 block drivers */
-@@ -2521,6 +2593,9 @@ void pci_piix3_ide_init(PCIBus *bus, Blo
+@@ -2405,6 +2477,9 @@
                pic_set_irq_new, isa_pic, 15);
      ide_init_ioport(&d->ide_if[0], 0x1f0, 0x3f6);
      ide_init_ioport(&d->ide_if[2], 0x170, 0x376);
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/ioemu-ia64
--- a/tools/ioemu/patches/ioemu-ia64    Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/ioemu-ia64    Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/hw/iommu.c
 Index: ioemu/hw/iommu.c
 ===================================================================
---- ioemu.orig/hw/iommu.c      2006-08-04 10:57:22.606723023 +0100
-+++ ioemu/hw/iommu.c   2006-08-04 10:57:27.489160251 +0100
+--- ioemu.orig/hw/iommu.c      2006-08-06 01:55:03.240628184 +0100
++++ ioemu/hw/iommu.c   2006-08-06 02:18:54.843126039 +0100
 @@ -82,7 +82,11 @@
  #define IOPTE_VALID         0x00000002 /* IOPTE is valid */
  #define IOPTE_WAZ           0x00000001 /* Write as zeros */
@@ -16,8 +16,8 @@ Index: ioemu/hw/iommu.c
  
 Index: ioemu/cpu-all.h
 ===================================================================
---- ioemu.orig/cpu-all.h       2006-08-04 10:57:27.123202432 +0100
-+++ ioemu/cpu-all.h    2006-08-04 10:57:27.490160136 +0100
+--- ioemu.orig/cpu-all.h       2006-08-06 02:17:09.392881406 +0100
++++ ioemu/cpu-all.h    2006-08-06 02:18:54.844125928 +0100
 @@ -835,6 +835,31 @@
                  :"=m" (*(volatile long *)addr)
                  :"dIr" (nr));
@@ -52,9 +52,9 @@ Index: ioemu/cpu-all.h
  /* memory API */
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:57:27.419168318 +0100
-+++ ioemu/vl.c 2006-08-04 10:57:27.493159790 +0100
-@@ -5567,6 +5567,11 @@
+--- ioemu.orig/vl.c    2006-08-06 02:18:45.608155528 +0100
++++ ioemu/vl.c 2006-08-06 02:18:54.847125593 +0100
+@@ -6140,6 +6140,11 @@
      /* init the memory */
      phys_ram_size = ram_size + vga_ram_size + bios_size;
  
@@ -66,7 +66,7 @@ Index: ioemu/vl.c
  #ifdef CONFIG_DM
  
      nr_pages = ram_size/PAGE_SIZE;
-@@ -5578,6 +5583,7 @@
+@@ -6151,6 +6156,7 @@
          exit(-1);
      }
  
@@ -74,7 +74,7 @@ Index: ioemu/vl.c
      if (xc_get_pfn_list(xc_handle, domid, page_array, nr_pages) != nr_pages) {
          fprintf(logfile, "xc_get_pfn_list returned error %d\n", errno);
          exit(-1);
-@@ -5600,6 +5606,41 @@
+@@ -6173,6 +6179,41 @@
  
      free(page_array);
  
@@ -115,11 +115,11 @@ Index: ioemu/vl.c
 +#endif
  #else  /* !CONFIG_DM */
  
- #ifdef CONFIG_SOFTMMU
+     phys_ram_base = qemu_vmalloc(phys_ram_size);
 Index: ioemu/target-i386-dm/exec-dm.c
 ===================================================================
---- ioemu.orig/target-i386-dm/exec-dm.c        2006-08-04 10:57:26.738246803 
+0100
-+++ ioemu/target-i386-dm/exec-dm.c     2006-08-04 10:57:27.493159790 +0100
+--- ioemu.orig/target-i386-dm/exec-dm.c        2006-08-06 02:15:01.776108064 
+0100
++++ ioemu/target-i386-dm/exec-dm.c     2006-08-06 02:18:54.848125482 +0100
 @@ -341,6 +341,23 @@
      return io_mem_read[io_index >> IO_MEM_SHIFT];
  }
@@ -156,8 +156,8 @@ Index: ioemu/target-i386-dm/exec-dm.c
                  memset(buf, 0xff, len);
 Index: ioemu/exec-all.h
 ===================================================================
---- ioemu.orig/exec-all.h      2006-08-04 10:57:26.651256830 +0100
-+++ ioemu/exec-all.h   2006-08-04 10:57:27.494159675 +0100
+--- ioemu.orig/exec-all.h      2006-08-06 02:14:09.796902750 +0100
++++ ioemu/exec-all.h   2006-08-06 02:18:54.848125482 +0100
 @@ -462,12 +462,13 @@
  }
  #endif
@@ -177,8 +177,8 @@ Index: ioemu/exec-all.h
  
 Index: ioemu/target-i386-dm/cpu.h
 ===================================================================
---- ioemu.orig/target-i386-dm/cpu.h    2006-08-04 10:57:26.737246918 +0100
-+++ ioemu/target-i386-dm/cpu.h 2006-08-04 10:57:27.494159675 +0100
+--- ioemu.orig/target-i386-dm/cpu.h    2006-08-06 02:15:01.776108064 +0100
++++ ioemu/target-i386-dm/cpu.h 2006-08-06 02:18:54.848125482 +0100
 @@ -80,7 +80,11 @@
  /* helper2.c */
  int main_loop(void);
@@ -194,7 +194,7 @@ Index: ioemu/ia64_intrinsic.h
 Index: ioemu/ia64_intrinsic.h
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/ia64_intrinsic.h     2006-08-04 10:57:27.495159560 +0100
++++ ioemu/ia64_intrinsic.h     2006-08-06 02:18:54.849125370 +0100
 @@ -0,0 +1,276 @@
 +#ifndef IA64_INTRINSIC_H
 +#define IA64_INTRINSIC_H
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-64bit
--- a/tools/ioemu/patches/qemu-64bit    Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-64bit    Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/cpu-all.h
 Index: ioemu/cpu-all.h
 ===================================================================
---- ioemu.orig/cpu-all.h       2006-07-26 13:19:49.515051864 +0100
-+++ ioemu/cpu-all.h    2006-07-26 13:19:49.563046860 +0100
+--- ioemu.orig/cpu-all.h       2006-08-06 02:14:09.796902750 +0100
++++ ioemu/cpu-all.h    2006-08-06 02:15:39.707879423 +0100
 @@ -822,7 +822,7 @@
  
  /* memory API */
@@ -13,9 +13,9 @@ Index: ioemu/cpu-all.h
  extern uint8_t *phys_ram_dirty;
 Index: ioemu/hw/pc.c
 ===================================================================
---- ioemu.orig/hw/pc.c 2006-07-26 13:19:49.516051760 +0100
-+++ ioemu/hw/pc.c      2006-07-26 13:19:49.564046755 +0100
-@@ -147,7 +147,7 @@
+--- ioemu.orig/hw/pc.c 2006-08-06 02:14:09.797902638 +0100
++++ ioemu/hw/pc.c      2006-08-06 02:15:39.708879311 +0100
+@@ -155,7 +155,7 @@
  }
  
  /* hd_table must contain 4 block drivers */
@@ -24,7 +24,7 @@ Index: ioemu/hw/pc.c
  {
      RTCState *s = rtc_state;
      int val;
-@@ -604,7 +604,7 @@
+@@ -610,7 +610,7 @@
  }
  
  /* PC hardware initialisation */
@@ -33,7 +33,7 @@ Index: ioemu/hw/pc.c
                       DisplayState *ds, const char **fd_filename, int snapshot,
                       const char *kernel_filename, const char *kernel_cmdline,
                       const char *initrd_filename,
-@@ -853,7 +853,7 @@
+@@ -882,7 +882,7 @@
      }
  }
  
@@ -42,7 +42,7 @@ Index: ioemu/hw/pc.c
                          DisplayState *ds, const char **fd_filename, 
                          int snapshot, 
                          const char *kernel_filename, 
-@@ -866,7 +866,7 @@
+@@ -895,7 +895,7 @@
               initrd_filename, 1);
  }
  
@@ -53,9 +53,9 @@ Index: ioemu/hw/pc.c
                          const char *kernel_filename, 
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-26 13:19:49.552048007 +0100
-+++ ioemu/vl.c 2006-07-26 13:19:49.566046547 +0100
-@@ -123,7 +123,7 @@
+--- ioemu.orig/vl.c    2006-08-06 02:15:31.040845624 +0100
++++ ioemu/vl.c 2006-08-06 02:15:39.711878977 +0100
+@@ -122,7 +122,7 @@
  const char* keyboard_layout = NULL;
  int64_t ticks_per_sec;
  int boot_device = 'c';
@@ -64,7 +64,7 @@ Index: ioemu/vl.c
  int pit_min_timer_count = 0;
  int nb_nics;
  NICInfo nd_table[MAX_NICS];
-@@ -5320,7 +5320,7 @@
+@@ -5895,7 +5895,7 @@
                  help();
                  break;
              case QEMU_OPTION_m:
@@ -75,9 +75,9 @@ Index: ioemu/vl.c
                  if (ram_size > PHYS_RAM_MAX_SIZE) {
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-07-26 13:19:49.552048007 +0100
-+++ ioemu/vl.h 2006-07-26 13:19:49.567046443 +0100
-@@ -138,7 +138,7 @@
+--- ioemu.orig/vl.h    2006-08-06 02:15:10.368150219 +0100
++++ ioemu/vl.h 2006-08-06 02:15:39.711878977 +0100
+@@ -146,7 +146,7 @@
  extern int xc_handle;
  extern int domid;
  
@@ -86,7 +86,7 @@ Index: ioemu/vl.h
  extern int bios_size;
  extern int rtc_utc;
  extern int cirrus_vga_enabled;
-@@ -542,7 +542,7 @@
+@@ -561,7 +561,7 @@
  
  #ifndef QEMU_TOOL
  
@@ -97,9 +97,9 @@ Index: ioemu/vl.h
               const char *kernel_filename, const char *kernel_cmdline,
 Index: ioemu/hw/vga.c
 ===================================================================
---- ioemu.orig/hw/vga.c        2006-07-26 13:19:49.549048319 +0100
-+++ ioemu/hw/vga.c     2006-07-26 13:20:17.956085603 +0100
-@@ -1293,7 +1293,8 @@
+--- ioemu.orig/hw/vga.c        2006-08-06 02:15:10.364150665 +0100
++++ ioemu/hw/vga.c     2006-08-06 02:15:39.712878866 +0100
+@@ -1365,7 +1365,8 @@
  static void vga_draw_graphic(VGAState *s, int full_update)
  {
      int y1, y, update, page_min, page_max, linesize, y_start, double_scan, 
mask;
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-allow-disable-sdl
--- a/tools/ioemu/patches/qemu-allow-disable-sdl        Mon Aug 07 18:27:27 
2006 +0100
+++ b/tools/ioemu/patches/qemu-allow-disable-sdl        Mon Aug 07 18:28:50 
2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/configure
 Index: ioemu/configure
 ===================================================================
---- ioemu.orig/configure       2006-08-03 19:19:38.000000000 +0100
-+++ ioemu/configure    2006-08-03 23:38:19.000000000 +0100
-@@ -226,8 +226,6 @@
+--- ioemu.orig/configure       2006-08-06 02:15:01.771108621 +0100
++++ ioemu/configure    2006-08-06 02:42:26.213918476 +0100
+@@ -228,8 +228,6 @@
    ;;
    --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
    ;;
@@ -11,7 +11,7 @@ Index: ioemu/configure
    --disable-gcc-check) check_gcc="no"
    ;;
    --disable-system) softmmu="no"
-@@ -736,14 +734,6 @@
+@@ -758,14 +756,6 @@
    target_user_only="yes"
  fi
  
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-bugfixes
--- a/tools/ioemu/patches/qemu-bugfixes Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-bugfixes Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/console.c
 Index: ioemu/console.c
 ===================================================================
---- ioemu.orig/console.c       2006-07-27 11:16:53.732912290 +0100
-+++ ioemu/console.c    2006-07-27 11:16:57.753467214 +0100
-@@ -449,7 +449,7 @@
+--- ioemu.orig/console.c       2006-08-06 02:03:45.803444993 +0100
++++ ioemu/console.c    2006-08-06 02:15:48.546894051 +0100
+@@ -505,7 +505,7 @@
              c++;
          }
      }
@@ -11,7 +11,7 @@ Index: ioemu/console.c
      s->cells = cells;
  }
  
-@@ -954,11 +954,21 @@
+@@ -1032,11 +1032,21 @@
      return !active_console->text_console;
  }
  
@@ -34,8 +34,8 @@ Index: ioemu/console.c
      static int color_inited;
  
      chr = qemu_mallocz(sizeof(CharDriverState));
-@@ -976,12 +986,7 @@
- 
+@@ -1058,12 +1068,7 @@
+     
      if (!color_inited) {
          color_inited = 1;
 -        for(j = 0; j < 2; j++) {
@@ -48,23 +48,11 @@ Index: ioemu/console.c
      }
      s->y_displayed = 0;
      s->y_base = 0;
-Index: ioemu/usb-linux.c
-===================================================================
---- ioemu.orig/usb-linux.c     2006-07-27 11:16:53.732912290 +0100
-+++ ioemu/usb-linux.c  2006-07-27 11:16:57.754467103 +0100
-@@ -26,6 +26,7 @@
- #if defined(__linux__)
- #include <dirent.h>
- #include <sys/ioctl.h>
-+#define __user /* new versions of usbdevice_fs.h use this private attribute */
- #include <linux/usbdevice_fs.h>
- #include <linux/version.h>
- 
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:57.681475183 +0100
-+++ ioemu/vl.c 2006-07-27 11:17:33.279534373 +0100
-@@ -3201,6 +3201,7 @@
+--- ioemu.orig/vl.c    2006-08-06 02:15:39.711878977 +0100
++++ ioemu/vl.c 2006-08-06 02:15:48.550893605 +0100
+@@ -3671,6 +3671,7 @@
              if (net_tap_fd_init(vlan, fd))
                  ret = 0;
          } else {
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-cleanup
--- a/tools/ioemu/patches/qemu-cleanup  Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-cleanup  Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/hw/vga.c
 Index: ioemu/hw/vga.c
 ===================================================================
---- ioemu.orig/hw/vga.c        2006-07-12 11:33:54.853085901 +0100
-+++ ioemu/hw/vga.c     2006-07-12 11:35:00.780818943 +0100
-@@ -1563,7 +1563,9 @@
+--- ioemu.orig/hw/vga.c        2006-08-06 02:03:51.906765409 +0100
++++ ioemu/hw/vga.c     2006-08-06 02:15:10.364150665 +0100
+@@ -1622,7 +1622,9 @@
  static void vga_save(QEMUFile *f, void *opaque)
  {
      VGAState *s = opaque;
@@ -12,7 +12,7 @@ Index: ioemu/hw/vga.c
  
      qemu_put_be32s(f, &s->latch);
      qemu_put_8s(f, &s->sr_index);
-@@ -1604,7 +1606,10 @@
+@@ -1663,7 +1665,10 @@
  static int vga_load(QEMUFile *f, void *opaque, int version_id)
  {
      VGAState *s = opaque;
@@ -26,8 +26,8 @@ Index: ioemu/hw/vga.c
          return -EINVAL;
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-12 11:35:00.708827963 +0100
-+++ ioemu/vl.c 2006-07-12 11:35:00.783818568 +0100
+--- ioemu.orig/vl.c    2006-08-06 02:15:01.774108287 +0100
++++ ioemu/vl.c 2006-08-06 02:15:31.040845624 +0100
 @@ -39,6 +39,7 @@
  #include <sys/ioctl.h>
  #include <sys/socket.h>
@@ -36,7 +36,7 @@ Index: ioemu/vl.c
  #include <dirent.h>
  #include <netdb.h>
  #ifdef _BSD
-@@ -4777,7 +4778,9 @@
+@@ -5308,7 +5309,9 @@
      QEMU_OPTION_d,
      QEMU_OPTION_hdachs,
      QEMU_OPTION_L,
@@ -46,7 +46,7 @@ Index: ioemu/vl.c
      QEMU_OPTION_k,
      QEMU_OPTION_localtime,
      QEMU_OPTION_cirrusvga,
-@@ -4844,7 +4847,9 @@
+@@ -5379,7 +5382,9 @@
      { "d", HAS_ARG, QEMU_OPTION_d },
      { "hdachs", HAS_ARG, QEMU_OPTION_hdachs },
      { "L", HAS_ARG, QEMU_OPTION_L },
@@ -56,10 +56,10 @@ Index: ioemu/vl.c
  #ifdef USE_KQEMU
      { "no-kqemu", 0, QEMU_OPTION_no_kqemu },
      { "kernel-kqemu", 0, QEMU_OPTION_kernel_kqemu },
-@@ -5274,9 +5279,11 @@
-             case QEMU_OPTION_fdb:
-                 fd_filename[1] = optarg;
+@@ -5849,9 +5854,11 @@
+                 fd_bootchk = 0;
                  break;
+ #endif
 +#ifdef USE_CODE_COPY
              case QEMU_OPTION_no_code_copy:
                  code_copy_enabled = 0;
@@ -70,9 +70,9 @@ Index: ioemu/vl.c
                      fprintf(stderr, "qemu: too many network clients\n");
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-07-12 11:35:00.709827838 +0100
-+++ ioemu/vl.h 2006-07-12 11:35:00.784818442 +0100
-@@ -892,7 +892,7 @@
+--- ioemu.orig/vl.h    2006-08-06 02:15:01.775108175 +0100
++++ ioemu/vl.h 2006-08-06 02:15:10.368150219 +0100
+@@ -957,7 +957,7 @@
               unsigned long vram_offset, int vram_size, int width, int height);
  
  /* slavio_intctl.c */
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-dm
--- a/tools/ioemu/patches/qemu-dm       Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-dm       Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/Makefile.target
 Index: ioemu/Makefile.target
 ===================================================================
---- ioemu.orig/Makefile.target 2006-07-14 15:50:41.320748096 +0100
-+++ ioemu/Makefile.target      2006-07-14 15:55:04.753733845 +0100
-@@ -285,7 +285,7 @@
+--- ioemu.orig/Makefile.target 2006-08-06 02:14:04.797460093 +0100
++++ ioemu/Makefile.target      2006-08-06 02:14:09.794902973 +0100
+@@ -302,7 +302,7 @@
  endif
  
  # must use static linking to avoid leaving stuff in virtual address space
@@ -13,8 +13,8 @@ Index: ioemu/Makefile.target
  VL_OBJS+=tap-win32.o
 Index: ioemu/configure
 ===================================================================
---- ioemu.orig/configure       2006-07-14 15:50:41.320748096 +0100
-+++ ioemu/configure    2006-07-14 15:55:04.753733845 +0100
+--- ioemu.orig/configure       2006-08-06 02:14:04.797460093 +0100
++++ ioemu/configure    2006-08-06 02:14:09.795902861 +0100
 @@ -75,8 +75,8 @@
  bigendian="no"
  mingw32="no"
@@ -26,7 +26,7 @@ Index: ioemu/configure
  adlib="no"
  oss="no"
  dsound="no"
-@@ -727,6 +727,8 @@
+@@ -749,6 +749,8 @@
  if expr $target : '.*-softmmu' > /dev/null ; then
    target_softmmu="yes"
  fi
@@ -37,8 +37,8 @@ Index: ioemu/configure
    target_user_only="yes"
 Index: ioemu/cpu-all.h
 ===================================================================
---- ioemu.orig/cpu-all.h       2006-07-14 15:50:30.488983278 +0100
-+++ ioemu/cpu-all.h    2006-07-14 15:55:04.544757636 +0100
+--- ioemu.orig/cpu-all.h       2006-08-06 02:14:04.797460093 +0100
++++ ioemu/cpu-all.h    2006-08-06 02:14:09.796902750 +0100
 @@ -690,7 +690,9 @@
  void page_set_flags(target_ulong start, target_ulong end, int flags);
  void page_unprotect_range(target_ulong data, target_ulong data_size);
@@ -64,8 +64,8 @@ Index: ioemu/cpu-all.h
  void cpu_dump_state(CPUState *env, FILE *f, 
 Index: ioemu/disas.h
 ===================================================================
---- ioemu.orig/disas.h 2006-07-14 15:50:30.489983164 +0100
-+++ ioemu/disas.h      2006-07-14 15:50:41.334746500 +0100
+--- ioemu.orig/disas.h 2006-08-06 02:14:04.797460093 +0100
++++ ioemu/disas.h      2006-08-06 02:14:09.796902750 +0100
 @@ -1,6 +1,7 @@
  #ifndef _QEMU_DISAS_H
  #define _QEMU_DISAS_H
@@ -83,8 +83,8 @@ Index: ioemu/disas.h
  #endif /* _QEMU_DISAS_H */
 Index: ioemu/exec-all.h
 ===================================================================
---- ioemu.orig/exec-all.h      2006-07-14 15:50:30.490983050 +0100
-+++ ioemu/exec-all.h   2006-07-14 15:50:41.335746386 +0100
+--- ioemu.orig/exec-all.h      2006-08-06 02:14:04.798459982 +0100
++++ ioemu/exec-all.h   2006-08-06 02:14:09.796902750 +0100
 @@ -509,7 +509,7 @@
  
  extern int tb_invalidated_flag;
@@ -105,17 +105,17 @@ Index: ioemu/exec-all.h
      return addr;
 Index: ioemu/hw/pc.c
 ===================================================================
---- ioemu.orig/hw/pc.c 2006-07-14 15:50:30.491982936 +0100
-+++ ioemu/hw/pc.c      2006-07-14 15:55:04.543757750 +0100
-@@ -65,6 +65,7 @@
-     return qemu_get_clock(vm_clock);
+--- ioemu.orig/hw/pc.c 2006-08-06 02:14:04.797460093 +0100
++++ ioemu/hw/pc.c      2006-08-06 02:14:09.797902638 +0100
+@@ -73,6 +73,7 @@
+     }
  }
  
 +#ifndef CONFIG_DM
  /* IRQ handling */
  int cpu_get_pic_interrupt(CPUState *env)
  {
-@@ -81,6 +82,7 @@
+@@ -89,6 +90,7 @@
      intno = pic_read_irq(isa_pic);
      return intno;
  }
@@ -123,7 +123,7 @@ Index: ioemu/hw/pc.c
  
  static void pic_irq_request(void *opaque, int level)
  {
-@@ -394,6 +396,7 @@
+@@ -400,6 +402,7 @@
  
  /*************************************************/
  
@@ -131,7 +131,7 @@ Index: ioemu/hw/pc.c
  static void putb(uint8_t **pp, int val)
  {
      uint8_t *q;
-@@ -540,6 +543,7 @@
+@@ -546,6 +549,7 @@
      float_pointer_struct[10] = 
          -mpf_checksum(float_pointer_struct, q - float_pointer_struct);
  }
@@ -139,7 +139,7 @@ Index: ioemu/hw/pc.c
  
  
  static const int ide_iobase[2] = { 0x1f0, 0x170 };
-@@ -619,12 +623,14 @@
+@@ -626,12 +630,14 @@
      /* init CPUs */
      for(i = 0; i < smp_cpus; i++) {
          env = cpu_init();
@@ -154,7 +154,7 @@ Index: ioemu/hw/pc.c
          register_savevm("cpu", i, 3, cpu_save, cpu_load, env);
          qemu_register_reset(main_cpu_reset, env);
          if (pci_enabled) {
-@@ -683,6 +689,7 @@
+@@ -690,6 +696,7 @@
      
      bochs_bios_init();
  
@@ -162,7 +162,7 @@ Index: ioemu/hw/pc.c
      if (linux_boot) {
          uint8_t bootsect[512];
          uint8_t old_bootsect[512];
-@@ -738,6 +745,7 @@
+@@ -745,6 +752,7 @@
          /* loader type */
          stw_raw(phys_ram_base + KERNEL_PARAMS_ADDR + 0x210, 0x01);
      }
@@ -170,7 +170,7 @@ Index: ioemu/hw/pc.c
  
      if (pci_enabled) {
          pci_bus = i440fx_init();
-@@ -776,9 +784,11 @@
+@@ -783,9 +791,11 @@
      isa_pic = pic_init(pic_irq_request, first_cpu);
      pit = pit_init(0x40, 0);
      pcspk_init(pit);
@@ -184,8 +184,8 @@ Index: ioemu/hw/pc.c
          if (serial_hds[i]) {
 Index: ioemu/hw/vga_int.h
 ===================================================================
---- ioemu.orig/hw/vga_int.h    2006-07-14 15:50:30.491982936 +0100
-+++ ioemu/hw/vga_int.h 2006-07-14 15:55:02.931941245 +0100
+--- ioemu.orig/hw/vga_int.h    2006-08-06 02:14:04.797460093 +0100
++++ ioemu/hw/vga_int.h 2006-08-06 02:14:09.797902638 +0100
 @@ -28,7 +28,7 @@
  #define ST01_DISP_ENABLE    0x01
  
@@ -193,12 +193,12 @@ Index: ioemu/hw/vga_int.h
 -#define CONFIG_BOCHS_VBE
 +//#define CONFIG_BOCHS_VBE
  
- #define VBE_DISPI_MAX_XRES              1024
- #define VBE_DISPI_MAX_YRES              768
+ #define VBE_DISPI_MAX_XRES              1600
+ #define VBE_DISPI_MAX_YRES              1200
 Index: ioemu/monitor.c
 ===================================================================
---- ioemu.orig/monitor.c       2006-07-14 15:50:30.493982708 +0100
-+++ ioemu/monitor.c    2006-07-14 15:55:04.754733732 +0100
+--- ioemu.orig/monitor.c       2006-08-06 02:14:04.798459982 +0100
++++ ioemu/monitor.c    2006-08-06 02:14:49.574468309 +0100
 @@ -68,6 +68,12 @@
  
  void term_flush(void)
@@ -212,7 +212,7 @@ Index: ioemu/monitor.c
      if (term_outbuf_index > 0) {
          qemu_chr_write(monitor_hd, term_outbuf, term_outbuf_index);
          term_outbuf_index = 0;
-@@ -104,6 +110,7 @@
+@@ -106,6 +112,7 @@
      va_end(ap);
  }
  
@@ -220,7 +220,7 @@ Index: ioemu/monitor.c
  static int monitor_fprintf(FILE *stream, const char *fmt, ...)
  {
      va_list ap;
-@@ -112,6 +119,7 @@
+@@ -114,6 +121,7 @@
      va_end(ap);
      return 0;
  }
@@ -228,7 +228,7 @@ Index: ioemu/monitor.c
  
  static int compare_cmd(const char *name, const char *list)
  {
-@@ -225,6 +233,7 @@
+@@ -227,6 +235,7 @@
      return mon_cpu;
  }
  
@@ -236,7 +236,7 @@ Index: ioemu/monitor.c
  static void do_info_registers(void)
  {
      CPUState *env;
-@@ -278,6 +287,7 @@
+@@ -280,6 +289,7 @@
  {
      dump_exec_info(NULL, monitor_fprintf);
  }
@@ -244,7 +244,7 @@ Index: ioemu/monitor.c
  
  static void do_info_history (void)
  {
-@@ -375,6 +385,7 @@
+@@ -377,6 +387,7 @@
      cpu_set_log(mask);
  }
  
@@ -252,7 +252,7 @@ Index: ioemu/monitor.c
  static void do_savevm(const char *filename)
  {
      if (qemu_savevm(filename) < 0)
-@@ -621,6 +632,7 @@
+@@ -623,6 +634,7 @@
  #endif
      term_printf("\n");
  }
@@ -260,23 +260,23 @@ Index: ioemu/monitor.c
  
  static void do_sum(uint32_t start, uint32_t size)
  {
-@@ -792,6 +804,7 @@
-     }
+@@ -841,6 +853,7 @@
+     kbd_mouse_event(0, 0, 0, mouse_button_state);
  }
  
 +#ifndef CONFIG_DM
  static void do_ioport_read(int count, int format, int size, int addr, int 
has_index, int index)
  {
      uint32_t val;
-@@ -952,6 +965,7 @@
-     }
- }
- #endif
-+#endif /* !CONFIG_DM */
- 
- static void do_info_kqemu(void)
- {
-@@ -1045,6 +1059,7 @@
+@@ -1031,6 +1044,7 @@
+     term_printf("kqemu support: not compiled\n");
+ #endif
+ } 
++#endif /* !CONFIG_DM */
+ 
+ #ifdef CONFIG_PROFILER
+ 
+@@ -1152,6 +1166,7 @@
        "filename", "save screen into PPM image 'filename'" },
      { "log", "s", do_log,
        "item1[,...]", "activate logging of the specified items to 
'/tmp/qemu.log'" }, 
@@ -284,7 +284,7 @@ Index: ioemu/monitor.c
      { "savevm", "F", do_savevm,
        "filename", "save the whole virtual machine state to 'filename'" }, 
      { "loadvm", "F", do_loadvm,
-@@ -1065,21 +1080,26 @@
+@@ -1172,21 +1187,26 @@
        "/fmt expr", "print expression value (use $reg for CPU register 
access)", },
      { "i", "/ii.", do_ioport_read, 
        "/fmt addr", "I/O port read" },
@@ -308,10 +308,10 @@ Index: ioemu/monitor.c
      { "cpu", "i", do_cpu_set, 
        "index", "set the default CPU" },
 +#endif /* !CONFIG_DM */
-     { NULL, NULL, }, 
- };
- 
-@@ -1090,10 +1110,12 @@
+     { "mouse_move", "sss?", do_mouse_move, 
+       "dx dy [dz]", "send mouse move events" },
+     { "mouse_button", "i", do_mouse_button, 
+@@ -1208,10 +1228,12 @@
        "", "show the network state" },
      { "block", "", do_info_block,
        "", "show the block devices" },
@@ -324,7 +324,7 @@ Index: ioemu/monitor.c
      { "history", "", do_info_history,
        "", "show the command line history", },
      { "irq", "", irq_info,
-@@ -1102,6 +1124,7 @@
+@@ -1220,6 +1242,7 @@
        "", "show i8259 (PIC) state", },
      { "pci", "", pci_info,
        "", "show PCI info", },
@@ -332,15 +332,15 @@ Index: ioemu/monitor.c
  #if defined(TARGET_I386)
      { "tlb", "", tlb_info,
        "", "show virtual to physical memory mappings", },
-@@ -1110,6 +1133,7 @@
- #endif
-     { "jit", "", do_info_jit,
+@@ -1230,6 +1253,7 @@
        "", "show dynamic compiler info", },
-+#endif /* !CONFIG_DM */
      { "kqemu", "", do_info_kqemu,
        "", "show kqemu information", },
++#endif /* !CONFIG_DM */
      { "usb", "", usb_info,
-@@ -1123,6 +1147,7 @@
+       "", "show guest USB devices", },
+     { "usbhost", "", usb_host_info,
+@@ -1243,6 +1267,7 @@
  
  /*******************************************************************/
  
@@ -348,7 +348,7 @@ Index: ioemu/monitor.c
  static const char *pch;
  static jmp_buf expr_env;
  
-@@ -1663,6 +1688,7 @@
+@@ -1786,6 +1811,7 @@
      *pp = pch;
      return 0;
  }
@@ -356,7 +356,7 @@ Index: ioemu/monitor.c
  
  static int get_str(char *buf, int buf_size, const char **pp)
  {
-@@ -1729,8 +1755,10 @@
+@@ -1852,8 +1878,10 @@
      return 0;
  }
  
@@ -367,7 +367,7 @@ Index: ioemu/monitor.c
  
  #define MAX_ARGS 16
  
-@@ -1738,7 +1766,10 @@
+@@ -1861,7 +1889,10 @@
  {
      const char *p, *pstart, *typestr;
      char *q;
@@ -379,7 +379,7 @@ Index: ioemu/monitor.c
      term_cmd_t *cmd;
      char cmdname[256];
      char buf[1024];
-@@ -1830,6 +1861,7 @@
+@@ -1953,6 +1984,7 @@
                  args[nb_args++] = str;
              }
              break;
@@ -387,7 +387,7 @@ Index: ioemu/monitor.c
          case '/':
              {
                  int count, format, size;
-@@ -1962,6 +1994,7 @@
+@@ -2085,6 +2117,7 @@
                  }
              }
              break;
@@ -395,7 +395,7 @@ Index: ioemu/monitor.c
          case '-':
              {
                  int has_option;
-@@ -1988,6 +2021,11 @@
+@@ -2111,6 +2144,11 @@
                  args[nb_args++] = (void *)has_option;
              }
              break;
@@ -407,7 +407,7 @@ Index: ioemu/monitor.c
          default:
          bad_type:
              term_printf("%s: unknown type '%c'\n", cmdname, c);
-@@ -2035,6 +2073,7 @@
+@@ -2161,6 +2199,7 @@
      return;
  }
  
@@ -415,7 +415,7 @@ Index: ioemu/monitor.c
  static void cmd_completion(const char *name, const char *list)
  {
      const char *p, *pstart;
-@@ -2222,6 +2261,11 @@
+@@ -2354,6 +2393,11 @@
      for(i = 0; i < nb_args; i++)
          qemu_free(args[i]);
  }
@@ -429,9 +429,9 @@ Index: ioemu/monitor.c
  {
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-14 15:50:30.496982366 +0100
-+++ ioemu/vl.c 2006-07-14 15:55:07.676401124 +0100
-@@ -423,12 +423,15 @@
+--- ioemu.orig/vl.c    2006-08-06 02:14:04.797460093 +0100
++++ ioemu/vl.c 2006-08-06 02:14:09.802902081 +0100
+@@ -422,12 +422,15 @@
  void hw_error(const char *fmt, ...)
  {
      va_list ap;
@@ -447,7 +447,7 @@ Index: ioemu/vl.c
      for(env = first_cpu; env != NULL; env = env->next_cpu) {
          fprintf(stderr, "CPU #%d:\n", env->cpu_index);
  #ifdef TARGET_I386
-@@ -437,6 +440,7 @@
+@@ -436,6 +439,7 @@
          cpu_dump_state(env, stderr, fprintf, 0);
  #endif
      }
@@ -455,7 +455,7 @@ Index: ioemu/vl.c
      va_end(ap);
      abort();
  }
-@@ -3800,6 +3804,7 @@
+@@ -4336,6 +4340,7 @@
      return ret;
  }
  
@@ -463,7 +463,7 @@ Index: ioemu/vl.c
  /***********************************************************/
  /* cpu save/restore */
  
-@@ -4234,6 +4239,25 @@
+@@ -4770,6 +4775,25 @@
      }
      return 0;
  }
@@ -489,7 +489,7 @@ Index: ioemu/vl.c
  
  /***********************************************************/
  /* machine registration */
-@@ -5481,6 +5505,7 @@
+@@ -6054,6 +6078,7 @@
      socket_init();
  #endif
  
@@ -497,7 +497,7 @@ Index: ioemu/vl.c
      /* init network clients */
      if (nb_net_clients == 0) {
          /* if no clients, we use a default config */
-@@ -5490,6 +5515,7 @@
+@@ -6063,6 +6088,7 @@
                  "user");
          nb_net_clients = 2;
      }
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-fix-memset-args
--- a/tools/ioemu/patches/qemu-fix-memset-args  Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-fix-memset-args  Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/audio/audio.c
 Index: ioemu/audio/audio.c
 ===================================================================
---- ioemu.orig/audio/audio.c   2006-07-14 13:43:45.000000000 +0100
-+++ ioemu/audio/audio.c        2006-08-04 10:18:17.243240246 +0100
-@@ -597,11 +597,11 @@
+--- ioemu.orig/audio/audio.c   2006-08-06 02:03:50.013976165 +0100
++++ ioemu/audio/audio.c        2006-08-06 02:42:28.991609008 +0100
+@@ -605,11 +605,11 @@
      }
  
      if (info->sign) {
diff -r 06e2a95d3395 -r ec8dd0528fc6 
tools/ioemu/patches/qemu-fix-write-to-disk-synchronous
--- a/tools/ioemu/patches/qemu-fix-write-to-disk-synchronous    Mon Aug 07 
18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-fix-write-to-disk-synchronous    Mon Aug 07 
18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/block-vmdk.c
 Index: ioemu/block-vmdk.c
 ===================================================================
---- ioemu.orig/block-vmdk.c    2006-07-14 13:43:45.000000000 +0100
-+++ ioemu/block-vmdk.c 2006-08-04 10:27:15.368803650 +0100
+--- ioemu.orig/block-vmdk.c    2006-08-06 02:03:45.756450226 +0100
++++ ioemu/block-vmdk.c 2006-08-06 02:42:31.884286728 +0100
 @@ -96,7 +96,7 @@
      uint32_t magic;
      int l1_size;
@@ -13,8 +13,8 @@ Index: ioemu/block-vmdk.c
          if (fd < 0)
 Index: ioemu/block-qcow.c
 ===================================================================
---- ioemu.orig/block-qcow.c    2006-07-14 13:43:45.000000000 +0100
-+++ ioemu/block-qcow.c 2006-08-04 10:27:15.367803766 +0100
+--- ioemu.orig/block-qcow.c    2006-08-06 02:03:45.754450449 +0100
++++ ioemu/block-qcow.c 2006-08-06 02:42:31.885286616 +0100
 @@ -95,7 +95,7 @@
      int fd, len, i, shift;
      QCowHeader header;
@@ -26,8 +26,8 @@ Index: ioemu/block-qcow.c
          if (fd < 0)
 Index: ioemu/block-bochs.c
 ===================================================================
---- ioemu.orig/block-bochs.c   2006-07-14 13:43:45.000000000 +0100
-+++ ioemu/block-bochs.c        2006-08-04 10:27:15.345806311 +0100
+--- ioemu.orig/block-bochs.c   2006-08-06 01:55:02.225741179 +0100
++++ ioemu/block-bochs.c        2006-08-06 02:42:31.885286616 +0100
 @@ -91,7 +91,7 @@
      int fd, i;
      struct bochs_header bochs;
@@ -39,9 +39,9 @@ Index: ioemu/block-bochs.c
          if (fd < 0)
 Index: ioemu/block.c
 ===================================================================
---- ioemu.orig/block.c 2006-08-03 19:19:39.000000000 +0100
-+++ ioemu/block.c      2006-08-04 10:27:15.357804923 +0100
-@@ -677,7 +677,7 @@
+--- ioemu.orig/block.c 2006-08-06 02:42:18.880735483 +0100
++++ ioemu/block.c      2006-08-06 02:42:31.886286505 +0100
+@@ -685,7 +685,7 @@
      int rv;
  #endif
  
@@ -52,8 +52,8 @@ Index: ioemu/block.c
          if (fd < 0)
 Index: ioemu/block-cow.c
 ===================================================================
---- ioemu.orig/block-cow.c     2006-07-14 13:43:45.000000000 +0100
-+++ ioemu/block-cow.c  2006-08-04 10:27:15.366803882 +0100
+--- ioemu.orig/block-cow.c     2006-08-06 02:03:45.751450783 +0100
++++ ioemu/block-cow.c  2006-08-06 02:42:31.886286505 +0100
 @@ -69,7 +69,7 @@
      struct cow_header_v2 cow_header;
      int64_t size;
@@ -65,8 +65,8 @@ Index: ioemu/block-cow.c
          if (fd < 0)
 Index: ioemu/block-cloop.c
 ===================================================================
---- ioemu.orig/block-cloop.c   2006-07-14 13:43:45.000000000 +0100
-+++ ioemu/block-cloop.c        2006-08-04 10:27:15.365803997 +0100
+--- ioemu.orig/block-cloop.c   2006-08-06 01:55:02.226741067 +0100
++++ ioemu/block-cloop.c        2006-08-06 02:42:31.886286505 +0100
 @@ -55,7 +55,7 @@
      BDRVCloopState *s = bs->opaque;
      uint32_t offsets_size,max_compressed_block_size=1,i;
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-hvm-banner
--- a/tools/ioemu/patches/qemu-hvm-banner       Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-hvm-banner       Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/monitor.c
 Index: ioemu/monitor.c
 ===================================================================
---- ioemu.orig/monitor.c       2006-07-12 11:35:00.705828339 +0100
-+++ ioemu/monitor.c    2006-07-12 11:35:01.307752925 +0100
-@@ -2293,15 +2293,14 @@
+--- ioemu.orig/monitor.c       2006-08-06 02:15:01.772108510 +0100
++++ ioemu/monitor.c    2006-08-06 02:17:10.847719223 +0100
+@@ -2425,15 +2425,14 @@
  
  static void monitor_start_input(void)
  {
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-init-vgabios
--- a/tools/ioemu/patches/qemu-init-vgabios     Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-init-vgabios     Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/hw/vga.c
 Index: ioemu/hw/vga.c
 ===================================================================
---- ioemu.orig/hw/vga.c        2006-07-27 11:10:44.847738090 +0100
-+++ ioemu/hw/vga.c     2006-07-27 11:11:02.008839258 +0100
-@@ -1669,6 +1669,136 @@
+--- ioemu.orig/hw/vga.c        2006-08-06 02:22:01.441324863 +0100
++++ ioemu/hw/vga.c     2006-08-06 02:22:46.606290142 +0100
+@@ -1728,6 +1728,136 @@
      }
  }
  
@@ -139,7 +139,7 @@ Index: ioemu/hw/vga.c
  void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, 
                       unsigned long vga_ram_offset, int vga_ram_size)
  {
-@@ -1710,6 +1840,8 @@
+@@ -1769,6 +1899,8 @@
                           vga_screen_dump, s);
      /* XXX: currently needed for display */
      vga_state = s;
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-logging
--- a/tools/ioemu/patches/qemu-logging  Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-logging  Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/vl.c
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:57.756466882 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:57.828458912 +0100
-@@ -4698,7 +4698,7 @@
+--- ioemu.orig/vl.c    2006-08-06 02:15:48.550893605 +0100
++++ ioemu/vl.c 2006-08-06 02:16:31.246133963 +0100
+@@ -5234,7 +5234,7 @@
             "-S              freeze CPU at startup (use 'c' to start 
execution)\n"
             "-s              wait gdb connection to port %d\n"
             "-p port         change gdb connection port\n"
@@ -11,7 +11,7 @@ Index: ioemu/vl.c
             "-hdachs c,h,s[,t]  force hard disk 0 physical geometry and the 
optional BIOS\n"
             "                translation (t=none or lba) (usually qemu can 
guess them)\n"
             "-L path         set the directory for the BIOS and VGA BIOS\n"
-@@ -4776,7 +4776,7 @@
+@@ -5307,7 +5307,7 @@
      QEMU_OPTION_S,
      QEMU_OPTION_s,
      QEMU_OPTION_p,
@@ -20,7 +20,7 @@ Index: ioemu/vl.c
      QEMU_OPTION_hdachs,
      QEMU_OPTION_L,
  #ifdef USE_CODE_COPY
-@@ -4845,7 +4845,7 @@
+@@ -5380,7 +5380,7 @@
      { "S", 0, QEMU_OPTION_S },
      { "s", 0, QEMU_OPTION_s },
      { "p", HAS_ARG, QEMU_OPTION_p },
@@ -29,16 +29,16 @@ Index: ioemu/vl.c
      { "hdachs", HAS_ARG, QEMU_OPTION_hdachs },
      { "L", HAS_ARG, QEMU_OPTION_L },
  #ifdef USE_CODE_COPY
-@@ -5096,6 +5096,8 @@
-     char usb_devices[MAX_VM_USB_PORTS][128];
+@@ -5640,6 +5640,8 @@
+     char usb_devices[MAX_USB_CMDLINE][128];
      int usb_devices_index;
  
 +    char qemu_dm_logfilename[64];
 +
      LIST_INIT (&vm_change_state_head);
- #if !defined(CONFIG_SOFTMMU)
-     /* we never want that malloc() uses mmap() */
-@@ -5145,6 +5147,11 @@
+ #ifndef _WIN32
+     {
+@@ -5715,6 +5717,11 @@
      nb_nics = 0;
      /* default mac address of the first network interface */
      
@@ -50,7 +50,7 @@ Index: ioemu/vl.c
      optind = 1;
      for(;;) {
          if (optind >= argc)
-@@ -5330,7 +5337,7 @@
+@@ -5905,7 +5912,7 @@
                      exit(1);
                  }
                  break;
@@ -59,12 +59,3 @@ Index: ioemu/vl.c
                  {
                      int mask;
                      CPULogItem *item;
-@@ -5701,7 +5708,7 @@
-         stk.ss_flags = 0;
- 
-         if (sigaltstack(&stk, NULL) < 0) {
--            perror("sigaltstack");
-+            fprintf(logfile, "sigaltstack returned error %d\n", errno);
-             exit(1);
-         }
-     }
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-no-apic
--- a/tools/ioemu/patches/qemu-no-apic  Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-no-apic  Mon Aug 07 18:28:50 2006 +0100
@@ -1,20 +1,20 @@ Index: ioemu/Makefile.target
 Index: ioemu/Makefile.target
 ===================================================================
---- ioemu.orig/Makefile.target 2006-07-12 11:35:00.704828464 +0100
-+++ ioemu/Makefile.target      2006-07-12 11:35:01.899678766 +0100
-@@ -334,7 +334,7 @@
+--- ioemu.orig/Makefile.target 2006-08-06 02:21:42.270461924 +0100
++++ ioemu/Makefile.target      2006-08-06 02:22:26.380544784 +0100
+@@ -355,7 +355,7 @@
  # Hardware support
  VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
  VL_OBJS+= fdc.o mc146818rtc.o serial.o i8254.o pcspk.o pc.o
--VL_OBJS+= cirrus_vga.o mixeng.o apic.o parallel.o
-+VL_OBJS+= cirrus_vga.o mixeng.o parallel.o
+-VL_OBJS+= cirrus_vga.o mixeng.o apic.o parallel.o acpi.o piix_pci.o
++VL_OBJS+= cirrus_vga.o mixeng.o parallel.o acpi.o piix_pci.o
+ VL_OBJS+= usb-uhci.o
  DEFINES += -DHAS_AUDIO
  endif
- ifeq ($(TARGET_BASE_ARCH), ppc)
 Index: ioemu/hw/pc.c
 ===================================================================
---- ioemu.orig/hw/pc.c 2006-07-12 11:35:01.685705573 +0100
-+++ ioemu/hw/pc.c      2006-07-12 11:35:01.900678640 +0100
+--- ioemu.orig/hw/pc.c 2006-08-06 02:22:01.524315611 +0100
++++ ioemu/hw/pc.c      2006-08-06 02:22:11.875161758 +0100
 @@ -39,7 +39,9 @@
  static fdctrl_t *floppy_controller;
  static RTCState *rtc_state;
@@ -22,10 +22,10 @@ Index: ioemu/hw/pc.c
 +#ifndef CONFIG_DM
  static IOAPICState *ioapic;
 +#endif /* !CONFIG_DM */
- static USBPort *usb_root_ports[2];
  
  static void ioport80_write(void *opaque, uint32_t addr, uint32_t data)
-@@ -633,9 +635,11 @@
+ {
+@@ -640,9 +642,11 @@
  #endif /* !CONFIG_DM */
          register_savevm("cpu", i, 3, cpu_save, cpu_load, env);
          qemu_register_reset(main_cpu_reset, env);
@@ -37,7 +37,7 @@ Index: ioemu/hw/pc.c
      }
  
      /* allocate RAM */
-@@ -782,9 +786,11 @@
+@@ -789,9 +793,11 @@
      register_ioport_read(0x92, 1, 1, ioport92_read, NULL);
      register_ioport_write(0x92, 1, 1, ioport92_write, NULL);
  
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-nobios
--- a/tools/ioemu/patches/qemu-nobios   Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-nobios   Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,8 @@ diff -r 77a889b0aef8 hw/pc.c
-diff -r 77a889b0aef8 hw/pc.c
---- a/hw/pc.c  Wed Jun 14 19:29:20 2006 +0200
-+++ b/hw/pc.c  Wed Jun 14 19:29:35 2006 +0200
-@@ -605,6 +605,8 @@ static void pc_init_ne2k_isa(NICInfo *nd
+Index: ioemu/hw/pc.c
+===================================================================
+--- ioemu.orig/hw/pc.c 2006-08-06 02:22:11.875161758 +0100
++++ ioemu/hw/pc.c      2006-08-06 02:22:35.588518336 +0100
+@@ -611,6 +611,8 @@
      nb_ne2k++;
  }
  
@@ -10,7 +11,7 @@ diff -r 77a889b0aef8 hw/pc.c
  /* PC hardware initialisation */
  static void pc_init1(uint64_t ram_size, int vga_ram_size, int boot_device,
                       DisplayState *ds, const char **fd_filename, int snapshot,
-@@ -612,10 +614,15 @@ static void pc_init1(uint64_t ram_size, 
+@@ -618,10 +620,15 @@
                       const char *initrd_filename,
                       int pci_enabled)
  {
@@ -25,9 +26,9 @@ diff -r 77a889b0aef8 hw/pc.c
      int bios_size, isa_bios_size;
 +#endif /* !NOBIOS */
      PCIBus *pci_bus;
+     int piix3_devfn = -1;
      CPUState *env;
-     NICInfo *nd;
-@@ -647,6 +654,7 @@ static void pc_init1(uint64_t ram_size, 
+@@ -654,6 +661,7 @@
      cpu_register_physical_memory(0, ram_size, 0);
  #endif
  
@@ -35,7 +36,7 @@ diff -r 77a889b0aef8 hw/pc.c
      /* BIOS load */
      bios_offset = ram_size + vga_ram_size;
      vga_bios_offset = bios_offset + 256 * 1024;
-@@ -675,6 +683,7 @@ static void pc_init1(uint64_t ram_size, 
+@@ -682,6 +690,7 @@
          snprintf(buf, sizeof(buf), "%s/%s", bios_dir, VGABIOS_FILENAME);
      }
      ret = load_image(buf, phys_ram_base + vga_bios_offset);
@@ -43,7 +44,7 @@ diff -r 77a889b0aef8 hw/pc.c
      
      /* setup basic memory access */
  #ifndef CONFIG_DM             /* HVM domain owns memory */
-@@ -682,6 +691,7 @@ static void pc_init1(uint64_t ram_size, 
+@@ -689,6 +698,7 @@
                                   vga_bios_offset | IO_MEM_ROM);
  #endif
  
@@ -51,7 +52,7 @@ diff -r 77a889b0aef8 hw/pc.c
      /* map the last 128KB of the BIOS in ISA space */
      isa_bios_size = bios_size;
      if (isa_bios_size > (128 * 1024))
-@@ -694,6 +704,7 @@ static void pc_init1(uint64_t ram_size, 
+@@ -701,6 +711,7 @@
      /* map all the bios at the top of memory */
      cpu_register_physical_memory((uint32_t)(-bios_size), 
                                   bios_size, bios_offset | IO_MEM_ROM);
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-smp
--- a/tools/ioemu/patches/qemu-smp      Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-smp      Mon Aug 07 18:28:50 2006 +0100
@@ -1,17 +1,17 @@ Index: ioemu/vl.c
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:58.619371357 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:58.823348777 +0100
-@@ -159,6 +159,8 @@
- #define MAX_CPUS 1
- #endif
+--- ioemu.orig/vl.c    2006-08-06 02:18:54.847125593 +0100
++++ ioemu/vl.c 2006-08-06 02:19:00.413505070 +0100
+@@ -158,6 +158,8 @@
+ int acpi_enabled = 1;
+ int fd_bootchk = 1;
  
 +extern int vcpus;
 +
  int xc_handle;
  
  char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'};
-@@ -4636,6 +4638,7 @@
+@@ -5172,6 +5174,7 @@
             "-m megs         set virtual RAM size to megs MB [default=%d]\n"
             "-smp n          set the number of CPUs to 'n' [default=1]\n"
             "-nographic      disable graphical output and redirect serial I/Os 
to console\n"
@@ -19,23 +19,23 @@ Index: ioemu/vl.c
  #ifndef _WIN32
           "-k language     use keyboard layout (for example \"fr\" for 
French)\n"
  #endif
-@@ -4810,6 +4813,7 @@
-     QEMU_OPTION_vnc,
+@@ -5342,6 +5345,7 @@
+     QEMU_OPTION_no_acpi,
  
      QEMU_OPTION_d,
 +    QEMU_OPTION_vcpus,
  };
  
  typedef struct QEMUOption {
-@@ -4887,6 +4891,7 @@
-     { "cirrusvga", 0, QEMU_OPTION_cirrusvga },
+@@ -5423,6 +5427,7 @@
+     { "no-acpi", 0, QEMU_OPTION_no_acpi },
      
      { "d", HAS_ARG, QEMU_OPTION_d },
 +    { "vcpus", 1, QEMU_OPTION_vcpus },
      { NULL },
  };
  
-@@ -5509,6 +5514,10 @@
+@@ -6087,6 +6092,10 @@
                  domid = atoi(optarg);
                  fprintf(logfile, "domid: %d\n", domid);
                  break;
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-target-i386-dm
--- a/tools/ioemu/patches/qemu-target-i386-dm   Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-target-i386-dm   Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/Makefile.target
 Index: ioemu/Makefile.target
 ===================================================================
---- ioemu.orig/Makefile.target 2006-07-28 09:56:49.468301708 +0100
-+++ ioemu/Makefile.target      2006-07-28 09:56:58.486281629 +0100
-@@ -57,6 +57,8 @@
+--- ioemu.orig/Makefile.target 2006-08-06 02:14:09.794902973 +0100
++++ ioemu/Makefile.target      2006-08-06 02:21:42.270461924 +0100
+@@ -62,6 +62,8 @@
  QEMU_SYSTEM=qemu-fast
  endif
  
@@ -11,7 +11,7 @@ Index: ioemu/Makefile.target
  ifdef CONFIG_USER_ONLY
  PROGS=$(QEMU_USER)
  else
-@@ -274,6 +276,9 @@
+@@ -291,6 +293,9 @@
  OBJS+=gdbstub.o
  endif
  
@@ -21,20 +21,20 @@ Index: ioemu/Makefile.target
  all: $(PROGS)
  
  $(QEMU_USER): $(OBJS)
-@@ -328,7 +333,7 @@
+@@ -349,7 +354,7 @@
  ifeq ($(TARGET_BASE_ARCH), i386)
  # Hardware support
  VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
 -VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
 +VL_OBJS+= fdc.o mc146818rtc.o serial.o i8254.o pcspk.o pc.o
- VL_OBJS+= cirrus_vga.o mixeng.o apic.o parallel.o
+ VL_OBJS+= cirrus_vga.o mixeng.o apic.o parallel.o acpi.o piix_pci.o
+ VL_OBJS+= usb-uhci.o
  DEFINES += -DHAS_AUDIO
- endif
 Index: ioemu/configure
 ===================================================================
---- ioemu.orig/configure       2006-07-28 09:56:49.469301595 +0100
-+++ ioemu/configure    2006-07-28 09:56:49.486299672 +0100
-@@ -359,6 +359,8 @@
+--- ioemu.orig/configure       2006-08-06 02:14:09.795902861 +0100
++++ ioemu/configure    2006-08-06 02:15:01.771108621 +0100
+@@ -373,6 +373,8 @@
      if [ "$user" = "yes" ] ; then
          target_list="i386-user arm-user armeb-user sparc-user ppc-user 
mips-user mipsel-user $target_list"
      fi
@@ -45,12 +45,12 @@ Index: ioemu/configure
  fi
 Index: ioemu/monitor.c
 ===================================================================
---- ioemu.orig/monitor.c       2006-07-28 09:56:49.472301255 +0100
-+++ ioemu/monitor.c    2006-07-28 09:56:58.720255164 +0100
-@@ -1142,6 +1142,10 @@
-       "", "show host USB devices", },
-     { "profile", "", do_info_profile,
+--- ioemu.orig/monitor.c       2006-08-06 02:14:49.574468309 +0100
++++ ioemu/monitor.c    2006-08-06 02:21:16.172371202 +0100
+@@ -1262,6 +1262,10 @@
        "", "show profiling information", },
+     { "capture", "", do_info_capture,
+       "show capture information" },
 +#ifdef CONFIG_DM
 +    { "hvmiopage", "", sp_info,
 +      "", "show HVM device model shared page info", },
@@ -60,8 +60,8 @@ Index: ioemu/monitor.c
  
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-28 09:56:49.475300916 +0100
-+++ ioemu/vl.c 2006-07-28 09:56:58.917232883 +0100
+--- ioemu.orig/vl.c    2006-08-06 02:14:09.802902081 +0100
++++ ioemu/vl.c 2006-08-06 02:21:16.369349244 +0100
 @@ -87,7 +87,7 @@
  
  #include "exec-all.h"
@@ -71,7 +71,7 @@ Index: ioemu/vl.c
  
  //#define DEBUG_UNUSED_IOPORT
  //#define DEBUG_IOPORT
-@@ -4382,7 +4382,7 @@
+@@ -4918,7 +4918,7 @@
  
  static QEMUResetEntry *first_reset_entry;
  static int reset_requested;
@@ -80,7 +80,7 @@ Index: ioemu/vl.c
  static int powerdown_requested;
  
  void qemu_register_reset(QEMUResetHandler *func, void *opaque)
-@@ -4534,6 +4534,7 @@
+@@ -5067,6 +5067,7 @@
                      qemu_get_clock(rt_clock));
  }
  
@@ -88,7 +88,7 @@ Index: ioemu/vl.c
  static CPUState *cur_cpu;
  
  int main_loop(void)
-@@ -4608,6 +4609,7 @@
+@@ -5141,6 +5142,7 @@
      cpu_disable_ticks();
      return ret;
  }
@@ -98,18 +98,18 @@ Index: ioemu/vl.c
  {
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-07-28 09:56:49.281322859 +0100
-+++ ioemu/vl.h 2006-07-28 09:56:58.917232883 +0100
-@@ -38,6 +38,8 @@
+--- ioemu.orig/vl.h    2006-08-06 02:13:56.733359091 +0100
++++ ioemu/vl.h 2006-08-06 02:21:16.369349244 +0100
+@@ -37,6 +37,8 @@
+ #include <unistd.h>
  #include <fcntl.h>
  #include <sys/stat.h>
- #include "audio/audio.h"
 +#include "xenctrl.h"
 +#include "xs.h"
  
  #ifndef O_LARGEFILE
  #define O_LARGEFILE 0
-@@ -131,6 +133,11 @@
+@@ -139,6 +141,11 @@
  
  void main_loop_wait(int timeout);
  
@@ -121,7 +121,7 @@ Index: ioemu/vl.h
  extern int ram_size;
  extern int bios_size;
  extern int rtc_utc;
-@@ -814,6 +821,7 @@
+@@ -873,6 +880,7 @@
  uint32_t pic_intack_read(PicState2 *s);
  void pic_info(void);
  void irq_info(void);
@@ -132,7 +132,7 @@ Index: ioemu/target-i386-dm/cpu.h
 Index: ioemu/target-i386-dm/cpu.h
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/cpu.h 2006-07-28 09:56:58.572271903 +0100
++++ ioemu/target-i386-dm/cpu.h 2006-08-06 02:21:16.023387810 +0100
 @@ -0,0 +1,86 @@
 +/*
 + * i386 virtual CPU header
@@ -223,7 +223,7 @@ Index: ioemu/target-i386-dm/exec-dm.c
 Index: ioemu/target-i386-dm/exec-dm.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/exec-dm.c     2006-07-28 09:58:22.882736989 +0100
++++ ioemu/target-i386-dm/exec-dm.c     2006-08-06 02:21:16.024387698 +0100
 @@ -0,0 +1,516 @@
 +/*
 + *  virtual page mapping and translated block handling
@@ -744,7 +744,7 @@ Index: ioemu/target-i386-dm/helper2.c
 Index: ioemu/target-i386-dm/helper2.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/helper2.c     2006-07-28 09:56:58.312301309 +0100
++++ ioemu/target-i386-dm/helper2.c     2006-08-06 02:21:15.779415007 +0100
 @@ -0,0 +1,464 @@
 +/*
 + *  i386 helpers (without register variable usage)
@@ -1213,7 +1213,7 @@ Index: ioemu/target-i386-dm/i8259-dm.c
 Index: ioemu/target-i386-dm/i8259-dm.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/i8259-dm.c    2006-07-28 09:56:49.492298993 +0100
++++ ioemu/target-i386-dm/i8259-dm.c    2006-08-06 02:15:01.777107952 +0100
 @@ -0,0 +1,107 @@
 +/* Xen 8259 stub for interrupt controller emulation
 + * 
@@ -1325,7 +1325,7 @@ Index: ioemu/target-i386-dm/qemu-dm.debu
 Index: ioemu/target-i386-dm/qemu-dm.debug
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/qemu-dm.debug 2006-07-28 09:56:49.493298880 +0100
++++ ioemu/target-i386-dm/qemu-dm.debug 2006-08-06 02:15:01.778107841 +0100
 @@ -0,0 +1,5 @@
 +#!/bin/sh
 +
@@ -1335,7 +1335,7 @@ Index: ioemu/target-i386-dm/qemu-ifup
 Index: ioemu/target-i386-dm/qemu-ifup
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/target-i386-dm/qemu-ifup     2006-07-28 09:56:49.493298880 +0100
++++ ioemu/target-i386-dm/qemu-ifup     2006-08-06 02:15:01.778107841 +0100
 @@ -0,0 +1,10 @@
 +#!/bin/sh
 +
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/qemu-timer
--- a/tools/ioemu/patches/qemu-timer    Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/qemu-timer    Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/vl.c
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-12 11:35:02.126650330 +0100
-+++ ioemu/vl.c 2006-07-12 11:35:02.273631916 +0100
-@@ -861,6 +861,16 @@
+--- ioemu.orig/vl.c    2006-08-06 02:22:53.925474246 +0100
++++ ioemu/vl.c 2006-08-06 02:22:56.618174081 +0100
+@@ -824,6 +824,16 @@
      }
  }
  
@@ -19,16 +19,16 @@ Index: ioemu/vl.c
  static void timer_save(QEMUFile *f, void *opaque)
  {
      if (cpu_ticks_enabled) {
-@@ -977,6 +987,8 @@
+@@ -940,6 +950,8 @@
  
  #endif /* !defined(_WIN32) */
  
 +#endif /* !CONFIG_DM */
 +
- static void init_timers(void)
+ static void init_timer_alarm(void)
  {
-     rt_clock = qemu_new_clock(QEMU_TIMER_REALTIME);
-@@ -1011,12 +1023,15 @@
+ #ifdef _WIN32
+@@ -971,12 +983,15 @@
      pit_min_timer_count = ((uint64_t)10000 * PIT_FREQ) / 1000000;
  #else
      {
@@ -44,7 +44,7 @@ Index: ioemu/vl.c
          /* timer signal */
          sigfillset(&act.sa_mask);
         act.sa_flags = 0;
-@@ -1062,6 +1077,7 @@
+@@ -1022,6 +1037,7 @@
              pit_min_timer_count = ((uint64_t)itv.it_interval.tv_usec * 
                                     PIT_FREQ) / 1000000;
          }
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/serial-non-block
--- a/tools/ioemu/patches/serial-non-block      Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/serial-non-block      Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/vl.c
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-12 11:35:02.880555879 +0100
-+++ ioemu/vl.c 2006-07-12 11:35:03.004540346 +0100
-@@ -1215,19 +1215,34 @@
+--- ioemu.orig/vl.c    2006-08-06 02:23:29.827472129 +0100
++++ ioemu/vl.c 2006-08-06 02:23:36.856688561 +0100
+@@ -1175,19 +1175,34 @@
  
  static int unix_write(int fd, const uint8_t *buf, int len1)
  {
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/series
--- a/tools/ioemu/patches/series        Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/series        Mon Aug 07 18:28:50 2006 +0100
@@ -26,7 +26,6 @@ serial-non-block
 serial-non-block
 ide-hd-multithread
 domain-timeoffset
-sdl-mouse-invisible-wall
 acpi-support
 acpi-timer-support
 acpi-poweroff-support
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/shadow-vram
--- a/tools/ioemu/patches/shadow-vram   Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/shadow-vram   Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/hw/vga.c
 Index: ioemu/hw/vga.c
 ===================================================================
---- ioemu.orig/hw/vga.c        2006-07-26 15:17:39.821306797 +0100
-+++ ioemu/hw/vga.c     2006-07-26 15:17:40.017285449 +0100
-@@ -1287,6 +1287,105 @@
+--- ioemu.orig/hw/vga.c        2006-08-06 02:23:29.824472464 +0100
++++ ioemu/hw/vga.c     2006-08-06 02:23:33.873021159 +0100
+@@ -1359,6 +1359,105 @@
      }
  }
  
@@ -108,7 +108,7 @@ Index: ioemu/hw/vga.c
  /* 
   * graphic modes
   */
-@@ -1382,6 +1481,11 @@
+@@ -1454,6 +1553,11 @@
      printf("w=%d h=%d v=%d line_offset=%d cr[0x09]=0x%02x cr[0x17]=0x%02x 
linecmp=%d sr[0x01]=0x%02x\n",
             width, height, v, line_offset, s->cr[9], s->cr[0x17], 
s->line_compare, s->sr[0x01]);
  #endif
@@ -120,7 +120,7 @@ Index: ioemu/hw/vga.c
      addr1 = (s->start_addr * 4);
      bwidth = width * 4;
      y_start = -1;
-@@ -1830,6 +1934,14 @@
+@@ -1889,6 +1993,14 @@
  
      vga_reset(s);
  
@@ -137,9 +137,9 @@ Index: ioemu/hw/vga.c
      s->vram_size = vga_ram_size;
 Index: ioemu/hw/vga_int.h
 ===================================================================
---- ioemu.orig/hw/vga_int.h    2006-07-26 15:17:39.822306688 +0100
-+++ ioemu/hw/vga_int.h 2006-07-26 15:17:40.017285449 +0100
-@@ -76,6 +76,7 @@
+--- ioemu.orig/hw/vga_int.h    2006-08-06 02:23:29.824472464 +0100
++++ ioemu/hw/vga_int.h 2006-08-06 02:23:33.874021048 +0100
+@@ -79,6 +79,7 @@
  
  #define VGA_STATE_COMMON                                                \
      uint8_t *vram_ptr;                                                  \
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/shared-vram
--- a/tools/ioemu/patches/shared-vram   Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/shared-vram   Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/hw/cirrus_vga.c
 Index: ioemu/hw/cirrus_vga.c
 ===================================================================
---- ioemu.orig/hw/cirrus_vga.c 2006-07-27 11:16:53.059986783 +0100
-+++ ioemu/hw/cirrus_vga.c      2006-07-27 11:16:59.923227020 +0100
+--- ioemu.orig/hw/cirrus_vga.c 2006-08-06 01:55:02.822674718 +0100
++++ ioemu/hw/cirrus_vga.c      2006-08-06 02:23:29.822472686 +0100
 @@ -28,6 +28,9 @@
   */
  #include "vl.h"
@@ -176,9 +176,9 @@ Index: ioemu/hw/cirrus_vga.c
  }
 Index: ioemu/hw/pc.c
 ===================================================================
---- ioemu.orig/hw/pc.c 2006-07-27 11:16:59.759245173 +0100
-+++ ioemu/hw/pc.c      2006-07-27 11:16:59.924226909 +0100
-@@ -783,14 +783,14 @@
+--- ioemu.orig/hw/pc.c 2006-08-06 02:23:07.875919141 +0100
++++ ioemu/hw/pc.c      2006-08-06 02:23:29.823472575 +0100
+@@ -790,14 +790,14 @@
      if (cirrus_vga_enabled) {
          if (pci_enabled) {
              pci_cirrus_vga_init(pci_bus, 
@@ -198,9 +198,9 @@ Index: ioemu/hw/pc.c
  
 Index: ioemu/hw/vga.c
 ===================================================================
---- ioemu.orig/hw/vga.c        2006-07-27 11:16:59.103317784 +0100
-+++ ioemu/hw/vga.c     2006-07-27 11:16:59.925226798 +0100
-@@ -1799,6 +1799,7 @@
+--- ioemu.orig/hw/vga.c        2006-08-06 02:22:46.606290142 +0100
++++ ioemu/hw/vga.c     2006-08-06 02:23:29.824472464 +0100
+@@ -1858,6 +1858,7 @@
      /* TODO: add vbe support if enabled */
  }
  
@@ -208,7 +208,7 @@ Index: ioemu/hw/vga.c
  void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, 
                       unsigned long vga_ram_offset, int vga_ram_size)
  {
-@@ -1829,7 +1830,7 @@
+@@ -1888,7 +1889,7 @@
  
      vga_reset(s);
  
@@ -217,7 +217,7 @@ Index: ioemu/hw/vga.c
      s->vram_offset = vga_ram_offset;
      s->vram_size = vga_ram_size;
      s->ds = ds;
-@@ -1943,6 +1944,31 @@
+@@ -2002,6 +2003,31 @@
      return 0;
  }
  
@@ -251,9 +251,9 @@ Index: ioemu/hw/vga.c
  
 Index: ioemu/hw/vga_int.h
 ===================================================================
---- ioemu.orig/hw/vga_int.h    2006-07-27 11:16:57.447501084 +0100
-+++ ioemu/hw/vga_int.h 2006-07-27 11:16:59.925226798 +0100
-@@ -166,5 +166,6 @@
+--- ioemu.orig/hw/vga_int.h    2006-08-06 02:14:09.797902638 +0100
++++ ioemu/hw/vga_int.h 2006-08-06 02:23:29.824472464 +0100
+@@ -169,5 +169,6 @@
                               unsigned int color0, unsigned int color1,
                               unsigned int color_xor);
  
@@ -262,9 +262,9 @@ Index: ioemu/hw/vga_int.h
  extern const uint8_t gr_mask[16];
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:59.762244841 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:59.928226466 +0100
-@@ -5149,6 +5149,78 @@
+--- ioemu.orig/vl.c    2006-08-06 02:23:07.878918807 +0100
++++ ioemu/vl.c 2006-08-06 02:23:29.827472129 +0100
+@@ -5693,6 +5693,78 @@
  
  #define MAX_NET_CLIENTS 32
  
@@ -345,9 +345,9 @@ Index: ioemu/vl.c
  #ifdef CONFIG_GDBSTUB
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-07-27 11:16:59.549268417 +0100
-+++ ioemu/vl.h 2006-07-27 11:16:59.929226356 +0100
-@@ -136,6 +136,13 @@
+--- ioemu.orig/vl.h    2006-08-06 02:23:02.271543880 +0100
++++ ioemu/vl.h 2006-08-06 02:23:29.828472018 +0100
+@@ -144,6 +144,13 @@
  
  void main_loop_wait(int timeout);
  
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/support-xm-console
--- a/tools/ioemu/patches/support-xm-console    Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/support-xm-console    Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/vl.c
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:59.384286681 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:59.614261222 +0100
-@@ -1535,26 +1535,65 @@
+--- ioemu.orig/vl.c    2006-08-06 02:22:59.254880158 +0100
++++ ioemu/vl.c 2006-08-06 02:23:05.216215627 +0100
+@@ -1536,26 +1536,65 @@
      return chr;
  }
  
@@ -77,7 +77,7 @@ Index: ioemu/vl.c
      return qemu_chr_open_fd(master_fd, master_fd);
  }
  
-@@ -5298,7 +5337,9 @@
+@@ -5868,7 +5907,9 @@
                  break;
              case QEMU_OPTION_nographic:
                  pstrcpy(monitor_device, sizeof(monitor_device), "stdio");
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/vnc-access-monitor-vt
--- a/tools/ioemu/patches/vnc-access-monitor-vt Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/vnc-access-monitor-vt Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/vnc.c
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-07-26 14:33:57.906165040 +0100
-+++ ioemu/vnc.c        2006-07-26 14:44:09.972552689 +0100
+--- ioemu.orig/vnc.c   2006-08-07 17:44:33.084748631 +0100
++++ ioemu/vnc.c        2006-08-07 17:44:33.224733389 +0100
 @@ -32,6 +32,10 @@
  #include "vnc_keysym.h"
  #include "keymaps.c"
@@ -13,15 +13,16 @@ Index: ioemu/vnc.c
  typedef struct Buffer
  {
      size_t capacity;
-@@ -64,6 +68,7 @@
-     Buffer output;
-     Buffer input;
-     kbd_layout_t *kbd_layout;
+@@ -95,6 +99,8 @@
+     int visible_h;
+ 
+     int slow_client;
++
 +    int ctl_keys;               /* Ctrl+Alt starts calibration */
+ };
  
-     VncReadEvent *read_handler;
-     size_t read_handler_expect;
-@@ -679,16 +684,80 @@
+ #define DIRTY_PIXEL_BITS 64
+@@ -794,16 +800,80 @@
  
  static void do_key_event(VncState *vs, int down, uint32_t sym)
  {
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/vnc-cleanup
--- a/tools/ioemu/patches/vnc-cleanup   Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/vnc-cleanup   Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/vnc.c
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-04 10:42:19.575024607 +0100
-+++ ioemu/vnc.c        2006-08-04 10:42:26.918176009 +0100
-@@ -83,13 +83,16 @@
+--- ioemu.orig/vnc.c   2006-08-07 17:42:21.888055419 +0100
++++ ioemu/vnc.c        2006-08-07 17:42:28.001363557 +0100
+@@ -143,13 +143,16 @@
  static void vnc_dpy_update(DisplayState *ds, int x, int y, int w, int h)
  {
      VncState *vs = ds->opaque;
@@ -17,12 +17,12 @@ Index: ioemu/vnc.c
  
      for (; y < h; y++)
 -      for (i = 0; i < w; i += 16)
--          vs->dirty_row[y] |= (1ULL << ((x + i) / 16));
+-          vnc_set_bit(vs->dirty_row[y], (x + i) / 16);
 +      vs->dirty_row[y] |= mask;
  }
  
  static void vnc_framebuffer_update(VncState *vs, int x, int y, int w, int h,
-@@ -262,6 +265,7 @@
+@@ -373,6 +376,7 @@
  static void vnc_update_client(void *opaque)
  {
      VncState *vs = opaque;
@@ -30,16 +30,16 @@ Index: ioemu/vnc.c
  
      if (vs->need_update && vs->csock != -1) {
        int y;
-@@ -282,7 +286,7 @@
+@@ -390,7 +394,7 @@
        row = vs->ds->data;
        old_row = vs->old_data;
  
 -      for (y = 0; y < vs->height; y++) {
 +      for (y = 0; y < vs->ds->height; y++) {
-           if (vs->dirty_row[y] & width_mask) {
+           if (vnc_and_bits(vs->dirty_row[y], width_mask, VNC_DIRTY_WORDS)) {
                int x;
                char *ptr, *old_ptr;
-@@ -307,10 +311,8 @@
+@@ -415,10 +419,8 @@
            old_row += vs->ds->linesize;
        }
  
@@ -52,7 +52,7 @@ Index: ioemu/vnc.c
  
        /* Count rectangles */
        n_rectangles = 0;
-@@ -348,7 +350,9 @@
+@@ -456,7 +458,9 @@
        vnc_flush(vs);
  
      }
@@ -65,9 +65,9 @@ Index: ioemu/vnc.c
  static void vnc_timer_init(VncState *vs)
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:42:26.723198541 +0100
-+++ ioemu/vl.c 2006-08-04 10:42:26.921175663 +0100
-@@ -4589,10 +4589,10 @@
+--- ioemu.orig/vl.c    2006-08-07 17:42:27.807385506 +0100
++++ ioemu/vl.c 2006-08-07 17:42:28.004363230 +0100
+@@ -5120,10 +5120,10 @@
          /* XXX: better handling of removal */
          for(ioh = first_io_handler; ioh != NULL; ioh = ioh_next) {
              ioh_next = ioh->next;
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/vnc-fixes
--- a/tools/ioemu/patches/vnc-fixes     Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/vnc-fixes     Mon Aug 07 18:28:50 2006 +0100
@@ -1,10 +1,10 @@ Index: ioemu/vl.c
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:57:29.116972627 +0100
-+++ ioemu/vl.c 2006-08-04 10:57:29.186964560 +0100
-@@ -6026,8 +6026,10 @@
-                   kernel_filename, kernel_cmdline, initrd_filename,
-                   timeoffset);
+--- ioemu.orig/vl.c    2006-08-07 17:42:28.004363230 +0100
++++ ioemu/vl.c 2006-08-07 17:43:16.361100898 +0100
+@@ -6516,8 +6516,10 @@
+         }
+     }
  
 -    gui_timer = qemu_new_timer(rt_clock, gui_update, NULL);
 -    qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock));
@@ -17,8 +17,8 @@ Index: ioemu/vl.c
      if (use_gdbstub) {
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-04 10:57:29.114972858 +0100
-+++ ioemu/vnc.c        2006-08-04 10:57:29.187964445 +0100
+--- ioemu.orig/vnc.c   2006-08-07 17:42:28.001363557 +0100
++++ ioemu/vnc.c        2006-08-07 17:43:33.593225293 +0100
 @@ -3,6 +3,7 @@
   * 
   * Copyright (C) 2006 Anthony Liguori <anthony@xxxxxxxxxxxxx>
@@ -27,20 +27,32 @@ Index: ioemu/vnc.c
   * 
   * Permission is hereby granted, free of charge, to any person obtaining a 
copy
   * of this software and associated documentation files (the "Software"), to 
deal
-@@ -51,7 +52,11 @@
+@@ -50,9 +51,11 @@
+                                 uint32_t *last_fg,
+                                 int *has_bg, int *has_fg);
+ 
++#if 0
+ #define VNC_MAX_WIDTH 2048
+ #define VNC_MAX_HEIGHT 2048
+ #define VNC_DIRTY_WORDS (VNC_MAX_WIDTH / (16 * 32))
++#endif
+ 
+ struct VncState
+ {
+@@ -63,7 +66,11 @@
      int need_update;
      int width;
      int height;
--    uint64_t dirty_row[768];
+-    uint32_t dirty_row[VNC_MAX_HEIGHT][VNC_DIRTY_WORDS];
 +    uint64_t *dirty_row;      /* screen regions which are possibly dirty */
 +    int dirty_pixel_shift;
 +    uint64_t *update_row;     /* outstanding updates */
 +    int has_update;           /* there's outstanding updates in the
 +                               * visible area */
      char *old_data;
-     int depth;
+     int depth; /* internal VNC frame buffer byte per pixel */
      int has_resize;
-@@ -62,13 +67,25 @@
+@@ -81,13 +88,25 @@
  
      VncReadEvent *read_handler;
      size_t read_handler_expect;
@@ -67,7 +79,7 @@ Index: ioemu/vnc.c
  */
  
  static void vnc_write(VncState *vs, const void *data, size_t len);
-@@ -77,22 +94,38 @@
+@@ -96,9 +115,12 @@
  static void vnc_write_u16(VncState *vs, uint16_t value);
  static void vnc_write_u8(VncState *vs, uint8_t value);
  static void vnc_flush(VncState *vs);
@@ -76,6 +88,16 @@ Index: ioemu/vnc.c
  static void vnc_client_read(void *opaque);
 +static void framebuffer_set_updated(VncState *vs, int x, int y, int w, int h);
  
++#if 0
+ static inline void vnc_set_bit(uint32_t *d, int k)
+ {
+     d[k >> 5] |= 1 << (k & 0x1f);
+@@ -139,20 +161,35 @@
+     }
+     return 0;
+ }
++#endif
+ 
 -static void vnc_dpy_update(DisplayState *ds, int x, int y, int w, int h)
 +static void set_bits_in_row(VncState *vs, uint64_t *row,
 +                          int x, int y, int w, int h)
@@ -112,7 +134,7 @@ Index: ioemu/vnc.c
  }
  
  static void vnc_framebuffer_update(VncState *vs, int x, int y, int w, int h,
-@@ -109,16 +142,23 @@
+@@ -169,16 +206,23 @@
  static void vnc_dpy_resize(DisplayState *ds, int w, int h)
  {
      VncState *vs = ds->opaque;
@@ -138,7 +160,7 @@ Index: ioemu/vnc.c
      ds->width = w;
      ds->height = h;
      ds->linesize = w * vs->depth;
-@@ -131,6 +171,10 @@
+@@ -191,6 +235,10 @@
        vs->width = ds->width;
        vs->height = ds->height;
      }
@@ -148,8 +170,8 @@ Index: ioemu/vnc.c
 +    framebuffer_set_updated(vs, 0, 0, ds->width, ds->height);
  }
  
- static void send_framebuffer_update_raw(VncState *vs, int x, int y, int w, 
int h)
-@@ -215,8 +259,20 @@
+ /* fastest code */
+@@ -326,8 +374,20 @@
      int y = 0;
      int pitch = ds->linesize;
      VncState *vs = ds->opaque;
@@ -171,7 +193,7 @@ Index: ioemu/vnc.c
  
      if (dst_y > src_y) {
        y = h - 1;
-@@ -238,31 +294,34 @@
+@@ -349,31 +409,34 @@
        old_row += pitch;
      }
  
@@ -202,11 +224,11 @@ Index: ioemu/vnc.c
 -    for (h = 1; h < (vs->height - y); h++) {
 +    for (h = 1; y + h < maxy; h++) {
        int tmp_x;
--      if (!(vs->dirty_row[y + h] & (1ULL << last_x)))
+-      if (!vnc_get_bit(vs->dirty_row[y + h], last_x))
 +      if (!(vs->update_row[y + h] & (1ULL << last_x)))
            break;
        for (tmp_x = last_x; tmp_x < x; tmp_x++)
--          vs->dirty_row[y + h] &= ~(1ULL << tmp_x);
+-          vnc_clear_bit(vs->dirty_row[y + h], tmp_x);
 +          vs->update_row[y + h] &= ~(1ULL << tmp_x);
      }
  
@@ -218,30 +240,41 @@ Index: ioemu/vnc.c
  {
      VncState *vs = opaque;
      int64_t now = qemu_get_clock(rt_clock);
-@@ -274,11 +333,12 @@
-       uint64_t width_mask;
+@@ -382,12 +445,16 @@
+       int y;
+       char *row;
+       char *old_row;
+-      uint32_t width_mask[VNC_DIRTY_WORDS];
++      uint64_t width_mask;
        int n_rectangles;
        int saved_offset;
 -      int has_dirty = 0;
--
--      width_mask = (1ULL << (vs->width / 16)) - 1;
 +      int maxx, maxy;
 +      int tile_bytes = vs->depth * DP2X(vs, 1);
  
--      if (vs->width == 1024)
+-        vnc_set_bits(width_mask, (vs->width / 16), VNC_DIRTY_WORDS);
 +      if (vs->width != DP2X(vs, DIRTY_PIXEL_BITS))
 +          width_mask = (1ULL << X2DP_UP(vs, vs->ds->width)) - 1;
 +      else
-           width_mask = ~(0ULL);
++          width_mask = ~(0ULL);
  
        /* Walk through the dirty map and eliminate tiles that
-@@ -294,16 +354,18 @@
+          really aren't dirty */
+@@ -395,23 +462,25 @@
+       old_row = vs->old_data;
+ 
+       for (y = 0; y < vs->ds->height; y++) {
+-          if (vnc_and_bits(vs->dirty_row[y], width_mask, VNC_DIRTY_WORDS)) {
++          if (vs->dirty_row[y] & width_mask) {
+               int x;
+               char *ptr, *old_ptr;
+ 
                ptr = row;
                old_ptr = old_row;
  
 -              for (x = 0; x < vs->ds->width; x += 16) {
 -                  if (memcmp(old_ptr, ptr, 16 * vs->depth) == 0) {
--                      vs->dirty_row[y] &= ~(1ULL << (x / 16));
+-                      vnc_clear_bit(vs->dirty_row[y], (x / 16));
 -                  } else {
 -                      has_dirty = 1;
 -                      memcpy(old_ptr, ptr, 16 * vs->depth);
@@ -262,7 +295,7 @@ Index: ioemu/vnc.c
                }
            }
  
-@@ -311,7 +373,8 @@
+@@ -419,7 +488,8 @@
            old_row += vs->ds->linesize;
        }
  
@@ -272,7 +305,7 @@ Index: ioemu/vnc.c
            goto out;
  
        /* Count rectangles */
-@@ -321,40 +384,61 @@
+@@ -429,40 +499,61 @@
        saved_offset = vs->output.offset;
        vnc_write_u16(vs, 0);
  
@@ -288,7 +321,7 @@ Index: ioemu/vnc.c
            int x;
            int last_x = -1;
 -          for (x = 0; x < vs->width / 16; x++) {
--              if (vs->dirty_row[y] & (1ULL << x)) {
+-              if (vnc_get_bit(vs->dirty_row[y], x)) {
 -                  if (last_x == -1) {
 +          for (x = X2DP_DOWN(vs, vs->visible_x);
 +               x < X2DP_UP(vs, maxx); x++) {
@@ -296,7 +329,7 @@ Index: ioemu/vnc.c
 +                  if (last_x == -1)
                        last_x = x;
 -                  }
--                  vs->dirty_row[y] &= ~(1ULL << x);
+-                  vnc_clear_bit(vs->dirty_row[y], x);
 +                  vs->update_row[y] &= ~(1ULL << x);
                } else {
                    if (last_x != -1) {
@@ -346,7 +379,7 @@ Index: ioemu/vnc.c
  static void vnc_timer_init(VncState *vs)
  {
      if (vs->timer == NULL) {
-@@ -365,8 +449,6 @@
+@@ -473,8 +564,6 @@
  
  static void vnc_dpy_refresh(DisplayState *ds)
  {
@@ -355,7 +388,7 @@ Index: ioemu/vnc.c
      vga_hw_update();
  }
  
-@@ -402,7 +484,7 @@
+@@ -510,7 +599,7 @@
  
  static void buffer_reset(Buffer *buffer)
  {
@@ -364,7 +397,7 @@ Index: ioemu/vnc.c
  }
  
  static void buffer_append(Buffer *buffer, const void *data, size_t len)
-@@ -443,12 +525,12 @@
+@@ -551,12 +640,12 @@
      if (!ret)
        return;
  
@@ -380,7 +413,7 @@ Index: ioemu/vnc.c
  }
  
  static void vnc_read_when(VncState *vs, VncReadEvent *func, size_t expecting)
-@@ -480,11 +562,11 @@
+@@ -588,11 +677,11 @@
            return;
  
        if (!ret) {
@@ -395,7 +428,7 @@ Index: ioemu/vnc.c
      }
  }
  
-@@ -492,9 +574,9 @@
+@@ -600,9 +689,9 @@
  {
      buffer_reserve(&vs->output, len);
  
@@ -408,7 +441,7 @@ Index: ioemu/vnc.c
  
      buffer_append(&vs->output, data, len);
  }
-@@ -616,24 +698,25 @@
+@@ -724,22 +813,25 @@
      do_key_event(vs, down, sym);
  }
  
@@ -430,10 +463,8 @@ Index: ioemu/vnc.c
 -      char *old_row = vs->old_data + y_position * vs->ds->linesize;
 -
 -      for (i = 0; i < h; i++) {
--          vs->dirty_row[y_position + i] = (1ULL << (vs->ds->width / 16)) - 1;
--          if (vs->ds->width == 1024) {
--            vs->dirty_row[y_position + i] = ~(0ULL);
--          }
+-            vnc_set_bits(vs->dirty_row[y_position + i], 
+-                         (vs->ds->width / 16), VNC_DIRTY_WORDS);
 -          memset(old_row, 42, vs->ds->width * vs->depth);
 -          old_row += vs->ds->linesize;
 -      }
@@ -447,8 +478,8 @@ Index: ioemu/vnc.c
  }
  
  static void set_encodings(VncState *vs, int32_t *encodings, size_t 
n_encodings)
-@@ -690,8 +773,6 @@
-       vnc_client_error(vs);
+@@ -845,8 +937,6 @@
+     }
  
      vnc_dpy_resize(vs->ds, vs->ds->width, vs->ds->height);
 -    memset(vs->dirty_row, 0xFF, sizeof(vs->dirty_row));
@@ -456,7 +487,7 @@ Index: ioemu/vnc.c
  
      vga_hw_invalidate();
      vga_hw_update();
-@@ -848,11 +929,11 @@
+@@ -1012,11 +1102,11 @@
        vnc_write(vs, "RFB 003.003\n", 12);
        vnc_flush(vs);
        vnc_read_when(vs, protocol_version, 12);
@@ -470,7 +501,7 @@ Index: ioemu/vnc.c
      }
  }
  
-@@ -909,17 +990,15 @@
+@@ -1073,17 +1163,15 @@
        exit(1);
      }
  
@@ -493,9 +524,9 @@ Index: ioemu/vnc.c
  }
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-04 10:57:28.925994639 +0100
-+++ ioemu/vl.h 2006-08-04 10:57:29.187964445 +0100
-@@ -302,6 +302,7 @@
+--- ioemu.orig/vl.h    2006-08-07 17:42:27.807385506 +0100
++++ ioemu/vl.h 2006-08-07 17:43:16.361100898 +0100
+@@ -318,6 +318,7 @@
  int is_graphic_console(void);
  CharDriverState *text_console_init(DisplayState *ds);
  void console_select(unsigned int index);
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/vnc-start-vncviewer
--- a/tools/ioemu/patches/vnc-start-vncviewer   Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/vnc-start-vncviewer   Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/vnc.c
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-08-04 10:57:29.187964445 +0100
-+++ ioemu/vnc.c        2006-08-04 10:57:29.351945544 +0100
-@@ -1002,3 +1002,25 @@
+--- ioemu.orig/vnc.c   2006-08-07 17:44:32.852773890 +0100
++++ ioemu/vnc.c        2006-08-07 17:44:32.915767031 +0100
+@@ -1175,3 +1175,25 @@
  
      vnc_dpy_resize(vs->ds, 640, 400);
  }
@@ -30,9 +30,9 @@ Index: ioemu/vnc.c
 +}
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:57:29.186964560 +0100
-+++ ioemu/vl.c 2006-08-04 10:57:29.354945198 +0100
-@@ -121,6 +121,7 @@
+--- ioemu.orig/vl.c    2006-08-07 17:44:32.851773999 +0100
++++ ioemu/vl.c 2006-08-07 17:44:32.918766704 +0100
+@@ -120,6 +120,7 @@
  int bios_size;
  static DisplayState display_state;
  int nographic;
@@ -40,7 +40,7 @@ Index: ioemu/vl.c
  const char* keyboard_layout = NULL;
  int64_t ticks_per_sec;
  int boot_device = 'c';
-@@ -4804,6 +4805,7 @@
+@@ -5340,6 +5341,7 @@
  #endif
             "-loadvm file    start right away with a saved state (loadvm in 
monitor)\n"
           "-vnc display    start a VNC server on display\n"
@@ -48,15 +48,15 @@ Index: ioemu/vl.c
             "-timeoffset     time offset (in seconds) from local time\n"
             "-acpi           disable or enable ACPI of HVM domain \n"
             "\n"
-@@ -4893,6 +4895,7 @@
-     QEMU_OPTION_usbdevice,
-     QEMU_OPTION_smp,
-     QEMU_OPTION_vnc,
+@@ -5428,6 +5430,7 @@
+     QEMU_OPTION_vcpus,
+     QEMU_OPTION_timeoffset,
+     QEMU_OPTION_acpi,
 +    QEMU_OPTION_vncviewer,
+ };
  
-     QEMU_OPTION_d,
-     QEMU_OPTION_vcpus,
-@@ -4969,6 +4972,7 @@
+ typedef struct QEMUOption {
+@@ -5502,6 +5505,7 @@
      { "usbdevice", HAS_ARG, QEMU_OPTION_usbdevice },
      { "smp", HAS_ARG, QEMU_OPTION_smp },
      { "vnc", HAS_ARG, QEMU_OPTION_vnc },
@@ -64,7 +64,7 @@ Index: ioemu/vl.c
      
      /* temporary options */
      { "usb", 0, QEMU_OPTION_usb },
-@@ -5300,6 +5304,7 @@
+@@ -5868,6 +5872,7 @@
  #endif
      snapshot = 0;
      nographic = 0;
@@ -72,17 +72,17 @@ Index: ioemu/vl.c
      kernel_filename = NULL;
      kernel_cmdline = "";
  #ifdef TARGET_PPC
-@@ -5669,6 +5674,9 @@
-                   exit(1);
-               }
-               break;
+@@ -6262,6 +6267,9 @@
+             case QEMU_OPTION_acpi:
+                 acpi_enabled = 1;
+                 break;
 +            case QEMU_OPTION_vncviewer:
 +                vncviewer++;
 +                break;
-             case QEMU_OPTION_domainname:
-                 strncat(domain_name, optarg, sizeof(domain_name) - 20);
-                 break;
-@@ -5933,6 +5941,8 @@
+             }
+         }
+     }
+@@ -6458,6 +6466,8 @@
          dumb_display_init(ds);
      } else if (vnc_display != -1) {
        vnc_display_init(ds, vnc_display);
@@ -93,9 +93,9 @@ Index: ioemu/vl.c
          sdl_display_init(ds, full_screen);
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-04 10:57:29.187964445 +0100
-+++ ioemu/vl.h 2006-08-04 10:57:29.355945083 +0100
-@@ -734,6 +734,7 @@
+--- ioemu.orig/vl.h    2006-08-07 17:44:32.853773781 +0100
++++ ioemu/vl.h 2006-08-07 17:44:32.919766595 +0100
+@@ -785,6 +785,7 @@
  
  /* vnc.c */
  void vnc_display_init(DisplayState *ds, int display);
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/vnc-title-domain-name
--- a/tools/ioemu/patches/vnc-title-domain-name Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/vnc-title-domain-name Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/vnc.c
 Index: ioemu/vnc.c
 ===================================================================
---- ioemu.orig/vnc.c   2006-07-26 14:23:52.426074956 +0100
-+++ ioemu/vnc.c        2006-07-26 14:24:15.210558295 +0100
-@@ -850,6 +850,7 @@
+--- ioemu.orig/vnc.c   2006-08-07 17:44:32.915767031 +0100
++++ ioemu/vnc.c        2006-08-07 17:44:33.084748631 +0100
+@@ -1014,6 +1014,7 @@
  
  static int protocol_client_init(VncState *vs, char *data, size_t len)
  {
@@ -10,7 +10,7 @@ Index: ioemu/vnc.c
      char pad[3] = { 0, 0, 0 };
  
      vs->width = vs->ds->width;
-@@ -886,8 +887,10 @@
+@@ -1059,8 +1060,10 @@
        
      vnc_write(vs, pad, 3);           /* padding */
  
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/xen-build
--- a/tools/ioemu/patches/xen-build     Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/xen-build     Mon Aug 07 18:28:50 2006 +0100
@@ -1,29 +1,38 @@ Index: ioemu/Makefile
 Index: ioemu/Makefile
 ===================================================================
---- ioemu.orig/Makefile        2006-07-25 14:18:33.163941149 +0100
-+++ ioemu/Makefile     2006-07-25 14:24:31.695096861 +0100
-@@ -1,6 +1,9 @@
+--- ioemu.orig/Makefile        2006-08-06 02:03:44.915543858 +0100
++++ ioemu/Makefile     2006-08-06 02:11:33.461331417 +0100
+@@ -1,11 +1,14 @@
+ # Makefile for QEMU.
+ 
 -include config-host.mak
 +XEN_ROOT=../..
 +include $(XEN_ROOT)/tools/Rules.mk
++
++-include config-host.mak
+ 
+ .PHONY: all clean distclean dvi info install install-doc tar tarbin \
+       speed test test2 html dvi info
  
 -CFLAGS=-Wall -O2 -g -fno-strict-aliasing -I.
-+-include config-host.mak
-+
 +CFLAGS+=-Wall -O2 -g -fno-strict-aliasing -I.
  ifdef CONFIG_DARWIN
  CFLAGS+= -mdynamic-no-pic
  endif
-@@ -17,7 +20,7 @@
+@@ -25,9 +28,11 @@
  DOCS=
  endif
  
--all: dyngen$(EXESUF) $(TOOLS) $(DOCS)
-+all: $(DOCS)
-       for d in $(TARGET_DIRS); do \
-       $(MAKE) -C $$d $@ || exit 1 ; \
-         done
-@@ -34,7 +37,7 @@
++TOOLS=
++
+ all: $(TOOLS) $(DOCS) recurse-all
+ 
+-subdir-%: dyngen$(EXESUF)
++subdir-%:
+       $(MAKE) -C $(subst subdir-,,$@) all
+ 
+ recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS))
+@@ -44,7 +49,7 @@
        rm -f *.o *.a $(TOOLS) dyngen$(EXESUF) TAGS *.pod *~ */*~
        $(MAKE) -C tests clean
        for d in $(TARGET_DIRS); do \
@@ -32,26 +41,26 @@ Index: ioemu/Makefile
          done
  
  distclean: clean
-@@ -57,12 +60,12 @@
+@@ -68,12 +73,12 @@
  
  install: all $(if $(BUILD_DOCS),install-doc)
        mkdir -p "$(DESTDIR)$(bindir)"
 -      $(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
 -      mkdir -p "$(DESTDIR)$(datadir)"
 -      for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
--                      video.x proll.elf linux_boot.bin; do \
+-                      video.x openbios-sparc32 linux_boot.bin; do \
 -              $(INSTALL) -m 644 $(SRC_PATH)/pc-bios/$$x 
"$(DESTDIR)$(datadir)"; \
 -      done
 +#     $(INSTALL) -m 755 -s $(TOOLS) "$(DESTDIR)$(bindir)"
 +#     mkdir -p "$(DESTDIR)$(datadir)"
 +#     for x in bios.bin vgabios.bin vgabios-cirrus.bin ppc_rom.bin \
-+#                     video.x proll.elf linux_boot.bin; do \
++#                     video.x openbios-sparc32 linux_boot.bin; do \
 +#             $(INSTALL) -m 644 $(SRC_PATH)/pc-bios/$$x 
"$(DESTDIR)$(datadir)"; \
 +#     done
  ifndef CONFIG_WIN32
        mkdir -p "$(DESTDIR)$(datadir)/keymaps"
        for x in $(KEYMAPS); do \
-@@ -96,11 +99,11 @@
+@@ -107,11 +112,11 @@
        texi2dvi $<
  
  qemu.1: qemu-doc.texi
@@ -64,11 +73,11 @@ Index: ioemu/Makefile
 +      perl -w $(SRC_PATH)/texi2pod.pl $< qemu-img.pod
        pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@
  
- FILE=qemu-$(shell cat VERSION)
+ info: qemu-doc.info qemu-tech.info
 Index: ioemu/Makefile.target
 ===================================================================
---- ioemu.orig/Makefile.target 2006-07-25 14:18:33.163941149 +0100
-+++ ioemu/Makefile.target      2006-07-25 14:24:17.501562050 +0100
+--- ioemu.orig/Makefile.target 2006-08-06 02:03:44.922543079 +0100
++++ ioemu/Makefile.target      2006-08-06 02:09:22.320951557 +0100
 @@ -1,5 +1,8 @@
  include config.mak
  
@@ -102,7 +111,7 @@ Index: ioemu/Makefile.target
  #CFLAGS+=-Werror
  LDFLAGS=-g
  LIBS=
-@@ -155,6 +165,9 @@
+@@ -167,6 +177,9 @@
  
  DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
  LIBS+=-lm
@@ -112,7 +121,7 @@ Index: ioemu/Makefile.target
  ifndef CONFIG_USER_ONLY
  LIBS+=-lz
  endif
-@@ -264,7 +277,7 @@
+@@ -281,7 +294,7 @@
  all: $(PROGS)
  
  $(QEMU_USER): $(OBJS)
@@ -121,7 +130,7 @@ Index: ioemu/Makefile.target
  ifeq ($(ARCH),alpha)
  # Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
  # the address space (31 bit so sign extending doesn't matter)
-@@ -490,10 +503,16 @@
+@@ -528,10 +541,16 @@
  clean:
        rm -f *.o  *.a *~ $(PROGS) gen-op.h opc.h op.h nwfpe/*.o slirp/*.o 
fpu/*.o
  
@@ -140,8 +149,8 @@ Index: ioemu/Makefile.target
  include .depend
 Index: ioemu/configure
 ===================================================================
---- ioemu.orig/configure       2006-07-25 14:18:33.163941149 +0100
-+++ ioemu/configure    2006-07-25 14:24:17.501562050 +0100
+--- ioemu.orig/configure       2006-08-06 02:03:45.783447220 +0100
++++ ioemu/configure    2006-08-06 02:09:41.076860544 +0100
 @@ -18,8 +18,8 @@
  
  # default parameters
@@ -169,7 +178,7 @@ Index: ioemu/configure
  softmmu="yes"
  user="no"
  build_docs="no"
-@@ -366,6 +367,8 @@
+@@ -380,6 +381,8 @@
      exit 1
  fi
  
@@ -178,7 +187,7 @@ Index: ioemu/configure
  if test -z "$cross_prefix" ; then
  
  # ---
-@@ -491,14 +494,16 @@
+@@ -505,14 +508,16 @@
  datadir="$prefix"
  docdir="$prefix"
  bindir="$prefix"
@@ -197,7 +206,7 @@ Index: ioemu/configure
  fi
  
  echo "Install prefix    $prefix"
-@@ -567,6 +572,8 @@
+@@ -583,6 +588,8 @@
  echo "mandir=$mandir" >> $config_mak
  echo "datadir=$datadir" >> $config_mak
  echo "docdir=$docdir" >> $config_mak
@@ -206,7 +215,7 @@ Index: ioemu/configure
  echo "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
  echo "MAKE=$make" >> $config_mak
  echo "INSTALL=$install" >> $config_mak
-@@ -748,7 +755,7 @@
+@@ -770,7 +777,7 @@
  # don't use ln -sf as not all "ln -sf" over write the file/link
  #
  rm -f $target_dir/Makefile
@@ -215,7 +224,7 @@ Index: ioemu/configure
  
  
  echo "# Automatically generated by configure - do not modify" > $config_mak
-@@ -761,6 +768,12 @@
+@@ -784,6 +791,12 @@
  interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
  echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
  
@@ -228,7 +237,7 @@ Index: ioemu/configure
  if test "$target_cpu" = "i386" ; then
    echo "TARGET_ARCH=i386" >> $config_mak
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
-@@ -823,6 +836,10 @@
+@@ -850,6 +863,10 @@
    echo "#define CONFIG_USER_ONLY 1" >> $config_h
  fi
  
@@ -236,6 +245,6 @@ Index: ioemu/configure
 +  echo "#define CONFIG_DM 1" >> $config_h
 +fi
 +
- if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
+ if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = 
"sparc" -o "$target_cpu" = "sparc64"; then
    echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
    echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/xen-domain-name
--- a/tools/ioemu/patches/xen-domain-name       Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/xen-domain-name       Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/sdl.c
 Index: ioemu/sdl.c
 ===================================================================
---- ioemu.orig/sdl.c   2006-07-27 11:16:53.590928008 +0100
-+++ ioemu/sdl.c        2006-07-27 11:16:58.124426148 +0100
-@@ -268,14 +268,14 @@
+--- ioemu.orig/sdl.c   2006-08-06 02:03:48.563137711 +0100
++++ ioemu/sdl.c        2006-08-06 02:17:16.063137816 +0100
+@@ -273,14 +273,14 @@
  static void sdl_update_caption(void)
  {
      char buf[1024];
@@ -21,18 +21,18 @@ Index: ioemu/sdl.c
  static void sdl_hide_cursor(void)
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:57.828458912 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:58.126425927 +0100
-@@ -159,6 +159,8 @@
- #define MAX_CPUS 1
- #endif
+--- ioemu.orig/vl.c    2006-08-06 02:16:31.246133963 +0100
++++ ioemu/vl.c 2006-08-06 02:17:31.428424918 +0100
+@@ -158,6 +158,8 @@
+ int acpi_enabled = 1;
+ int fd_bootchk = 1;
  
 +char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'};
 +
  /***********************************************************/
  /* x86 ISA bus support */
  
-@@ -4699,6 +4701,7 @@
+@@ -5235,6 +5237,7 @@
             "-s              wait gdb connection to port %d\n"
             "-p port         change gdb connection port\n"
             "-l item1,...    output log to %s (use -d ? for a list of log 
items)\n"
@@ -40,7 +40,7 @@ Index: ioemu/vl.c
             "-hdachs c,h,s[,t]  force hard disk 0 physical geometry and the 
optional BIOS\n"
             "                translation (t=none or lba) (usually qemu can 
guess them)\n"
             "-L path         set the directory for the BIOS and VGA BIOS\n"
-@@ -4788,6 +4791,7 @@
+@@ -5319,6 +5322,7 @@
      QEMU_OPTION_g,
      QEMU_OPTION_std_vga,
      QEMU_OPTION_monitor,
@@ -48,7 +48,7 @@ Index: ioemu/vl.c
      QEMU_OPTION_serial,
      QEMU_OPTION_parallel,
      QEMU_OPTION_loadvm,
-@@ -4861,6 +4865,7 @@
+@@ -5396,6 +5400,7 @@
      { "localtime", 0, QEMU_OPTION_localtime },
      { "std-vga", 0, QEMU_OPTION_std_vga },
      { "monitor", 1, QEMU_OPTION_monitor },
@@ -56,10 +56,10 @@ Index: ioemu/vl.c
      { "serial", 1, QEMU_OPTION_serial },
      { "parallel", 1, QEMU_OPTION_parallel },
      { "loadvm", HAS_ARG, QEMU_OPTION_loadvm },
-@@ -5484,6 +5489,9 @@
-                   exit(1);
-               }
-               break;
+@@ -6062,6 +6067,9 @@
+             case QEMU_OPTION_no_acpi:
+                 acpi_enabled = 0;
+                 break;
 +            case QEMU_OPTION_domainname:
 +                strncat(domain_name, optarg, sizeof(domain_name) - 20);
 +                break;
@@ -68,9 +68,9 @@ Index: ioemu/vl.c
      }
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-07-27 11:16:57.682475072 +0100
-+++ ioemu/vl.h 2006-07-27 11:16:58.127425816 +0100
-@@ -1094,4 +1094,5 @@
+--- ioemu.orig/vl.h    2006-08-06 02:15:39.711878977 +0100
++++ ioemu/vl.h 2006-08-06 02:17:16.068137258 +0100
+@@ -1185,4 +1185,5 @@
  
  void kqemu_record_dump(void);
  
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/xen-domid
--- a/tools/ioemu/patches/xen-domid     Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/xen-domid     Mon Aug 07 18:28:50 2006 +0100
@@ -1,16 +1,16 @@ Index: ioemu/vl.c
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:58.126425927 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:58.296407110 +0100
-@@ -160,6 +160,7 @@
- #endif
+--- ioemu.orig/vl.c    2006-08-06 02:17:31.428424918 +0100
++++ ioemu/vl.c 2006-08-06 02:18:12.550840673 +0100
+@@ -159,6 +159,7 @@
+ int fd_bootchk = 1;
  
  char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'};
 +extern int domid;
  
  /***********************************************************/
  /* x86 ISA bus support */
-@@ -4701,6 +4702,7 @@
+@@ -5237,6 +5238,7 @@
             "-s              wait gdb connection to port %d\n"
             "-p port         change gdb connection port\n"
             "-l item1,...    output log to %s (use -d ? for a list of log 
items)\n"
@@ -18,25 +18,25 @@ Index: ioemu/vl.c
             "-domain-name    domain name that we're serving\n"
             "-hdachs c,h,s[,t]  force hard disk 0 physical geometry and the 
optional BIOS\n"
             "                translation (t=none or lba) (usually qemu can 
guess them)\n"
-@@ -4804,6 +4806,8 @@
-     QEMU_OPTION_usbdevice,
+@@ -5336,6 +5338,8 @@
      QEMU_OPTION_smp,
      QEMU_OPTION_vnc,
+     QEMU_OPTION_no_acpi,
 +
 +    QEMU_OPTION_d,
  };
  
  typedef struct QEMUOption {
-@@ -4879,6 +4883,8 @@
-     /* temporary options */
+@@ -5415,6 +5419,8 @@
      { "usb", 0, QEMU_OPTION_usb },
      { "cirrusvga", 0, QEMU_OPTION_cirrusvga },
+     { "no-acpi", 0, QEMU_OPTION_no_acpi },
 +    
 +    { "d", HAS_ARG, QEMU_OPTION_d },
      { NULL },
  };
  
-@@ -5492,6 +5498,10 @@
+@@ -6070,6 +6076,10 @@
              case QEMU_OPTION_domainname:
                  strncat(domain_name, optarg, sizeof(domain_name) - 20);
                  break;
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/xen-mm
--- a/tools/ioemu/patches/xen-mm        Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/xen-mm        Mon Aug 07 18:28:50 2006 +0100
@@ -1,8 +1,8 @@ Index: ioemu/hw/pc.c
 Index: ioemu/hw/pc.c
 ===================================================================
---- ioemu.orig/hw/pc.c 2006-08-04 10:53:02.019794255 +0100
-+++ ioemu/hw/pc.c      2006-08-04 10:54:56.876531492 +0100
-@@ -639,7 +639,9 @@
+--- ioemu.orig/hw/pc.c 2006-08-06 02:15:39.708879311 +0100
++++ ioemu/hw/pc.c      2006-08-06 02:18:18.875135656 +0100
+@@ -646,7 +646,9 @@
      }
  
      /* allocate RAM */
@@ -12,7 +12,7 @@ Index: ioemu/hw/pc.c
  
      /* BIOS load */
      bios_offset = ram_size + vga_ram_size;
-@@ -671,8 +673,10 @@
+@@ -678,8 +680,10 @@
      ret = load_image(buf, phys_ram_base + vga_bios_offset);
      
      /* setup basic memory access */
@@ -25,20 +25,20 @@ Index: ioemu/hw/pc.c
      isa_bios_size = bios_size;
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:53:02.472741926 +0100
-+++ ioemu/vl.c 2006-08-04 10:55:48.361590787 +0100
-@@ -159,6 +159,8 @@
- #define MAX_CPUS 1
- #endif
+--- ioemu.orig/vl.c    2006-08-06 02:18:12.550840673 +0100
++++ ioemu/vl.c 2006-08-06 02:18:45.608155528 +0100
+@@ -158,6 +158,8 @@
+ int acpi_enabled = 1;
+ int fd_bootchk = 1;
  
 +int xc_handle;
 +
  char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'};
  extern int domid;
  
-@@ -5106,6 +5108,9 @@
+@@ -5650,6 +5652,9 @@
      QEMUMachine *machine;
-     char usb_devices[MAX_VM_USB_PORTS][128];
+     char usb_devices[MAX_USB_CMDLINE][128];
      int usb_devices_index;
 +    unsigned long nr_pages;
 +    xen_pfn_t *page_array;
@@ -46,7 +46,7 @@ Index: ioemu/vl.c
  
      char qemu_dm_logfilename[64];
  
-@@ -5342,11 +5347,13 @@
+@@ -5917,11 +5922,13 @@
                  ram_size = atol(optarg) * 1024 * 1024;
                  if (ram_size <= 0)
                      help();
@@ -60,7 +60,7 @@ Index: ioemu/vl.c
                  break;
              case QEMU_OPTION_l:
                  {
-@@ -5560,6 +5567,41 @@
+@@ -6133,12 +6140,49 @@
      /* init the memory */
      phys_ram_size = ram_size + vga_ram_size + bios_size;
  
@@ -99,12 +99,11 @@ Index: ioemu/vl.c
 +
 +#else  /* !CONFIG_DM */
 +
- #ifdef CONFIG_SOFTMMU
      phys_ram_base = qemu_vmalloc(phys_ram_size);
      if (!phys_ram_base) {
-@@ -5600,6 +5642,8 @@
+         fprintf(stderr, "Could not allocate physical memory\n");
+         exit(1);
      }
- #endif
  
 +#endif /* !CONFIG_DM */
 +
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/xen-network
--- a/tools/ioemu/patches/xen-network   Mon Aug 07 18:27:27 2006 +0100
+++ b/tools/ioemu/patches/xen-network   Mon Aug 07 18:28:50 2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/vl.c
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-07-27 11:16:58.823348777 +0100
-+++ ioemu/vl.c 2006-07-27 11:16:59.169310479 +0100
+--- ioemu.orig/vl.c    2006-08-06 02:22:01.556312045 +0100
++++ ioemu/vl.c 2006-08-06 02:22:53.925474246 +0100
 @@ -89,6 +89,7 @@
  #include "exec-all.h"
  
@@ -10,7 +10,7 @@ Index: ioemu/vl.c
  
  //#define DEBUG_UNUSED_IOPORT
  //#define DEBUG_IOPORT
-@@ -2621,11 +2622,11 @@
+@@ -3090,11 +3091,11 @@
  #endif
  
  static int net_tap_init(VLANState *vlan, const char *ifname1,
@@ -24,7 +24,7 @@ Index: ioemu/vl.c
      char **parg;
      char ifname[128];
  
-@@ -2647,6 +2648,7 @@
+@@ -3116,6 +3117,7 @@
                  parg = args;
                  *parg++ = (char *)setup_script;
                  *parg++ = ifname;
@@ -32,7 +32,7 @@ Index: ioemu/vl.c
                  *parg++ = NULL;
                  execv(setup_script, args);
                  _exit(1);
-@@ -3201,6 +3203,7 @@
+@@ -3671,6 +3673,7 @@
      if (!strcmp(device, "tap")) {
          char ifname[64];
          char setup_script[1024];
@@ -40,7 +40,7 @@ Index: ioemu/vl.c
          int fd;
          if (get_param_value(buf, sizeof(buf), "fd", p) > 0) {
              fd = strtol(buf, NULL, 0);
-@@ -3213,7 +3216,10 @@
+@@ -3683,7 +3686,10 @@
              if (get_param_value(setup_script, sizeof(setup_script), "script", 
p) == 0) {
                  pstrcpy(setup_script, sizeof(setup_script), 
DEFAULT_NETWORK_SCRIPT);
              }
@@ -52,7 +52,7 @@ Index: ioemu/vl.c
          }
      } else
  #endif
-@@ -4672,7 +4678,7 @@
+@@ -5208,7 +5214,7 @@
             "-net tap[,vlan=n],ifname=name\n"
             "                connect the host TAP network interface to VLAN 
'n'\n"
  #else
diff -r 06e2a95d3395 -r ec8dd0528fc6 
tools/ioemu/patches/xenstore-block-device-config
--- a/tools/ioemu/patches/xenstore-block-device-config  Mon Aug 07 18:27:27 
2006 +0100
+++ b/tools/ioemu/patches/xenstore-block-device-config  Mon Aug 07 18:28:50 
2006 +0100
@@ -1,10 +1,10 @@ Index: ioemu/Makefile.target
 Index: ioemu/Makefile.target
 ===================================================================
---- ioemu.orig/Makefile.target 2006-08-04 10:57:28.920995216 +0100
-+++ ioemu/Makefile.target      2006-08-04 10:57:29.641912123 +0100
-@@ -336,6 +336,7 @@
- VL_OBJS+= fdc.o mc146818rtc.o serial.o pc.o
- VL_OBJS+= cirrus_vga.o mixeng.o parallel.o
+--- ioemu.orig/Makefile.target 2006-08-07 17:42:27.802386071 +0100
++++ ioemu/Makefile.target      2006-08-07 17:42:28.683289358 +0100
+@@ -358,6 +358,7 @@
+ VL_OBJS+= cirrus_vga.o mixeng.o parallel.o acpi.o piix_pci.o
+ VL_OBJS+= usb-uhci.o
  VL_OBJS+= piix4acpi.o
 +VL_OBJS+= xenstore.o
  DEFINES += -DHAS_AUDIO
@@ -13,7 +13,7 @@ Index: ioemu/xenstore.c
 Index: ioemu/xenstore.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ ioemu/xenstore.c   2006-08-04 10:57:29.641912123 +0100
++++ ioemu/xenstore.c   2006-08-07 17:42:28.684289249 +0100
 @@ -0,0 +1,187 @@
 +/*
 + * This file is subject to the terms and conditions of the GNU General
@@ -204,9 +204,9 @@ Index: ioemu/xenstore.c
 +}
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:57:29.354945198 +0100
-+++ ioemu/vl.c 2006-08-04 10:57:29.644911777 +0100
-@@ -4711,9 +4711,11 @@
+--- ioemu.orig/vl.c    2006-08-07 17:42:28.393320909 +0100
++++ ioemu/vl.c 2006-08-07 17:42:28.687288922 +0100
+@@ -5242,9 +5242,11 @@
             "Standard options:\n"
             "-M machine      select emulated machine (-M ? for list)\n"
             "-fda/-fdb file  use 'file' as floppy disk 0/1 image\n"
@@ -217,8 +217,8 @@ Index: ioemu/vl.c
 +#endif /* !CONFIG_DM */
             "-boot [a|c|d]   boot on floppy (a), hard disk (c) or CD-ROM (d)\n"
           "-snapshot       write to temporary files instead of disk image 
files\n"
-            "-m megs         set virtual RAM size to megs MB [default=%d]\n"
-@@ -4844,11 +4846,13 @@
+ #ifdef TARGET_I386
+@@ -5370,11 +5372,13 @@
      QEMU_OPTION_M,
      QEMU_OPTION_fda,
      QEMU_OPTION_fdb,
@@ -231,8 +231,8 @@ Index: ioemu/vl.c
 +#endif /* !CONFIG_DM */
      QEMU_OPTION_boot,
      QEMU_OPTION_snapshot,
-     QEMU_OPTION_m,
-@@ -4915,11 +4919,13 @@
+ #ifdef TARGET_I386
+@@ -5445,11 +5449,13 @@
      { "M", HAS_ARG, QEMU_OPTION_M },
      { "fda", HAS_ARG, QEMU_OPTION_fda },
      { "fdb", HAS_ARG, QEMU_OPTION_fdb },
@@ -245,8 +245,8 @@ Index: ioemu/vl.c
 +#endif /* !CONFIG_DM */
      { "boot", HAS_ARG, QEMU_OPTION_boot },
      { "snapshot", 0, QEMU_OPTION_snapshot },
-     { "m", HAS_ARG, QEMU_OPTION_m },
-@@ -5255,10 +5261,16 @@
+ #ifdef TARGET_I386
+@@ -5797,10 +5803,16 @@
  #ifdef CONFIG_GDBSTUB
      int use_gdbstub, gdbstub_port;
  #endif
@@ -265,7 +265,7 @@ Index: ioemu/vl.c
      const char *kernel_filename, *kernel_cmdline;
      DisplayState *ds = &display_state;
      int cyls, heads, secs, translation;
-@@ -5293,8 +5305,10 @@
+@@ -5861,8 +5873,10 @@
      initrd_filename = NULL;
      for(i = 0; i < MAX_FD; i++)
          fd_filename[i] = NULL;
@@ -276,7 +276,7 @@ Index: ioemu/vl.c
      ram_size = DEFAULT_RAM_SIZE * 1024 * 1024;
      vga_ram_size = VGA_RAM_SIZE;
      bios_size = BIOS_SIZE;
-@@ -5307,11 +5321,13 @@
+@@ -5875,11 +5889,13 @@
      vncviewer = 0;
      kernel_filename = NULL;
      kernel_cmdline = "";
@@ -290,7 +290,7 @@ Index: ioemu/vl.c
      cyls = heads = secs = 0;
      translation = BIOS_ATA_TRANSLATION_AUTO;
      pstrcpy(monitor_device, sizeof(monitor_device), "vc");
-@@ -5344,7 +5360,11 @@
+@@ -5912,7 +5928,11 @@
              break;
          r = argv[optind];
          if (r[0] != '-') {
@@ -302,7 +302,7 @@ Index: ioemu/vl.c
          } else {
              const QEMUOption *popt;
  
-@@ -5388,6 +5408,7 @@
+@@ -5956,6 +5976,7 @@
              case QEMU_OPTION_initrd:
                  initrd_filename = optarg;
                  break;
@@ -310,7 +310,7 @@ Index: ioemu/vl.c
              case QEMU_OPTION_hda:
              case QEMU_OPTION_hdb:
              case QEMU_OPTION_hdc:
-@@ -5400,6 +5421,7 @@
+@@ -5968,6 +5989,7 @@
                          cdrom_index = -1;
                  }
                  break;
@@ -318,7 +318,7 @@ Index: ioemu/vl.c
              case QEMU_OPTION_snapshot:
                  snapshot = 1;
                  break;
-@@ -5452,11 +5474,13 @@
+@@ -6020,11 +6042,13 @@
              case QEMU_OPTION_append:
                  kernel_cmdline = optarg;
                  break;
@@ -332,7 +332,7 @@ Index: ioemu/vl.c
              case QEMU_OPTION_boot:
                  boot_device = optarg[0];
                  if (boot_device != 'a' && 
-@@ -5698,12 +5722,18 @@
+@@ -6274,12 +6298,18 @@
          }
      }
  
@@ -351,15 +351,15 @@ Index: ioemu/vl.c
      if (!linux_boot && 
          hd_filename[0] == '\0' && 
          (cdrom_index >= 0 && hd_filename[cdrom_index] == '\0') &&
-@@ -5717,6 +5747,7 @@
+@@ -6293,6 +6323,7 @@
          else
              boot_device = 'd';
      }
 +#endif /* !CONFIG_DM */
  
- #if !defined(CONFIG_SOFTMMU)
-     /* must avoid mmap() usage of glibc by setting a buffer "by hand" */
-@@ -5870,6 +5901,7 @@
+     setvbuf(stdout, NULL, _IOLBF, 0);
+     
+@@ -6407,6 +6438,7 @@
  
  #endif /* !CONFIG_DM */
  
@@ -367,7 +367,7 @@ Index: ioemu/vl.c
      /* we always create the cdrom drive, even if no disk is there */
      bdrv_init();
      if (cdrom_index >= 0) {
-@@ -5896,6 +5928,7 @@
+@@ -6433,6 +6465,7 @@
              }
          }
      }
@@ -375,9 +375,9 @@ Index: ioemu/vl.c
  
      /* we always create at least one floppy disk */
      fd_table[0] = bdrv_new("fda");
-@@ -6031,6 +6064,8 @@
- #endif
-     init_timers();
+@@ -6511,6 +6544,8 @@
+         }
+     }
  
 +    qemu_set_fd_handler(xenstore_fd(), xenstore_process_event, NULL, NULL);
 +
@@ -386,8 +386,8 @@ Index: ioemu/vl.c
                    kernel_filename, kernel_cmdline, initrd_filename,
 Index: ioemu/monitor.c
 ===================================================================
---- ioemu.orig/monitor.c       2006-08-04 10:57:28.195078886 +0100
-+++ ioemu/monitor.c    2006-08-04 10:57:29.645911662 +0100
+--- ioemu.orig/monitor.c       2006-08-07 17:42:27.132461888 +0100
++++ ioemu/monitor.c    2006-08-07 17:42:28.688288814 +0100
 @@ -24,6 +24,7 @@
  #include "vl.h"
  #include "disas.h"
@@ -396,7 +396,7 @@ Index: ioemu/monitor.c
  
  //#define DEBUG
  //#define DEBUG_COMPLETION
-@@ -328,7 +329,7 @@
+@@ -330,7 +331,7 @@
      return 0;
  }
  
@@ -405,7 +405,7 @@ Index: ioemu/monitor.c
  {
      BlockDriverState *bs;
  
-@@ -340,7 +341,7 @@
+@@ -342,7 +343,7 @@
      eject_device(bs, force);
  }
  
@@ -416,9 +416,9 @@ Index: ioemu/monitor.c
      int i;
 Index: ioemu/block.c
 ===================================================================
---- ioemu.orig/block.c 2006-08-04 10:57:21.718825369 +0100
-+++ ioemu/block.c      2006-08-04 10:57:29.646911546 +0100
-@@ -750,6 +750,7 @@
+--- ioemu.orig/block.c 2006-08-07 17:42:21.704076241 +0100
++++ ioemu/block.c      2006-08-07 17:42:28.689288705 +0100
+@@ -758,6 +758,7 @@
  static void raw_close(BlockDriverState *bs)
  {
      BDRVRawState *s = bs->opaque;
@@ -428,9 +428,9 @@ Index: ioemu/block.c
  
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-04 10:57:29.355945083 +0100
-+++ ioemu/vl.h 2006-08-04 10:57:29.647911431 +0100
-@@ -1093,6 +1093,8 @@
+--- ioemu.orig/vl.h    2006-08-07 17:42:28.394320800 +0100
++++ ioemu/vl.h 2006-08-07 17:42:28.689288705 +0100
+@@ -1184,6 +1184,8 @@
  void term_print_help(void);
  void monitor_readline(const char *prompt, int is_password,
                        char *buf, int buf_size);
@@ -439,7 +439,7 @@ Index: ioemu/vl.h
  
  /* readline.c */
  typedef void ReadLineFunc(void *opaque, const char *str);
-@@ -1105,6 +1107,13 @@
+@@ -1196,6 +1198,13 @@
  void readline_start(const char *prompt, int is_password,
                      ReadLineFunc *readline_func, void *opaque);
  
@@ -455,9 +455,9 @@ Index: ioemu/vl.h
  extern char domain_name[];
 Index: ioemu/hw/ide.c
 ===================================================================
---- ioemu.orig/hw/ide.c        2006-08-04 10:57:28.612030827 +0100
-+++ ioemu/hw/ide.c     2006-08-04 10:57:29.648911316 +0100
-@@ -1279,6 +1279,7 @@
+--- ioemu.orig/hw/ide.c        2006-08-07 17:42:27.552414361 +0100
++++ ioemu/hw/ide.c     2006-08-07 17:42:28.691288487 +0100
+@@ -1158,6 +1158,7 @@
          } else {
              ide_atapi_cmd_error(s, SENSE_NOT_READY, 
                                  ASC_MEDIUM_NOT_PRESENT);
diff -r 06e2a95d3395 -r ec8dd0528fc6 tools/ioemu/patches/xenstore-write-vnc-port
--- a/tools/ioemu/patches/xenstore-write-vnc-port       Mon Aug 07 18:27:27 
2006 +0100
+++ b/tools/ioemu/patches/xenstore-write-vnc-port       Mon Aug 07 18:28:50 
2006 +0100
@@ -1,7 +1,7 @@ Index: ioemu/xenstore.c
 Index: ioemu/xenstore.c
 ===================================================================
---- ioemu.orig/xenstore.c      2006-08-04 10:57:29.641912123 +0100
-+++ ioemu/xenstore.c   2006-08-04 10:57:30.244842629 +0100
+--- ioemu.orig/xenstore.c      2006-08-07 17:42:28.684289249 +0100
++++ ioemu/xenstore.c   2006-08-07 17:42:28.891266728 +0100
 @@ -185,3 +185,31 @@
      free(image);
      free(vec);
@@ -36,9 +36,9 @@ Index: ioemu/xenstore.c
 +}
 Index: ioemu/vl.c
 ===================================================================
---- ioemu.orig/vl.c    2006-08-04 10:57:29.644911777 +0100
-+++ ioemu/vl.c 2006-08-04 10:57:30.246842399 +0100
-@@ -5976,6 +5976,7 @@
+--- ioemu.orig/vl.c    2006-08-07 17:42:28.687288922 +0100
++++ ioemu/vl.c 2006-08-07 17:42:28.894266401 +0100
+@@ -6501,6 +6501,7 @@
        vnc_display_init(ds, vnc_display);
        if (vncviewer)
            vnc_start_viewer(vnc_display);
@@ -48,9 +48,9 @@ Index: ioemu/vl.c
          sdl_display_init(ds, full_screen);
 Index: ioemu/vl.h
 ===================================================================
---- ioemu.orig/vl.h    2006-08-04 10:57:29.647911431 +0100
-+++ ioemu/vl.h 2006-08-04 10:57:30.247842283 +0100
-@@ -1112,6 +1112,7 @@
+--- ioemu.orig/vl.h    2006-08-07 17:42:28.689288705 +0100
++++ ioemu/vl.h 2006-08-07 17:42:28.895266293 +0100
+@@ -1203,6 +1203,7 @@
  int xenstore_fd(void);
  void xenstore_process_event(void *opaque);
  void xenstore_check_new_media_present(int timeout);

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [qemu patches] Update patches for changesets 10957:08a11694b109 - 10959:06e2a95d3395., Xen patchbot-unstable <=