Hello community,

here is the log from the commit of package kvm for openSUSE:Factory
checked in at Thu May 19 09:47:14 CEST 2011.



--------
--- kvm/kvm.changes     2011-05-16 21:51:56.000000000 +0200
+++ /mounts/work_src_done/STABLE/kvm/kvm.changes        2011-05-19 
00:04:27.000000000 +0200
@@ -1,0 +2,22 @@
+Wed May 18 20:01:23 UTC 2011 - [email protected]
+
+- update to version 0.14.1
+  includes patches we already carry, also the following fixes:
+  qed consistency check
+  use after free issue with drive_del
+  device assignment issue
+  emulated scsi adapter ABORT message handling
+  applesmc REV key
+  handling of vhostforce parameter to -net
+  allow ISA IRQ sharing
+-------------------------------------------------------------------
+Tue May 17 10:41:58 UTC 2011 - [email protected]
+
+- Add libattr-devel to BuildRequires for OS11.3 and up (required for -virtfs).
+
+-------------------------------------------------------------------
+Sun May 15 12:44:31 UTC 2011 - [email protected]
+
+- enabled vde2 support 
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


Old:
----
  kvm-qemu-preXX-Don-t-allow-multiwrites-against-a-block-de.patch
  kvm-qemu-preXX-exit-if-drive-specified-is-invalid-instead.patch
  kvm-qemu-preXX-hw-sd.c-Add-missing-state-change-for-SD_ST.patch
  kvm-qemu-preXX-vhost-fix-dirty-page-handling.patch
  kvm-qemu-preXX-virtio-blk-fail-unaligned-requests.patch
  kvm-qemu-preXX-virtio-pci-fix-bus-master-work-around-on-l.patch
  kvm-qemu-preXX-vnc-Fix-fatal-crash-with-vnc-reverse-mode.patch
  kvm-qemu-preXX-vnc-tight-Fix-crash-after-2GB-of-output.patch
  qemu-kvm-0.14.0.tar.bz2

New:
----
  kvm-qemu-no-hot-unplug-for-certain-devices.patch
  qemu-kvm-0.14.1.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kvm.spec ++++++
--- /var/tmp/diff_new_pack.IPzBmP/_old  2011-05-19 09:46:25.000000000 +0200
+++ /var/tmp/diff_new_pack.IPzBmP/_new  2011-05-19 09:46:25.000000000 +0200
@@ -21,7 +21,7 @@
 %bcond_with vde
 %bcond_with spice
 
-%define package_base_version 0.14.0
+%define package_base_version 0.14.1
 %define package_extra_version .0
 %define bios_id seabios-0.6.2
 %define pxe_rom_id gpxe-1.0.1
@@ -50,7 +50,7 @@
 Name:           kvm
 BuildRequires:  SDL-devel alsa alsa-devel gnutls-devel libaio-devel 
libcurl-devel libpulse-devel ncurses-devel pciutils-devel perl python texinfo
 %if 0%{?suse_version} >= 1130
-BuildRequires:  brlapi-devel
+BuildRequires:  brlapi-devel libattr-devel
 %endif
 %ifarch %ix86 x86_64 ia64
 %if %{build_fw_from_source}
@@ -67,9 +67,10 @@
 BuildRequires:  pmtools
 %endif
 %endif
-%if %{with vde}
-BuildRequires:  vde2-devel
-%endif
+BuildRequires:  libvdehist0-devel
+BuildRequires:  libvdemgmt0-devel
+BuildRequires:  libvdeplug3-devel
+BuildRequires:  libvdesnmp0-devel
 %if %{with spice}
 # Spice support requires pixman > 0.17, which does not included in older suse 
versions
 %if 0%{?suse_version} >= 1130
@@ -89,7 +90,7 @@
 Summary:        Kernel-based Virtual Machine
 Url:            http://kvm.qumranet.com/
 Version:        %{package_base_version}%{package_extra_version} 
-Release:        3
+Release:        1
 Source0:        qemu-%{name}-%{package_base_version}.tar.bz2
 Source1:        60-kvm.rules
 Source2:        qemu-ifup
@@ -148,45 +149,38 @@
 Patch101:       kvm-qemu-preXX-dictzip2.patch
 Patch102:       kvm-qemu-preXX-report-default-mac-used.patch
 Patch103:       kvm-qemu-preXX-eepro100-pad-to-ensure-minimum-packet-size.patch
-Patch104:       kvm-qemu-preXX-vnc-Fix-fatal-crash-with-vnc-reverse-mode.patch
-Patch105:       kvm-qemu-preXX-hw-sd.c-Add-missing-state-change-for-SD_ST.patch
-Patch106:       kvm-qemu-preXX-vnc-fix-a-memory-leak-in-threaded-vnc-serv.patch
-Patch107:       kvm-qemu-preXX-device-assignment-detect-pre-fectchable-me.patch
-Patch108:       kvm-qemu-preXX-qemu-kvm-Mark-VCPU-state-dirty-on-creation.patch
-Patch109:       kvm-qemu-preXX-net-fix-qemu_can_send_packet-logic.patch
-Patch110:       kvm-qemu-preXX-hw-pcnet.c-Fix-EPROM-contents-to-suit-AMD-.patch
-Patch111:       kvm-qemu-preXX-fix-linuxboot.bin-and-multiboot.bin-to-not.patch
-Patch112:       kvm-qemu-preXX-exit-if-drive-specified-is-invalid-instead.patch
-Patch113:       kvm-qemu-preXX-Fix-performance-regression-in-qemu_get_ram.patch
-Patch114:       kvm-qemu-preXX-kvm-Mark-VCPU-state-dirty-on-creation.patch
-Patch115:       kvm-qemu-preXX-Don-t-allow-multiwrites-against-a-block-de.patch
-Patch116:       kvm-qemu-preXX-virtio-pci-fix-bus-master-work-around-on-l.patch
-Patch117:       kvm-qemu-preXX-virtio-serial-don-t-crash-on-invalid-input.patch
-Patch118:       kvm-qemu-preXX-vhost-fix-dirty-page-handling.patch
-Patch119:       kvm-qemu-preXX-e1000-multi-buffer-packet-support.patch
-Patch120:       kvm-qemu-preXX-e1000-clear-EOP-for-multi-buffer-descripto.patch
-Patch121:       kvm-qemu-preXX-e1000-verify-we-have-buffers-upfront.patch
-Patch122:       kvm-qemu-preXX-e1000-fix-multi-descriptor-packet-checksum.patch
-Patch123:       kvm-qemu-preXX-e1000-check-buffer-availability.patch
-Patch124:       kvm-qemu-preXX-vnc-don-t-set-the-quality-if-lossy-encodin.patch
-Patch125:       kvm-qemu-preXX-vnc-add-a-way-to-get-the-update-frequency-.patch
-Patch126:       kvm-qemu-preXX-vnc-refresh-lossy-rect-after-a-given-timeo.patch
-Patch127:       kvm-qemu-preXX-vnc-tight-use-the-update-frequency-to-choo.patch
-Patch128:       kvm-qemu-preXX-vnc-palette-use-a-pool-to-reduce-memory-al.patch
-Patch129:       kvm-qemu-preXX-vnc-palette-add-palette_init-calls.patch
-Patch130:       kvm-qemu-preXX-vnc-palette-and-fill-and-color-calls.patch
-Patch131:       kvm-qemu-preXX-vnc-Add-ZRLE-and-ZYWRLE-encodings.patch
-Patch132:       kvm-qemu-preXX-vnc-fix-uint8_t-comparisons-with-negative-.patch
-Patch133:       kvm-qemu-preXX-vnc-fix-lossy-rect-refreshing.patch
-Patch134:       kvm-qemu-preXX-bitmap-add-a-generic-bitmap-and-bitops-lib.patch
-Patch135:       kvm-qemu-preXX-ui-vnc-enc-tight.c-Fix-compile-failure-if-.patch
-Patch136:       kvm-qemu-preXX-vnc-use-the-new-generic-bitmap-functions.patch
-Patch137:       kvm-qemu-preXX-vnc-Fix-stack-corruption-and-other-bitmap-.patch
-Patch138:       kvm-qemu-preXX-fix-vnc-regression.patch
-Patch139:       kvm-qemu-preXX-vnc-fix-build-error-from-VNC_DIRTY_WORDS.patch
-Patch140:       kvm-qemu-preXX-severe-memory-leak-caused-by-broken-palett.patch
-Patch141:       kvm-qemu-preXX-virtio-blk-fail-unaligned-requests.patch
-Patch142:       kvm-qemu-preXX-vnc-tight-Fix-crash-after-2GB-of-output.patch
+Patch104:       kvm-qemu-preXX-vnc-fix-a-memory-leak-in-threaded-vnc-serv.patch
+Patch105:       kvm-qemu-preXX-device-assignment-detect-pre-fectchable-me.patch
+Patch106:       kvm-qemu-preXX-qemu-kvm-Mark-VCPU-state-dirty-on-creation.patch
+Patch107:       kvm-qemu-preXX-net-fix-qemu_can_send_packet-logic.patch
+Patch108:       kvm-qemu-preXX-hw-pcnet.c-Fix-EPROM-contents-to-suit-AMD-.patch
+Patch109:       kvm-qemu-preXX-fix-linuxboot.bin-and-multiboot.bin-to-not.patch
+Patch110:       kvm-qemu-preXX-Fix-performance-regression-in-qemu_get_ram.patch
+Patch111:       kvm-qemu-preXX-kvm-Mark-VCPU-state-dirty-on-creation.patch
+Patch112:       kvm-qemu-preXX-virtio-serial-don-t-crash-on-invalid-input.patch
+Patch113:       kvm-qemu-preXX-e1000-multi-buffer-packet-support.patch
+Patch114:       kvm-qemu-preXX-e1000-clear-EOP-for-multi-buffer-descripto.patch
+Patch115:       kvm-qemu-preXX-e1000-verify-we-have-buffers-upfront.patch
+Patch116:       kvm-qemu-preXX-e1000-fix-multi-descriptor-packet-checksum.patch
+Patch117:       kvm-qemu-preXX-e1000-check-buffer-availability.patch
+Patch118:       kvm-qemu-preXX-vnc-don-t-set-the-quality-if-lossy-encodin.patch
+Patch119:       kvm-qemu-preXX-vnc-add-a-way-to-get-the-update-frequency-.patch
+Patch120:       kvm-qemu-preXX-vnc-refresh-lossy-rect-after-a-given-timeo.patch
+Patch121:       kvm-qemu-preXX-vnc-tight-use-the-update-frequency-to-choo.patch
+Patch122:       kvm-qemu-preXX-vnc-palette-use-a-pool-to-reduce-memory-al.patch
+Patch123:       kvm-qemu-preXX-vnc-palette-add-palette_init-calls.patch
+Patch124:       kvm-qemu-preXX-vnc-palette-and-fill-and-color-calls.patch
+Patch125:       kvm-qemu-preXX-vnc-Add-ZRLE-and-ZYWRLE-encodings.patch
+Patch126:       kvm-qemu-preXX-vnc-fix-uint8_t-comparisons-with-negative-.patch
+Patch127:       kvm-qemu-preXX-vnc-fix-lossy-rect-refreshing.patch
+Patch128:       kvm-qemu-preXX-bitmap-add-a-generic-bitmap-and-bitops-lib.patch
+Patch129:       kvm-qemu-preXX-ui-vnc-enc-tight.c-Fix-compile-failure-if-.patch
+Patch130:       kvm-qemu-preXX-vnc-use-the-new-generic-bitmap-functions.patch
+Patch131:       kvm-qemu-preXX-vnc-Fix-stack-corruption-and-other-bitmap-.patch
+Patch132:       kvm-qemu-preXX-fix-vnc-regression.patch
+Patch133:       kvm-qemu-preXX-vnc-fix-build-error-from-VNC_DIRTY_WORDS.patch
+Patch134:       kvm-qemu-preXX-severe-memory-leak-caused-by-broken-palett.patch
+Patch135:       kvm-qemu-no-hot-unplug-for-certain-devices.patch
 
 Patch200:       qemu-img-vmdk-scsi.patch
 Patch201:       kvm-studio-slirp-nooutgoing.patch
