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]
