diff options
author | 2010-11-02 16:29:19 +0000 | |
---|---|---|
committer | 2010-11-02 16:29:19 +0000 | |
commit | a667be1b0affae7e13ea2072ee1b980b00ff25e5 (patch) | |
tree | 83ab8a0a3bb1c546985010f54eab4542029b0742 /app-emulation/qemu-kvm/files | |
parent | Remove mescalinum from metadata.xml (diff) | |
download | historical-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.patch | 20 | ||||
-rw-r--r-- | app-emulation/qemu-kvm/files/qemu-kvm-guest-hang-on-usb-add.patch | 100 |
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 + |