@@ -343,13 +337,6 @@
 %patch133 -p1
 %patch134 -p1
 %patch135 -p1
-%patch136 -p1
-%patch137 -p1
-%patch138 -p1
-%patch139 -p1
-%patch140 -p1
-%patch141 -p1
-%patch142 -p1
 
 # Studio addons
 %patch200 -p1
@@ -420,9 +407,7 @@
         --enable-kvm-pit \
         --enable-kvm-device-assignment \
         --disable-user \
-%if !%{with vde}
-        --disable-vde \
-%endif
+        --enable-vde \
 %if %{build_fw_from_source}
         --disable-blobs \
 %endif

++++++ kvm-qemu-no-hot-unplug-for-certain-devices.patch ++++++
Index: qemu-kvm-0.14.0/hw/acpi_piix4.c
===================================================================
--- qemu-kvm-0.14.0.orig/hw/acpi_piix4.c
+++ qemu-kvm-0.14.0/hw/acpi_piix4.c
@@ -605,11 +605,13 @@ static void pciej_write(void *opaque, ui
     BusState *bus = opaque;
     DeviceState *qdev, *next;
     PCIDevice *dev;
+    PCIDeviceInfo *info;
     int slot = ffs(val) - 1;
 
     QLIST_FOREACH_SAFE(qdev, &bus->children, sibling, next) {
         dev = DO_UPCAST(PCIDevice, qdev, qdev);
-        if (PCI_SLOT(dev->devfn) == slot) {
+        info = container_of(qdev->info, PCIDeviceInfo, qdev);
+        if (PCI_SLOT(dev->devfn) == slot && !info->no_hotplug) {
             qdev_free(qdev);
         }
     }
++++++ kvm-qemu-preXX-report-default-mac-used.patch ++++++
--- /var/tmp/diff_new_pack.IPzBmP/_old  2011-05-19 09:46:25.000000000 +0200
+++ /var/tmp/diff_new_pack.IPzBmP/_new  2011-05-19 09:46:25.000000000 +0200
@@ -1,7 +1,7 @@
-Index: qemu-kvm-0.14.0.rc0/net.c
+Index: qemu-kvm-0.14.1/net.c
 ===================================================================
---- qemu-kvm-0.14.0.rc0.orig/net.c
-+++ qemu-kvm-0.14.0.rc0/net.c
+--- qemu-kvm-0.14.1.orig/net.c
++++ qemu-kvm-0.14.1/net.c
 @@ -173,6 +173,27 @@ void qemu_format_nic_info_str(VLANClient
               macaddr[3], macaddr[4], macaddr[5]);
  }
@@ -30,7 +30,7 @@
  void qemu_macaddr_default_if_unset(MACAddr *macaddr)
  {
      static int index = 0;
-@@ -1413,6 +1434,7 @@ int net_init_clients(void)
+@@ -1417,6 +1438,7 @@ int net_init_clients(void)
      if (qemu_opts_foreach(net, net_init_client, NULL, 1) == -1) {
          return -1;
      }

++++++ kvm-qemu-preXX-ui-vnc-enc-tight.c-Fix-compile-failure-if-.patch ++++++
--- /var/tmp/diff_new_pack.IPzBmP/_old  2011-05-19 09:46:25.000000000 +0200
+++ /var/tmp/diff_new_pack.IPzBmP/_new  2011-05-19 09:46:25.000000000 +0200
@@ -12,11 +12,11 @@
  ui/vnc-enc-tight.c |    4 ++++
  1 files changed, 4 insertions(+), 0 deletions(-)
 
-diff --git a/ui/vnc-enc-tight.c b/ui/vnc-enc-tight.c
-index 5933394..2522936 100644
---- a/ui/vnc-enc-tight.c
-+++ b/ui/vnc-enc-tight.c
-@@ -1536,8 +1536,10 @@ static int send_sub_rect(VncState *vs, int x, int y, 
int w, int h)
+Index: qemu-kvm-0.14.1/ui/vnc-enc-tight.c
+===================================================================
+--- qemu-kvm-0.14.1.orig/ui/vnc-enc-tight.c
++++ qemu-kvm-0.14.1/ui/vnc-enc-tight.c
+@@ -1537,8 +1537,10 @@ static int send_sub_rect(VncState *vs, i
      uint32_t bg = 0, fg = 0;
      int colors;
      int ret = 0;
@@ -27,7 +27,7 @@
  
      vnc_framebuffer_update(vs, x, y, w, h, vs->tight.type);
  
-@@ -1711,6 +1713,7 @@ static int tight_send_framebuffer_update(VncState *vs, 
int x, int y,
+@@ -1712,6 +1714,7 @@ static int tight_send_framebuffer_update
          vs->tight.pixel24 = false;
      }
  
@@ -35,7 +35,7 @@
      if (vs->tight.quality != (uint8_t)-1) {
          double freq = vnc_update_freq(vs, x, y, w, h);
  
-@@ -1718,6 +1721,7 @@ static int tight_send_framebuffer_update(VncState *vs, 
int x, int y,
+@@ -1719,6 +1722,7 @@ static int tight_send_framebuffer_update
              return send_rect_simple(vs, x, y, w, h, false);
          }
      }
@@ -43,6 +43,3 @@
  
      if (w * h < VNC_TIGHT_MIN_SPLIT_RECT_SIZE) {
          return send_rect_simple(vs, x, y, w, h, true);
--- 
-1.6.0.2
-

++++++ kvm-qemu-preXX-vnc-fix-uint8_t-comparisons-with-negative-.patch ++++++
--- /var/tmp/diff_new_pack.IPzBmP/_old  2011-05-19 09:46:26.000000000 +0200
+++ /var/tmp/diff_new_pack.IPzBmP/_new  2011-05-19 09:46:26.000000000 +0200
@@ -10,11 +10,11 @@
  ui/vnc-enc-zrle.c  |    3 ++-
  2 files changed, 4 insertions(+), 3 deletions(-)
 
-diff --git a/ui/vnc-enc-tight.c b/ui/vnc-enc-tight.c
-index ad9a9a8..81024d5 100644
---- a/ui/vnc-enc-tight.c
-+++ b/ui/vnc-enc-tight.c
-@@ -1546,7 +1546,7 @@ static int send_sub_rect(VncState *vs, int x, int y, int 
w, int h)
+Index: qemu-kvm-0.14.1/ui/vnc-enc-tight.c
+===================================================================
+--- qemu-kvm-0.14.1.orig/ui/vnc-enc-tight.c
++++ qemu-kvm-0.14.1/ui/vnc-enc-tight.c
+@@ -1547,7 +1547,7 @@ static int send_sub_rect(VncState *vs, i
      vnc_tight_stop(vs);
  
  #ifdef CONFIG_VNC_JPEG
@@ -23,7 +23,7 @@
          double freq = vnc_update_freq(vs, x, y, w, h);
  
          if (freq < tight_jpeg_conf[vs->tight.quality].jpeg_freq_min) {
-@@ -1711,7 +1711,7 @@ static int tight_send_framebuffer_update(VncState *vs, 
int x, int y,
+@@ -1712,7 +1712,7 @@ static int tight_send_framebuffer_update
          vs->tight.pixel24 = false;
      }
  
@@ -32,11 +32,11 @@
          double freq = vnc_update_freq(vs, x, y, w, h);
  
          if (freq > tight_jpeg_conf[vs->tight.quality].jpeg_freq_threshold) {
-diff --git a/ui/vnc-enc-zrle.c b/ui/vnc-enc-zrle.c
-index 016a406..917d384 100644
---- a/ui/vnc-enc-zrle.c
-+++ b/ui/vnc-enc-zrle.c
-@@ -260,7 +260,8 @@ static int zrle_send_framebuffer_update(VncState *vs, int 
x, int y,
+Index: qemu-kvm-0.14.1/ui/vnc-enc-zrle.c
+===================================================================
+--- qemu-kvm-0.14.1.orig/ui/vnc-enc-zrle.c
++++ qemu-kvm-0.14.1/ui/vnc-enc-zrle.c
+@@ -260,7 +260,8 @@ static int zrle_send_framebuffer_update(
      int zywrle_level;
  
      if (vs->zrle.type == VNC_ENCODING_ZYWRLE) {
@@ -46,6 +46,3 @@
              zywrle_level = 0;
              vs->zrle.type = VNC_ENCODING_ZRLE;
          } else if (vs->tight.quality < 3) {
--- 
-1.6.0.2
-

++++++ kvm-qemu-preXX-vnc-tight-use-the-update-frequency-to-choo.patch ++++++
--- /var/tmp/diff_new_pack.IPzBmP/_old  2011-05-19 09:46:26.000000000 +0200
+++ /var/tmp/diff_new_pack.IPzBmP/_new  2011-05-19 09:46:26.000000000 +0200
@@ -12,10 +12,10 @@
  ui/vnc-enc-tight.c |   75 +++++++++++++++++++++++++++++++++++++++++++---------
  1 files changed, 62 insertions(+), 13 deletions(-)
 
-diff --git a/ui/vnc-enc-tight.c b/ui/vnc-enc-tight.c
-index af45edd..ad9a9a8 100644
---- a/ui/vnc-enc-tight.c
-+++ b/ui/vnc-enc-tight.c
+Index: qemu-kvm-0.14.1/ui/vnc-enc-tight.c
+===================================================================
+--- qemu-kvm-0.14.1.orig/ui/vnc-enc-tight.c
++++ qemu-kvm-0.14.1/ui/vnc-enc-tight.c
 @@ -72,6 +72,26 @@ static const struct {
  static int tight_send_framebuffer_update(VncState *vs, int x, int y,
                                           int w, int h);
@@ -43,7 +43,7 @@
  #ifdef CONFIG_VNC_PNG
  static const struct {
      int png_zlib_level, png_filters;
-@@ -1476,12 +1496,13 @@ static int send_sub_rect_nojpeg(VncState *vs, int x, 
int y, int w, int h,
+@@ -1477,12 +1497,13 @@ static int send_sub_rect_nojpeg(VncState
  #ifdef CONFIG_VNC_JPEG
  static int send_sub_rect_jpeg(VncState *vs, int x, int y, int w, int h,
                                int bg, int fg, int colors,
@@ -59,7 +59,7 @@
              int quality = tight_conf[vs->tight.quality].jpeg_quality;
  
              ret = send_jpeg_rect(vs, x, y, w, h, quality);
-@@ -1493,8 +1514,9 @@ static int send_sub_rect_jpeg(VncState *vs, int x, int 
y, int w, int h,
+@@ -1494,8 +1515,9 @@ static int send_sub_rect_jpeg(VncState *
      } else if (colors == 2) {
          ret = send_mono_rect(vs, x, y, w, h, bg, fg);
      } else if (colors <= 256) {
@@ -71,7 +71,7 @@
              int quality = tight_conf[vs->tight.quality].jpeg_quality;
  
              ret = send_jpeg_rect(vs, x, y, w, h, quality);
-@@ -1514,6 +1536,8 @@ static int send_sub_rect(VncState *vs, int x, int y, int 
w, int h)
+@@ -1515,6 +1537,8 @@ static int send_sub_rect(VncState *vs, i
      uint32_t bg = 0, fg = 0;
      int colors;
      int ret = 0;
@@ -80,7 +80,7 @@
  
      vnc_framebuffer_update(vs, x, y, w, h, vs->tight.type);
  
-@@ -1521,11 +1545,26 @@ static int send_sub_rect(VncState *vs, int x, int y, 
int w, int h)
+@@ -1522,11 +1546,26 @@ static int send_sub_rect(VncState *vs, i
      vnc_raw_send_framebuffer_update(vs, x, y, w, h);
      vnc_tight_stop(vs);
  
@@ -109,7 +109,7 @@
      } else {
          ret = send_sub_rect_nojpeg(vs, x, y, w, h, bg, fg, colors, palette);
      }
-@@ -1548,7 +1587,8 @@ static int send_sub_rect_solid(VncState *vs, int x, int 
y, int w, int h)
+@@ -1549,7 +1588,8 @@ static int send_sub_rect_solid(VncState
      return send_solid_rect(vs);
  }
  
@@ -119,7 +119,7 @@
  {
      int max_size, max_width;
      int max_sub_width, max_sub_height;
-@@ -1559,7 +1599,7 @@ static int send_rect_simple(VncState *vs, int x, int y, 
int w, int h)
+@@ -1560,7 +1600,7 @@ static int send_rect_simple(VncState *vs
      max_size = tight_conf[vs->tight.compression].max_rect_size;
      max_width = tight_conf[vs->tight.compression].max_rect_width;
  
@@ -128,7 +128,7 @@
          max_sub_width = (w > max_width) ? max_width : w;
          max_sub_height = max_size / max_sub_width;
  
-@@ -1590,7 +1630,7 @@ static int find_large_solid_color_rect(VncState *vs, int 
x, int y,
+@@ -1591,7 +1631,7 @@ static int find_large_solid_color_rect(V
          /* If a rectangle becomes too large, send its upper part now. */
  
          if (dy - y >= max_rows) {
@@ -137,7 +137,7 @@
              y += max_rows;
              h -= max_rows;
          }
-@@ -1629,7 +1669,7 @@ static int find_large_solid_color_rect(VncState *vs, int 
x, int y,
+@@ -1630,7 +1670,7 @@ static int find_large_solid_color_rect(V
              /* Send rectangles at top and left to solid-color area. */
  
              if (y_best != y) {
@@ -146,7 +146,7 @@
              }
              if (x_best != x) {
                  n += tight_send_framebuffer_update(vs, x, y_best,
-@@ -1656,7 +1696,7 @@ static int find_large_solid_color_rect(VncState *vs, int 
x, int y,
+@@ -1657,7 +1697,7 @@ static int find_large_solid_color_rect(V
              return n;
          }
      }
@@ -155,7 +155,7 @@
  }
  
  static int tight_send_framebuffer_update(VncState *vs, int x, int y,
-@@ -1671,8 +1711,17 @@ static int tight_send_framebuffer_update(VncState *vs, 
int x, int y,
+@@ -1672,8 +1712,17 @@ static int tight_send_framebuffer_update
          vs->tight.pixel24 = false;
      }
  
@@ -175,6 +175,3 @@
  
      /* Calculate maximum number of rows in one non-solid rectangle. */
  
--- 
-1.6.0.2
-

++++++ kvm-seabios-gcc46-fixes.patch ++++++
--- /var/tmp/diff_new_pack.IPzBmP/_old  2011-05-19 09:46:26.000000000 +0200
+++ /var/tmp/diff_new_pack.IPzBmP/_new  2011-05-19 09:46:26.000000000 +0200
@@ -9,9 +9,9 @@
 -    UREG(edi, di, di_hi, di_lo);
 -    UREG(esi, si, si_hi, si_lo);
 -    UREG(ebp, bp, bp_hi, bp_lo);
-+    UREG(edi, di, di_HI, di_LO);
-+    UREG(esi, si, si_HI, si_LO);
-+    UREG(ebp, bp, bp_HI, bp_LO);
++    UREG(edi, di, di8u, di8l);
++    UREG(esi, si, si8u, si8l);
++    UREG(ebp, bp, bp8u, bp8l);
      UREG(ebx, bx, bh, bl);
      UREG(edx, dx, dh, dl);
      UREG(ecx, cx, ch, cl);

++++++ kvm-studio-slirp-nooutgoing.patch ++++++
--- /var/tmp/diff_new_pack.IPzBmP/_old  2011-05-19 09:46:26.000000000 +0200
+++ /var/tmp/diff_new_pack.IPzBmP/_new  2011-05-19 09:46:26.000000000 +0200
@@ -1,7 +1,7 @@
-Index: qemu-kvm-0.14.0/vl.c
+Index: qemu-kvm-0.14.1/vl.c
 ===================================================================
---- qemu-kvm-0.14.0.orig/vl.c
-+++ qemu-kvm-0.14.0/vl.c
+--- qemu-kvm-0.14.1.orig/vl.c
++++ qemu-kvm-0.14.1/vl.c
 @@ -213,6 +213,7 @@ const char *vnc_display;
  int acpi_enabled = 1;
  int no_hpet = 0;
@@ -10,7 +10,7 @@
  int no_reboot = 0;
  int no_shutdown = 0;
  int cursor_hide = 1;
-@@ -2340,6 +2341,14 @@ int main(int argc, char **argv, char **e
+@@ -2341,6 +2342,14 @@ int main(int argc, char **argv, char **e
              case QEMU_OPTION_singlestep:
                  singlestep = 1;
                  break;
@@ -25,10 +25,10 @@
              case QEMU_OPTION_S:
                  autostart = 0;
                  break;
-Index: qemu-kvm-0.14.0/slirp/tcp_subr.c
+Index: qemu-kvm-0.14.1/slirp/tcp_subr.c
 ===================================================================
---- qemu-kvm-0.14.0.orig/slirp/tcp_subr.c
-+++ qemu-kvm-0.14.0/slirp/tcp_subr.c
+--- qemu-kvm-0.14.1.orig/slirp/tcp_subr.c
++++ qemu-kvm-0.14.1/slirp/tcp_subr.c
 @@ -317,6 +317,9 @@ tcp_sockclosed(struct tcpcb *tp)
   * nonblocking.  Connect returns after the SYN is sent, and does
   * not wait for ACK+SYN.
@@ -73,10 +73,10 @@
        /* Translate connections from localhost to the real hostname */
        if (so->so_faddr.s_addr == 0 || so->so_faddr.s_addr == 
loopback_addr.s_addr)
           so->so_faddr = slirp->vhost_addr;
-Index: qemu-kvm-0.14.0/slirp/socket.c
+Index: qemu-kvm-0.14.1/slirp/socket.c
 ===================================================================
---- qemu-kvm-0.14.0.orig/slirp/socket.c
-+++ qemu-kvm-0.14.0/slirp/socket.c
+--- qemu-kvm-0.14.1.orig/slirp/socket.c
++++ qemu-kvm-0.14.1/slirp/socket.c
 @@ -529,6 +529,8 @@ sorecvfrom(struct socket *so)
        } /* if ping packet */
  }
@@ -99,10 +99,10 @@
        /* Don't care what port we get */
        ret = sendto(so->s, m->m_data, m->m_len, 0,
                     (struct sockaddr *)&addr, sizeof (struct sockaddr));
-Index: qemu-kvm-0.14.0/qemu-options.hx
+Index: qemu-kvm-0.14.1/qemu-options.hx
 ===================================================================
---- qemu-kvm-0.14.0.orig/qemu-options.hx
-+++ qemu-kvm-0.14.0/qemu-options.hx
+--- qemu-kvm-0.14.1.orig/qemu-options.hx
++++ qemu-kvm-0.14.1/qemu-options.hx
 @@ -1913,6 +1913,16 @@ Store the QEMU process PID in @var{file}
  from a script.
  ETEXI

++++++ qemu-img-vmdk-scsi.patch ++++++
--- /var/tmp/diff_new_pack.IPzBmP/_old  2011-05-19 09:46:26.000000000 +0200
+++ /var/tmp/diff_new_pack.IPzBmP/_new  2011-05-19 09:46:26.000000000 +0200
@@ -13,11 +13,11 @@
  qemu-img.c   |    8 +++++++-
  4 files changed, 18 insertions(+), 4 deletions(-)
 
-Index: qemu-kvm-0.14.0/block.c
+Index: qemu-kvm-0.14.1/block.c
 ===================================================================
---- qemu-kvm-0.14.0.orig/block.c
-+++ qemu-kvm-0.14.0/block.c
-@@ -2800,7 +2800,7 @@ int bdrv_img_create(const char *filename
+--- qemu-kvm-0.14.1.orig/block.c
++++ qemu-kvm-0.14.1/block.c
+@@ -2808,7 +2808,7 @@ int bdrv_img_create(const char *filename
                      char *options, uint64_t img_size, int flags)
  {
      QEMUOptionParameter *param = NULL, *create_options = NULL;
@@ -26,7 +26,7 @@
      BlockDriverState *bs = NULL;
      BlockDriver *drv, *proto_drv;
      BlockDriver *backing_drv = NULL;
-@@ -2909,6 +2909,9 @@ int bdrv_img_create(const char *filename
+@@ -2917,6 +2917,9 @@ int bdrv_img_create(const char *filename
  
      printf("Formatting '%s', fmt=%s ", filename, fmt);
      print_option_parameters(param);
@@ -36,10 +36,10 @@
      puts("");
  
      ret = bdrv_create(drv, filename, param);
-Index: qemu-kvm-0.14.0/block/vmdk.c
+Index: qemu-kvm-0.14.1/block/vmdk.c
 ===================================================================
---- qemu-kvm-0.14.0.orig/block/vmdk.c
-+++ qemu-kvm-0.14.0/block/vmdk.c
+--- qemu-kvm-0.14.1.orig/block/vmdk.c
++++ qemu-kvm-0.14.1/block/vmdk.c
 @@ -685,7 +685,7 @@ static int vmdk_create(const char *filen
          "ddb.geometry.cylinders = \"%" PRId64 "\"\n"
          "ddb.geometry.heads = \"16\"\n"
@@ -80,10 +80,10 @@
      { NULL }
  };
  
-Index: qemu-kvm-0.14.0/block_int.h
+Index: qemu-kvm-0.14.1/block_int.h
 ===================================================================
---- qemu-kvm-0.14.0.orig/block_int.h
-+++ qemu-kvm-0.14.0/block_int.h
+--- qemu-kvm-0.14.1.orig/block_int.h
++++ qemu-kvm-0.14.1/block_int.h
 @@ -30,10 +30,12 @@
  
  #define BLOCK_FLAG_ENCRYPT    1
@@ -97,10 +97,10 @@
  #define BLOCK_OPT_BACKING_FILE  "backing_file"
  #define BLOCK_OPT_BACKING_FMT   "backing_fmt"
  #define BLOCK_OPT_CLUSTER_SIZE  "cluster_size"
-Index: qemu-kvm-0.14.0/qemu-img.c
+Index: qemu-kvm-0.14.1/qemu-img.c
 ===================================================================
---- qemu-kvm-0.14.0.orig/qemu-img.c
-+++ qemu-kvm-0.14.0/qemu-img.c
+--- qemu-kvm-0.14.1.orig/qemu-img.c
++++ qemu-kvm-0.14.1/qemu-img.c
 @@ -576,7 +576,7 @@ static int img_convert(int argc, char **
      const uint8_t *buf1;
      BlockDriverInfo bdi;

++++++ qemu-kvm-0.14.0.tar.bz2 -> qemu-kvm-0.14.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/EXTERNAL_DEPENDENCIES 
new/qemu-kvm-0.14.1/EXTERNAL_DEPENDENCIES
--- old/qemu-kvm-0.14.0/EXTERNAL_DEPENDENCIES   2011-02-22 14:34:38.000000000 
+0100
+++ new/qemu-kvm-0.14.1/EXTERNAL_DEPENDENCIES   1970-01-01 01:00:00.000000000 
+0100
@@ -1,2 +0,0 @@
-seabios 06d0bdd9e2e20377b3180e4986b14c8549b393e4
-vgabios ca056d8e77a534f4f90548bc8cee166a378c1454
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/KVM_VERSION 
new/qemu-kvm-0.14.1/KVM_VERSION
--- old/qemu-kvm-0.14.0/KVM_VERSION     2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/KVM_VERSION     1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-qemu-kvm-0.14.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/Makefile.target 
new/qemu-kvm-0.14.1/Makefile.target
--- old/qemu-kvm-0.14.0/Makefile.target 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/Makefile.target 2011-05-11 15:29:46.000000000 +0200
@@ -195,10 +195,11 @@
 # System emulator target
 ifdef CONFIG_SOFTMMU
 
-obj-y = arch_init.o cpus.o monitor.o pci.o machine.o gdbstub.o vl.o balloon.o
+obj-y = arch_init.o cpus.o monitor.o machine.o gdbstub.o vl.o balloon.o
 # virtio has to be here due to weird dependency between PCI and virtio-net.
 # need to fix this properly
 obj-$(CONFIG_NO_PCI) += pci-stub.o
+obj-$(CONFIG_PCI) += pci.o
 obj-$(CONFIG_VIRTIO) += virtio-blk.o virtio-balloon.o virtio-net.o 
virtio-serial-bus.o
 obj-$(CONFIG_VIRTIO_PCI) += virtio-pci.o
 obj-y += vhost_net.o
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/VERSION new/qemu-kvm-0.14.1/VERSION
--- old/qemu-kvm-0.14.0/VERSION 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/VERSION 2011-05-11 15:29:46.000000000 +0200
@@ -1 +1 @@
-0.14.0
+0.14.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/block/qed-check.c 
new/qemu-kvm-0.14.1/block/qed-check.c
--- old/qemu-kvm-0.14.0/block/qed-check.c       2011-02-22 14:34:38.000000000 
+0100
+++ new/qemu-kvm-0.14.1/block/qed-check.c       2011-05-11 15:29:46.000000000 
+0200
@@ -18,7 +18,7 @@
     BdrvCheckResult *result;
     bool fix;                           /* whether to fix invalid offsets */
 
-    size_t nclusters;
+    uint64_t nclusters;
     uint32_t *used_clusters;            /* referenced cluster bitmap */
 
     QEDRequest request;
@@ -176,7 +176,7 @@
 static void qed_check_for_leaks(QEDCheck *check)
 {
     BDRVQEDState *s = check->s;
-    size_t i;
+    uint64_t i;
 
     for (i = s->header.header_size; i < check->nclusters; i++) {
         if (!qed_test_bit(check->used_clusters, i)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/block/qed.h 
new/qemu-kvm-0.14.1/block/qed.h
--- old/qemu-kvm-0.14.0/block/qed.h     2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/block/qed.h     2011-05-11 15:29:46.000000000 +0200
@@ -251,7 +251,7 @@
     return offset & (s->header.cluster_size - 1);
 }
 
-static inline unsigned int qed_bytes_to_clusters(BDRVQEDState *s, size_t bytes)
+static inline uint64_t qed_bytes_to_clusters(BDRVQEDState *s, uint64_t bytes)
 {
     return qed_start_of_cluster(s, bytes + (s->header.cluster_size - 1)) /
            (s->header.cluster_size - 1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/block.c new/qemu-kvm-0.14.1/block.c
--- old/qemu-kvm-0.14.0/block.c 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/block.c 2011-05-11 15:29:46.000000000 +0200
@@ -697,14 +697,22 @@
     }
 }
 
+/* make a BlockDriverState anonymous by removing from bdrv_state list.
+   Also, NULL terminate the device_name to prevent double remove */
+void bdrv_make_anon(BlockDriverState *bs)
+{
+    if (bs->device_name[0] != '\0') {
+        QTAILQ_REMOVE(&bdrv_states, bs, list);
+    }
+    bs->device_name[0] = '\0';
+}
+
 void bdrv_delete(BlockDriverState *bs)
 {
     assert(!bs->peer);
 
     /* remove from list, if necessary */
-    if (bs->device_name[0] != '\0') {
-        QTAILQ_REMOVE(&bdrv_states, bs, list);
-    }
+    bdrv_make_anon(bs);
 
     bdrv_close(bs);
     if (bs->file != NULL) {
@@ -2295,6 +2303,14 @@
     MultiwriteCB *mcb;
     int i;
 
+    /* don't submit writes if we don't have a medium */
+    if (bs->drv == NULL) {
+        for (i = 0; i < num_reqs; i++) {
+            reqs[i].error = -ENOMEDIUM;
+        }
+        return -1;
+    }
+
     if (num_reqs == 0) {
         return 0;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/block.h new/qemu-kvm-0.14.1/block.h
--- old/qemu-kvm-0.14.0/block.h 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/block.h 2011-05-11 15:29:46.000000000 +0200
@@ -66,6 +66,7 @@
     QEMUOptionParameter *options);
 int bdrv_create_file(const char* filename, QEMUOptionParameter *options);
 BlockDriverState *bdrv_new(const char *device_name);
+void bdrv_make_anon(BlockDriverState *bs);
 void bdrv_delete(BlockDriverState *bs);
 int bdrv_file_open(BlockDriverState **pbs, const char *filename, int flags);
 int bdrv_open(BlockDriverState *bs, const char *filename, int flags,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/blockdev.c 
new/qemu-kvm-0.14.1/blockdev.c
--- old/qemu-kvm-0.14.0/blockdev.c      2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/blockdev.c      2011-05-11 15:29:46.000000000 +0200
@@ -739,8 +739,6 @@
 {
     const char *id = qdict_get_str(qdict, "id");
     BlockDriverState *bs;
-    BlockDriverState **ptr;
-    Property *prop;
 
     bs = bdrv_find(id);
     if (!bs) {
@@ -757,24 +755,17 @@
     bdrv_flush(bs);
     bdrv_close(bs);
 
-    /* clean up guest state from pointing to host resource by
-     * finding and removing DeviceState "drive" property */
+    /* if we have a device associated with this BlockDriverState (bs->peer)
+     * then we need to make the drive anonymous until the device
+     * can be removed.  If this is a drive with no device backing
+     * then we can just get rid of the block driver state right here.
+     */
     if (bs->peer) {
-        for (prop = bs->peer->info->props; prop && prop->name; prop++) {
-            if (prop->info->type == PROP_TYPE_DRIVE) {
-                ptr = qdev_get_prop_ptr(bs->peer, prop);
-                if (*ptr == bs) {
-                    bdrv_detach(bs, bs->peer);
-                    *ptr = NULL;
-                    break;
-                }
-            }
-        }
+        bdrv_make_anon(bs);
+    } else {
+        drive_uninit(drive_get_by_blockdev(bs));
     }
 
-    /* clean up host side */
-    drive_uninit(drive_get_by_blockdev(bs));
-
     return 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/configure 
new/qemu-kvm-0.14.1/configure
--- old/qemu-kvm-0.14.0/configure       2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/configure       2011-05-11 15:29:46.000000000 +0200
@@ -1916,7 +1916,7 @@
 #include <rados/librados.h>
 int main(void) { rados_initialize(0, NULL); return 0; }
 EOF
-  rbd_libs="-lrados -lcrypto"
+  rbd_libs="-lrados"
   if compile_prog "" "$rbd_libs" ; then
     librados_too_old=no
     cat > $TMPC <<EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/applesmc.c 
new/qemu-kvm-0.14.1/hw/applesmc.c
--- old/qemu-kvm-0.14.0/hw/applesmc.c   2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/applesmc.c   2011-05-11 15:29:46.000000000 +0200
@@ -188,7 +188,7 @@
         QLIST_REMOVE(d, node);
     }
 
-    applesmc_add_key(s, "REV ", 6, "\0x01\0x13\0x0f\0x00\0x00\0x03");
+    applesmc_add_key(s, "REV ", 6, "\x01\x13\x0f\x00\x00\x03");
     applesmc_add_key(s, "OSK0", 32, s->osk);
     applesmc_add_key(s, "OSK1", 32, s->osk + 32);
     applesmc_add_key(s, "NATJ", 1, "\0");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/hpet.c 
new/qemu-kvm-0.14.1/hw/hpet.c
--- old/qemu-kvm-0.14.0/hw/hpet.c       2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/hpet.c       2011-05-11 15:29:46.000000000 +0200
@@ -720,7 +720,6 @@
     s->capability |= (s->num_timers - 1) << HPET_ID_NUM_TIM_SHIFT;
     s->capability |= ((HPET_CLK_PERIOD) << 32);
 
-    isa_reserve_irq(RTC_ISA_IRQ);
     qdev_init_gpio_in(&dev->qdev, hpet_handle_rtc_irq, 1);
 
     /* HPET Area */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/ide/piix.c 
new/qemu-kvm-0.14.1/hw/ide/piix.c
--- old/qemu-kvm-0.14.0/hw/ide/piix.c   2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/ide/piix.c   2011-05-11 15:29:46.000000000 +0200
@@ -122,7 +122,7 @@
     for (i = 0; i < 2; i++) {
         ide_bus_new(&d->bus[i], &d->dev.qdev, i);
         ide_init_ioport(&d->bus[i], port_info[i].iobase, port_info[i].iobase2);
-        ide_init2(&d->bus[i], isa_reserve_irq(port_info[i].isairq));
+        ide_init2(&d->bus[i], isa_get_irq(port_info[i].isairq));
 
         bmdma_init(&d->bus[i], &d->bmdma[i]);
         d->bmdma[i].bus = &d->bus[i];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/ide/via.c 
new/qemu-kvm-0.14.1/hw/ide/via.c
--- old/qemu-kvm-0.14.0/hw/ide/via.c    2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/ide/via.c    2011-05-11 15:29:46.000000000 +0200
@@ -145,7 +145,7 @@
     for (i = 0; i < 2; i++) {
         ide_bus_new(&d->bus[i], &d->dev.qdev, i);
         ide_init_ioport(&d->bus[i], port_info[i].iobase, port_info[i].iobase2);
-        ide_init2(&d->bus[i], isa_reserve_irq(port_info[i].isairq));
+        ide_init2(&d->bus[i], isa_get_irq(port_info[i].isairq));
 
         bmdma_init(&d->bus[i], &d->bmdma[i]);
         d->bmdma[i].bus = &d->bus[i];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/isa-bus.c 
new/qemu-kvm-0.14.1/hw/isa-bus.c
--- old/qemu-kvm-0.14.0/hw/isa-bus.c    2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/isa-bus.c    2011-05-11 15:29:46.000000000 +0200
@@ -25,7 +25,6 @@
 struct ISABus {
     BusState qbus;
     qemu_irq *irqs;
-    uint32_t assigned;
 };
 static ISABus *isabus;
 target_phys_addr_t isa_mem_base = 0;
@@ -61,33 +60,24 @@
 }
 
 /*
- * isa_reserve_irq() reserves the ISA irq and returns the corresponding
- * qemu_irq entry for the i8259.
+ * isa_get_irq() returns the corresponding qemu_irq entry for the i8259.
  *
  * This function is only for special cases such as the 'ferr', and
  * temporary use for normal devices until they are converted to qdev.
  */
-qemu_irq isa_reserve_irq(int isairq)
+qemu_irq isa_get_irq(int isairq)
 {
     if (isairq < 0 || isairq > 15) {
         hw_error("isa irq %d invalid", isairq);
     }
-    if (isabus->assigned & (1 << isairq)) {
-        hw_error("isa irq %d already assigned", isairq);
-    }
-    isabus->assigned |= (1 << isairq);
     return isabus->irqs[isairq];
 }
 
 void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq)
 {
     assert(dev->nirqs < ARRAY_SIZE(dev->isairq));
-    if (isabus->assigned & (1 << isairq)) {
-        hw_error("isa irq %d already assigned", isairq);
-    }
-    isabus->assigned |= (1 << isairq);
     dev->isairq[dev->nirqs] = isairq;
-    *p = isabus->irqs[isairq];
+    *p = isa_get_irq(isairq);
     dev->nirqs++;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/isa.h new/qemu-kvm-0.14.1/hw/isa.h
--- old/qemu-kvm-0.14.0/hw/isa.h        2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/isa.h        2011-05-11 15:29:46.000000000 +0200
@@ -26,7 +26,7 @@
 
 ISABus *isa_bus_new(DeviceState *dev);
 void isa_bus_irqs(qemu_irq *irqs);
-qemu_irq isa_reserve_irq(int isairq);
+qemu_irq isa_get_irq(int isairq);
 void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq);
 void isa_init_ioport(ISADevice *dev, uint16_t ioport);
 void isa_init_ioport_range(ISADevice *dev, uint16_t start, uint16_t length);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/lan9118.c 
new/qemu-kvm-0.14.1/hw/lan9118.c
--- old/qemu-kvm-0.14.0/hw/lan9118.c    2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/lan9118.c    2011-05-11 15:29:46.000000000 +0200
@@ -785,6 +785,12 @@
     case MAC_FLOW:
         s->mac_flow = val & 0xffff0000;
         break;
+    case MAC_VLAN1:
+        /* Writing to this register changes a condition for
+         * FrameTooLong bit in rx_status.  Since we do not set
+         * FrameTooLong anyway, just ignore write to this.
+         */
+        break;
     default:
         hw_error("lan9118: Unimplemented MAC register write: %d = 0x%x\n",
                  s->mac_cmd & 0xf, val);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/lsi53c895a.c 
new/qemu-kvm-0.14.1/hw/lsi53c895a.c
--- old/qemu-kvm-0.14.0/hw/lsi53c895a.c 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/lsi53c895a.c 2011-05-11 15:29:46.000000000 +0200
@@ -842,10 +842,29 @@
     return data;
 }
 
+/* Skip the next n bytes during a MSGOUT phase. */
+static void lsi_skip_msgbytes(LSIState *s, unsigned int n)
+{
+    s->dnad += n;
+    s->dbc  -= n;
+}
+
 static void lsi_do_msgout(LSIState *s)
 {
     uint8_t msg;
     int len;
+    uint32_t current_tag;
+    SCSIDevice *current_dev;
+    lsi_request *p, *p_next;
+    int id;
+
+    if (s->current) {
+        current_tag = s->current->tag;
+    } else {
+        current_tag = s->select_tag;
+    }
+    id = (current_tag >> 8) & 0xf;
+    current_dev = s->bus.devs[id];
 
     DPRINTF("MSG out len=%d\n", s->dbc);
     while (s->dbc) {
@@ -869,11 +888,11 @@
             switch (msg) {
             case 1:
                 DPRINTF("SDTR (ignored)\n");
-                s->dbc -= 2;
+                lsi_skip_msgbytes(s, 2);
                 break;
             case 3:
                 DPRINTF("WDTR (ignored)\n");
-                s->dbc -= 1;
+                lsi_skip_msgbytes(s, 1);
                 break;
             default:
                 goto bad;
@@ -891,6 +910,51 @@
             BADF("ORDERED queue not implemented\n");
             s->select_tag |= lsi_get_msgbyte(s) | LSI_TAG_VALID;
             break;
+        case 0x0d:
+            /* The ABORT TAG message clears the current I/O process only. */
+            DPRINTF("MSG: ABORT TAG tag=0x%x\n", current_tag);
+            current_dev->info->cancel_io(current_dev, current_tag);
+            lsi_disconnect(s);
+            break;
+        case 0x06:
+        case 0x0e:
+        case 0x0c:
+            /* The ABORT message clears all I/O processes for the selecting
+               initiator on the specified logical unit of the target. */
+            if (msg == 0x06) {
+                DPRINTF("MSG: ABORT tag=0x%x\n", current_tag);
+            }
+            /* The CLEAR QUEUE message clears all I/O processes for all
+               initiators on the specified logical unit of the target. */
+            if (msg == 0x0e) {
+                DPRINTF("MSG: CLEAR QUEUE tag=0x%x\n", current_tag);
+            }
+            /* The BUS DEVICE RESET message clears all I/O processes for all
+               initiators on all logical units of the target. */
+            if (msg == 0x0c) {
+                DPRINTF("MSG: BUS DEVICE RESET tag=0x%x\n", current_tag);
+            }
+
+            /* clear the current I/O process */
+            current_dev->info->cancel_io(current_dev, current_tag);
+
+            /* As the current implemented devices scsi_disk and scsi_generic
+               only support one LUN, we don't need to keep track of LUNs.
+               Clearing I/O processes for other initiators could be possible
+               for scsi_generic by sending a SG_SCSI_RESET to the /dev/sgX
+               device, but this is currently not implemented (and seems not
+               to be really necessary). So let's simply clear all queued
+               commands for the current device: */
+            id = current_tag & 0x0000ff00;
+            QTAILQ_FOREACH_SAFE(p, &s->queue, next, p_next) {
+                if ((p->tag & 0x0000ff00) == id) {
+                    current_dev->info->cancel_io(current_dev, p->tag);
+                    QTAILQ_REMOVE(&s->queue, p, next);
+                }
+            }
+
+            lsi_disconnect(s);
+            break;
         default:
             if ((msg & 0x80) == 0) {
                 goto bad;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/mips_fulong2e.c 
new/qemu-kvm-0.14.1/hw/mips_fulong2e.c
--- old/qemu-kvm-0.14.0/hw/mips_fulong2e.c      2011-02-22 14:34:38.000000000 
+0100
+++ new/qemu-kvm-0.14.1/hw/mips_fulong2e.c      2011-05-11 15:29:46.000000000 
+0200
@@ -369,7 +369,7 @@
     qdev_init_nofail(eeprom);
 
     /* init other devices */
-    pit = pit_init(0x40, isa_reserve_irq(0));
+    pit = pit_init(0x40, isa_get_irq(0));
     cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1);
     DMA_init(0, cpu_exit_irq);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/mips_malta.c 
new/qemu-kvm-0.14.1/hw/mips_malta.c
--- old/qemu-kvm-0.14.0/hw/mips_malta.c 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/mips_malta.c 2011-05-11 15:29:46.000000000 +0200
@@ -919,7 +919,7 @@
     isa_bus_irqs(i8259);
     pci_piix4_ide_init(pci_bus, hd, piix4_devfn + 1);
     usb_uhci_piix4_init(pci_bus, piix4_devfn + 2);
-    smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100, isa_reserve_irq(9),
+    smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100, isa_get_irq(9),
                           NULL, NULL, 0);
     eeprom_buf = qemu_mallocz(8 * 256); /* XXX: make this persistent */
     for (i = 0; i < 8; i++) {
@@ -930,7 +930,7 @@
         qdev_prop_set_ptr(eeprom, "data", eeprom_buf + (i * 256));
         qdev_init_nofail(eeprom);
     }
-    pit = pit_init(0x40, isa_reserve_irq(0));
+    pit = pit_init(0x40, isa_get_irq(0));
     cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1);
     DMA_init(0, cpu_exit_irq);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/pc.c new/qemu-kvm-0.14.1/hw/pc.c
--- old/qemu-kvm-0.14.0/hw/pc.c 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/pc.c 2011-05-11 15:29:46.000000000 +0200
@@ -1127,12 +1127,11 @@
 
 #ifdef CONFIG_KVM_PIT
     if (kvm_enabled() && kvm_pit_in_kernel())
-       pit = kvm_pit_init(0x40, isa_reserve_irq(0));
+       pit = kvm_pit_init(0x40, isa_get_irq(0));
     else
 #endif
 
-    pit = pit_init(0x40, isa_reserve_irq(0));
-
+    pit = pit_init(0x40, isa_get_irq(0));
     pcspk_init(pit);
 
     for(i = 0; i < MAX_SERIAL_PORTS; i++) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/pc_piix.c 
new/qemu-kvm-0.14.1/hw/pc_piix.c
--- old/qemu-kvm-0.14.0/hw/pc_piix.c    2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/pc_piix.c    2011-05-11 15:29:46.000000000 +0200
@@ -128,7 +128,7 @@
     }
     isa_bus_irqs(isa_irq);
 
-    pc_register_ferr_irq(isa_reserve_irq(13));
+    pc_register_ferr_irq(isa_get_irq(13));
 
     pc_vga_init(pci_enabled? pci_bus: NULL);
 
@@ -184,7 +184,7 @@
         smi_irq = qemu_allocate_irqs(pc_acpi_smi_interrupt, first_cpu, 1);
         /* TODO: Populate SPD eeprom data.  */
         smbus = piix4_pm_init(pci_bus, piix3_devfn + 3, 0xb100,
-                              isa_reserve_irq(9), *cmos_s3, *smi_irq,
+                              isa_get_irq(9), *cmos_s3, *smi_irq,
                               kvm_enabled());
         for (i = 0; i < 8; i++) {
             DeviceState *eeprom;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/pci.c new/qemu-kvm-0.14.1/hw/pci.c
--- old/qemu-kvm-0.14.0/hw/pci.c        2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/pci.c        2011-05-11 15:29:46.000000000 +0200
@@ -29,8 +29,8 @@
 #include "net.h"
 #include "sysemu.h"
 #include "loader.h"
-#include "qemu-kvm.h"
 #include "hw/pc.h"
+#include "kvm.h"
 #include "device-assignment.h"
 #include "qemu-objects.h"
 #include "range.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/ppc_prep.c 
new/qemu-kvm-0.14.1/hw/ppc_prep.c
--- old/qemu-kvm-0.14.0/hw/ppc_prep.c   2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/ppc_prep.c   2011-05-11 15:29:46.000000000 +0200
@@ -690,7 +690,7 @@
         hd[i] = drive_get(IF_IDE, i / MAX_IDE_DEVS, i % MAX_IDE_DEVS);
     }
 
-    for(i = 0; i < 1/*MAX_IDE_BUS*/; i++) {
+    for(i = 0; i < MAX_IDE_BUS; i++) {
         isa_ide_init(ide_iobase[i], ide_iobase2[i], ide_irq[i],
                      hd[2 * i],
                     hd[2 * i + 1]);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/sd.c new/qemu-kvm-0.14.1/hw/sd.c
--- old/qemu-kvm-0.14.0/hw/sd.c 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/sd.c 2011-05-11 15:29:46.000000000 +0200
@@ -1168,6 +1168,7 @@
     case 13:   /* ACMD13: SD_STATUS */
         switch (sd->state) {
         case sd_transfer_state:
+            sd->state = sd_sendingdata_state;
             sd->data_start = 0;
             sd->data_offset = 0;
             return sd_r1;
@@ -1182,6 +1183,7 @@
         case sd_transfer_state:
             *(uint32_t *) sd->data = sd->blk_written;
 
+            sd->state = sd_sendingdata_state;
             sd->data_start = 0;
             sd->data_offset = 0;
             return sd_r1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/vhost.c 
new/qemu-kvm-0.14.1/hw/vhost.c
--- old/qemu-kvm-0.14.0/hw/vhost.c      2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/vhost.c      2011-05-11 15:29:46.000000000 +0200
@@ -47,8 +47,10 @@
         log = __sync_fetch_and_and(from, 0);
         while ((bit = sizeof(log) > sizeof(int) ?
                 ffsll(log) : ffs(log))) {
+            ram_addr_t ram_addr;
             bit -= 1;
-            cpu_physical_memory_set_dirty(addr + bit * VHOST_LOG_PAGE);
+            ram_addr = cpu_get_physical_page_desc(addr + bit * VHOST_LOG_PAGE);
+            cpu_physical_memory_set_dirty(ram_addr);
             log &= ~(0x1ull << bit);
         }
         addr += VHOST_LOG_CHUNK;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/virtio-blk.c 
new/qemu-kvm-0.14.1/hw/virtio-blk.c
--- old/qemu-kvm-0.14.0/hw/virtio-blk.c 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/virtio-blk.c 2011-05-11 15:29:46.000000000 +0200
@@ -290,6 +290,10 @@
         virtio_blk_rw_complete(req, -EIO);
         return;
     }
+    if (req->qiov.size % req->dev->conf->logical_block_size) {
+        virtio_blk_rw_complete(req, -EIO);
+        return;
+    }
 
     if (mrb->num_writes == 32) {
         virtio_submit_multiwrite(req->dev->bs, mrb);
@@ -317,6 +321,10 @@
         virtio_blk_rw_complete(req, -EIO);
         return;
     }
+    if (req->qiov.size % req->dev->conf->logical_block_size) {
+        virtio_blk_rw_complete(req, -EIO);
+        return;
+    }
 
     acb = bdrv_aio_readv(req->dev->bs, sector, &req->qiov,
                          req->qiov.size / BDRV_SECTOR_SIZE,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/virtio-net.c 
new/qemu-kvm-0.14.1/hw/virtio-net.c
--- old/qemu-kvm-0.14.0/hw/virtio-net.c 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/virtio-net.c 2011-05-11 15:29:46.000000000 +0200
@@ -79,7 +79,7 @@
     VirtIONet *n = to_virtio_net(vdev);
     struct virtio_net_config netcfg;
 
-    netcfg.status = lduw_p(&n->status);
+    stw_p(&netcfg.status, n->status);
     memcpy(netcfg.mac, n->mac, ETH_ALEN);
     memcpy(config, &netcfg, sizeof(netcfg));
 }
@@ -678,7 +678,7 @@
     }
 
     if (mhdr) {
-        mhdr->num_buffers = lduw_p(&i);
+        stw_p(&mhdr->num_buffers, i);
     }
 
     virtqueue_flush(n->rx_vq, i);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/virtio-pci.c 
new/qemu-kvm-0.14.1/hw/virtio-pci.c
--- old/qemu-kvm-0.14.0/hw/virtio-pci.c 2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/virtio-pci.c 2011-05-11 15:29:46.000000000 +0200
@@ -160,13 +160,6 @@
     if (proxy->vdev->config_vector != VIRTIO_NO_VECTOR) {
         return msix_vector_use(&proxy->pci_dev, proxy->vdev->config_vector);
     }
-
-    /* Try to find out if the guest has bus master disabled, but is
-       in ready state. Then we have a buggy guest OS. */
-    if ((proxy->vdev->status & VIRTIO_CONFIG_S_DRIVER_OK) &&
-        !(proxy->pci_dev.config[PCI_COMMAND] & PCI_COMMAND_MASTER)) {
-        proxy->flags |= VIRTIO_PCI_FLAG_BUS_MASTER_BUG;
-    }
     return 0;
 }
 
@@ -735,6 +728,12 @@
     VirtIOPCIProxy *proxy = opaque;
 
     if (running) {
+        /* Try to find out if the guest has bus master disabled, but is
+           in ready state. Then we have a buggy guest OS. */
+        if ((proxy->vdev->status & VIRTIO_CONFIG_S_DRIVER_OK) &&
+            !(proxy->pci_dev.config[PCI_COMMAND] & PCI_COMMAND_MASTER)) {
+            proxy->flags |= VIRTIO_PCI_FLAG_BUS_MASTER_BUG;
+        }
         virtio_pci_start_ioeventfd(proxy);
     } else {
         virtio_pci_stop_ioeventfd(proxy);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/hw/virtio.h 
new/qemu-kvm-0.14.1/hw/virtio.h
--- old/qemu-kvm-0.14.0/hw/virtio.h     2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/hw/virtio.h     2011-05-11 15:29:46.000000000 +0200
@@ -92,6 +92,7 @@
     void (*save_queue)(void * opaque, int n, QEMUFile *f);
     int (*load_config)(void * opaque, QEMUFile *f);
     int (*load_queue)(void * opaque, int n, QEMUFile *f);
+    int (*load_done)(void * opaque, QEMUFile *f);
     unsigned (*get_features)(void * opaque);
     bool (*query_guest_notifiers)(void * opaque);
     int (*set_guest_notifiers)(void * opaque, bool assigned);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/net.c new/qemu-kvm-0.14.1/net.c
--- old/qemu-kvm-0.14.0/net.c   2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/net.c   2011-05-11 15:29:46.000000000 +0200
@@ -1025,7 +1025,11 @@
                 .name = "vhostfd",
                 .type = QEMU_OPT_STRING,
                 .help = "file descriptor of an already opened vhost net 
device",
-            },
+            }, {
+                .name = "vhostforce",
+                .type = QEMU_OPT_BOOL,
+                .help = "force vhost on for non-MSIX virtio guests",
+        },
 #endif /* _WIN32 */
             { /* end of list */ }
         },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/ui/vnc-enc-tight.c 
new/qemu-kvm-0.14.1/ui/vnc-enc-tight.c
--- old/qemu-kvm-0.14.0/ui/vnc-enc-tight.c      2011-02-22 14:34:38.000000000 
+0100
+++ new/qemu-kvm-0.14.1/ui/vnc-enc-tight.c      2011-05-11 15:29:46.000000000 
+0200
@@ -848,8 +848,8 @@
     zstream->avail_in = vs->tight.tight.offset;
     zstream->next_out = vs->tight.zlib.buffer + vs->tight.zlib.offset;
     zstream->avail_out = vs->tight.zlib.capacity - vs->tight.zlib.offset;
+    previous_out = zstream->avail_out;
     zstream->data_type = Z_BINARY;
-    previous_out = zstream->total_out;
 
     /* start encoding */
     if (deflate(zstream, Z_SYNC_FLUSH) != Z_OK) {
@@ -858,7 +858,8 @@
     }
 
     vs->tight.zlib.offset = vs->tight.zlib.capacity - zstream->avail_out;
-    bytes = zstream->total_out - previous_out;
+    /* ...how much data has actually been produced by deflate() */
+    bytes = previous_out - zstream->avail_out;
 
     tight_send_compact_size(vs, bytes);
     vnc_write(vs, vs->tight.zlib.buffer, bytes);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/ui/vnc-enc-zlib.c 
new/qemu-kvm-0.14.1/ui/vnc-enc-zlib.c
--- old/qemu-kvm-0.14.0/ui/vnc-enc-zlib.c       2011-02-22 14:34:38.000000000 
+0100
+++ new/qemu-kvm-0.14.1/ui/vnc-enc-zlib.c       2011-05-11 15:29:46.000000000 
+0200
@@ -103,8 +103,8 @@
     zstream->avail_in = vs->zlib.zlib.offset;
     zstream->next_out = vs->output.buffer + vs->output.offset;
     zstream->avail_out = vs->output.capacity - vs->output.offset;
+    previous_out = zstream->avail_out;
     zstream->data_type = Z_BINARY;
-    previous_out = zstream->total_out;
 
     // start encoding
     if (deflate(zstream, Z_SYNC_FLUSH) != Z_OK) {
@@ -113,7 +113,7 @@
     }
 
     vs->output.offset = vs->output.capacity - zstream->avail_out;
-    return zstream->total_out - previous_out;
+    return previous_out - zstream->avail_out;
 }
 
 int vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/ui/vnc.c new/qemu-kvm-0.14.1/ui/vnc.c
--- old/qemu-kvm-0.14.0/ui/vnc.c        2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/ui/vnc.c        2011-05-11 15:29:46.000000000 +0200
@@ -2349,6 +2349,7 @@
     vd->timer_interval = VNC_REFRESH_INTERVAL_BASE;
     if (vd->timer == NULL && !QTAILQ_EMPTY(&vd->clients)) {
         vd->timer = qemu_new_timer(rt_clock, vnc_refresh, vd);
+        vnc_dpy_resize(vd->ds);
         vnc_refresh(vd);
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qemu-kvm-0.14.0/vl.c new/qemu-kvm-0.14.1/vl.c
--- old/qemu-kvm-0.14.0/vl.c    2011-02-22 14:34:38.000000000 +0100
+++ new/qemu-kvm-0.14.1/vl.c    2011-05-11 15:29:46.000000000 +0200
@@ -2090,7 +2090,9 @@
                           HD_OPTS);
                 break;
             case QEMU_OPTION_drive:
-                drive_def(optarg);
+                if (drive_def(optarg) == NULL) {
+                    exit(1);
+                }
                break;
             case QEMU_OPTION_set:
                 if (qemu_set_option(optarg) != 0)




++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to