summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org>2010-11-02 16:29:19 +0000
committerJorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org>2010-11-02 16:29:19 +0000
commita667be1b0affae7e13ea2072ee1b980b00ff25e5 (patch)
tree83ab8a0a3bb1c546985010f54eab4542029b0742 /app-emulation/qemu-kvm/files
parentRemove mescalinum from metadata.xml (diff)
downloadhistorical-a667be1b0affae7e13ea2072ee1b980b00ff25e5.tar.gz
historical-a667be1b0affae7e13ea2072ee1b980b00ff25e5.tar.bz2
historical-a667be1b0affae7e13ea2072ee1b980b00ff25e5.zip
Synced the qemu-kvm-0.13.0-r1 ebuild with qemu-kvm-9999 ebuild.
Added missing jpeg and png use flags. Dropped the non-existent kvm-trace use flag - fixes bug 343317. Moved some checks from pkg_setup to src_configure. Applied the fix to the $(prefix)/etc issue. Dropped unused qemu-kvm-0.12.1-kvm_save_mpstate-workaround.patch file - fixes bug 340727. Included patch file to fix issues with usb, bug 337988 , but won't use it until upstream commits it to the git tree or gives an ok. Dropped old version. Package-Manager: portage-2.2.0_alpha3/cvs/Linux x86_64
Diffstat (limited to 'app-emulation/qemu-kvm/files')
-rw-r--r--app-emulation/qemu-kvm/files/qemu-kvm-0.12.1-kvm_save_mpstate-workaround.patch20
-rw-r--r--app-emulation/qemu-kvm/files/qemu-kvm-guest-hang-on-usb-add.patch100
2 files changed, 100 insertions, 20 deletions
diff --git a/app-emulation/qemu-kvm/files/qemu-kvm-0.12.1-kvm_save_mpstate-workaround.patch b/app-emulation/qemu-kvm/files/qemu-kvm-0.12.1-kvm_save_mpstate-workaround.patch
deleted file mode 100644
index 3fb87f3ddac0..000000000000
--- a/app-emulation/qemu-kvm/files/qemu-kvm-0.12.1-kvm_save_mpstate-workaround.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- monitor.c 2009-12-20 17:21:40.000000000 +0100
-+++ monitor.c.new 2009-12-21 11:47:30.000000000 +0100
-@@ -677,7 +677,7 @@
- mon_set_cpu(0);
- }
- cpu_synchronize_state(cur_mon->mon_cpu);
-- kvm_save_mpstate(cur_mon->mon_cpu);
-+// kvm_save_mpstate(cur_mon->mon_cpu);
- return cur_mon->mon_cpu;
- }
-
-@@ -780,7 +780,7 @@
- QObject *obj;
-
- cpu_synchronize_state(env);
-- kvm_save_mpstate(env);
-+// kvm_save_mpstate(env);
-
- obj = qobject_from_jsonf("{ 'CPU': %d, 'current': %i, 'halted': %i }",
- env->cpu_index, env == mon->mon_cpu,
diff --git a/app-emulation/qemu-kvm/files/qemu-kvm-guest-hang-on-usb-add.patch b/app-emulation/qemu-kvm/files/qemu-kvm-guest-hang-on-usb-add.patch
new file mode 100644
index 000000000000..3f2abefe879c
--- /dev/null
+++ b/app-emulation/qemu-kvm/files/qemu-kvm-guest-hang-on-usb-add.patch
@@ -0,0 +1,100 @@
+From 485b75728884a052b74d5458199ad45f0acbf190 Mon Sep 17 00:00:00 2001
+From: Timothy Jones <one.timothy.jones@gmail.com>
+Date: Mon, 28 Jun 2010 10:38:18 -0400
+Subject: [PATCH v2] Guest OS hangs on usb_add
+
+This is a small patch to sligtly "intelligentify" usb device and
+config descriptor parsing and to handle bug with certain usb
+device (URC MX-950) reporting device desriptor length as 0x18
+instead of 18 with added vendor_id/product_id check
+---
+ hw/usb.h | 5 +++++
+ usb-linux.c | 37 ++++++++++++++++++++++---------------
+ 2 files changed, 27 insertions(+), 15 deletions(-)
+
+diff --git a/hw/usb.h b/hw/usb.h
+index 00d2802..5c3528f 100644
+--- a/hw/usb.h
++++ b/hw/usb.h
+@@ -117,6 +117,11 @@
+ #define USB_DT_INTERFACE 0x04
+ #define USB_DT_ENDPOINT 0x05
+
++#define USB_DT_DEVICE_LEN 18
++#define USB_DT_CONFIG_LEN 9
++#define USB_DT_INTERFACE_LEN 9
++#define USB_DT_ENDPOINT_LEN 7
++
+ #define USB_ENDPOINT_XFER_CONTROL 0
+ #define USB_ENDPOINT_XFER_ISOC 1
+ #define USB_ENDPOINT_XFER_BULK 2
+diff --git a/usb-linux.c b/usb-linux.c
+index 88273ff..2ac6562 100644
+--- a/usb-linux.c
++++ b/usb-linux.c
+@@ -288,7 +288,7 @@ static void async_cancel(USBPacket *unused, void *opaque)
+
+ static int usb_host_claim_interfaces(USBHostDevice *dev, int configuration)
+ {
+- int dev_descr_len, config_descr_len;
++ int dev_descr_len, config_descr_total_len;
+ int interface, nb_interfaces;
+ int ret, i;
+
+@@ -297,32 +297,39 @@ static int usb_host_claim_interfaces(USBHostDevice *dev, int configuration)
+
+ DPRINTF("husb: claiming interfaces. config %d\n", configuration);
+
+- i = 0;
+ dev_descr_len = dev->descr[0];
+- if (dev_descr_len > dev->descr_len) {
++ if (dev_descr_len == 0x18 && dev->descr[ 8] == 0x47 && dev->descr[ 9] == 0x46
++ && dev->descr[10] == 0x00 && dev->descr[11] == 0x30)
++ dev_descr_len = USB_DT_DEVICE_LEN; /* for buggy MX-950 remote reporting len in hex */
++
++ if (dev_descr_len > dev->descr_len || dev_descr_len < USB_DT_DEVICE_LEN || dev->descr[1] != USB_DT_DEVICE) {
++ fprintf(stderr, "husb: invalid device descriptor\n");
+ goto fail;
+ }
+
+- i += dev_descr_len;
+- while (i < dev->descr_len) {
++ for (i = dev_descr_len; i < dev->descr_len; ) {
+ DPRINTF("husb: i is %d, descr_len is %d, dl %d, dt %d\n",
+ i, dev->descr_len,
+ dev->descr[i], dev->descr[i+1]);
+
+- if (dev->descr[i+1] != USB_DT_CONFIG) {
+- i += dev->descr[i];
+- continue;
++ if (dev->descr[i] < 2) {
++ fprintf(stderr, "husb: invalid descriptor\n");
++ goto fail;
+ }
+- config_descr_len = dev->descr[i];
++ if (dev->descr[i+1] == USB_DT_CONFIG) {
++ config_descr_total_len = dev->descr[i+2] + (dev->descr[i+3] << 8);
+
+- printf("husb: config #%d need %d\n", dev->descr[i + 5], configuration);
++ printf("husb: config #%d need %d\n", dev->descr[i + 5], configuration);
+
+- if (configuration < 0 || configuration == dev->descr[i + 5]) {
+- configuration = dev->descr[i + 5];
+- break;
+- }
++ if (configuration < 0 || configuration == dev->descr[i + 5]) {
++ configuration = dev->descr[i + 5];
++ break;
++ }
+
+- i += config_descr_len;
++ i += config_descr_total_len;
++ }
++ else
++ i += dev->descr[i];
+ }
+
+ if (i >= dev->descr_len) {
+--
+1.7.1
+