diff options
author | adam <adam@pkgsrc.org> | 2014-08-17 08:57:01 +0000 |
---|---|---|
committer | adam <adam@pkgsrc.org> | 2014-08-17 08:57:01 +0000 |
commit | 7ad253518abbc78c232e9d48dedd084e80c6af76 (patch) | |
tree | 9cf2559131dbc4666754e5e654357872af1bb783 /emulators | |
parent | 7baae4ee45aefcc355ad3b6505cff4bfadba3805 (diff) | |
download | pkgsrc-7ad253518abbc78c232e9d48dedd084e80c6af76.tar.gz |
Changes 2.1.0:
Incompatible changes:
---------------------
The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.
On x86, migration from QEMU 1.7 to QEMU 2.0 was broken if the guest had PCI bridges or for some number of CPUs (12, 13, 14, 54, 55, 56, 97, 98, 99, 139, 140) are the only ones). QEMU 2.1 fixes this, so that migration from QEMU 1.7 to QEMU 2.1 should always work. However, the fix breaks the following scenarios instead:
migration from QEMU 2.0 to QEMU 2.1 with PCI bridges and machine types pc-i440fx-1.7/pc-i440fx-2.0
migration from QEMU 2.0 to QEMU 2.1 with the aforementioned number of CPUs and machine type pc-i440fx-1.7
Future incompatible changes:
----------------------------
Three options are using different names on the command line and in configuration file. In particular:
The "acpi" configuration file section matches command-line option "acpitable";
The "boot-opts" configuration file section matches command-line option "boot";
The "smp-opts" configuration file section matches command-line option "smp".
Starting with QEMU xyz.jkl, -readconfig will standardize on the name for the command line option.
ARM
---
Firmware can be passed to the vexpress machine via -bios.
Improvements to Allwinner SoC emulation.
AArch64 TCG system emulation support.
AArch64 SHA and Crypto instruction support.
LM32
----
Support for semihosting.
Microblaze
----------
Support for u-boot initrd images.
MIPS
----
Support for KVM in the Malta board.
more...
Diffstat (limited to 'emulators')
-rw-r--r-- | emulators/qemu/Makefile | 5 | ||||
-rw-r--r-- | emulators/qemu/PLIST | 3 | ||||
-rw-r--r-- | emulators/qemu/PLIST.Linux | 8 | ||||
-rw-r--r-- | emulators/qemu/distinfo | 13 | ||||
-rw-r--r-- | emulators/qemu/patches/patch-configure | 14 | ||||
-rw-r--r-- | emulators/qemu/patches/patch-hw_char_serial.c | 86 | ||||
-rw-r--r-- | emulators/qemu/patches/patch-hw_virtio_virtio.c | 69 | ||||
-rw-r--r-- | emulators/qemu/patches/patch-qemu-char.c | 29 | ||||
-rw-r--r-- | emulators/qemu/patches/patch-util_hbitmap.c | 32 |
9 files changed, 27 insertions, 232 deletions
diff --git a/emulators/qemu/Makefile b/emulators/qemu/Makefile index 5b13dda125e..c2ca2359178 100644 --- a/emulators/qemu/Makefile +++ b/emulators/qemu/Makefile @@ -1,7 +1,6 @@ -# $NetBSD: Makefile,v 1.130 2014/07/11 19:15:08 gson Exp $ +# $NetBSD: Makefile,v 1.131 2014/08/17 08:57:01 adam Exp $ -DISTNAME= qemu-2.0.0 -PKGREVISION= 4 +DISTNAME= qemu-2.1.0 CATEGORIES= emulators MASTER_SITES= http://wiki.qemu.org/download/ EXTRACT_SUFX= .tar.bz2 diff --git a/emulators/qemu/PLIST b/emulators/qemu/PLIST index 448968184b0..b074320bf7d 100644 --- a/emulators/qemu/PLIST +++ b/emulators/qemu/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.38 2014/04/18 15:50:16 adam Exp $ +@comment $NetBSD: PLIST,v 1.39 2014/08/17 08:57:01 adam Exp $ ${PLIST.alpha}bin/qemu-alpha ${PLIST.arm}bin/qemu-arm ${PLIST.armeb}bin/qemu-armeb @@ -133,6 +133,7 @@ share/qemu/s390-zipl.rom share/qemu/sgabios.bin share/qemu/slof.bin share/qemu/spapr-rtas.bin +share/qemu/u-boot.e500 share/qemu/vgabios-cirrus.bin share/qemu/vgabios-qxl.bin share/qemu/vgabios-stdvga.bin diff --git a/emulators/qemu/PLIST.Linux b/emulators/qemu/PLIST.Linux index 1d1ec730617..b903a3da3f0 100644 --- a/emulators/qemu/PLIST.Linux +++ b/emulators/qemu/PLIST.Linux @@ -1,6 +1,6 @@ -@comment $NetBSD: PLIST.Linux,v 1.2 2013/10/20 17:43:06 joerg Exp $ -libexec/qemu-bridge-helper -bin/qemu-mipsn32 -bin/qemu-mipsn32el +@comment $NetBSD: PLIST.Linux,v 1.3 2014/08/17 08:57:01 adam Exp $ bin/qemu-mips64 bin/qemu-mips64el +bin/qemu-mipsn32 +bin/qemu-mipsn32el +libexec/qemu-bridge-helper diff --git a/emulators/qemu/distinfo b/emulators/qemu/distinfo index e1eedc9024f..ebc629b5897 100644 --- a/emulators/qemu/distinfo +++ b/emulators/qemu/distinfo @@ -1,19 +1,16 @@ -$NetBSD: distinfo,v 1.96 2014/07/11 19:15:08 gson Exp $ +$NetBSD: distinfo,v 1.97 2014/08/17 08:57:01 adam Exp $ -SHA1 (qemu-2.0.0.tar.bz2) = cc24a60a93ba697057a67b6a7224b95627eaf1a6 -RMD160 (qemu-2.0.0.tar.bz2) = ecd05e036431c14930ae2455a032495dd7ebaf85 -Size (qemu-2.0.0.tar.bz2) = 12839647 bytes +SHA1 (qemu-2.1.0.tar.bz2) = b2829491e4c2f3d32f7bc2860c3a19fb31f5e989 +RMD160 (qemu-2.1.0.tar.bz2) = 69f412b2813e0683d753efad39c70a799de2282f +Size (qemu-2.1.0.tar.bz2) = 23563306 bytes +SHA1 (patch-configure) = f2535bd3c2513c9474bef83e2d29539cc11e0c66 SHA1 (patch-ef) = 6e57de87f91067e8a9a1388c91133a31b3582b3a SHA1 (patch-et) = 036e1a254ce40df635dfb6107d2707879467e127 -SHA1 (patch-hw_char_serial.c) = fb6b12afc98bbcc9fa5d6cc5d43de3b28be08d88 SHA1 (patch-hw_display_omap__dss.c) = 6b13242f28e32346bc70548c216c578d98fd3420 SHA1 (patch-hw_net_etraxfs__eth.c) = e5dd1661d60dbcd27b332403e0843500ba9544bc SHA1 (patch-hw_net_xilinx__axienet.c) = ebcd2676d64ce6f31e4a8c976d4fdf530ad5e8b7 SHA1 (patch-hw_ppc_mac__newworld.c) = 9a0ec3ba0b6da2879fdaba6a7937fb16a02685f5 SHA1 (patch-hw_ppc_mac__oldworld.c) = 46322c77c87be6d517c43466325c344db99cd463 -SHA1 (patch-hw_virtio_virtio.c) = 9aa4553a4eda81fb014b116c2207ec4b59265fca SHA1 (patch-memory.c) = 14df9c835ca318fc79a8d3a46bb94d2f229277cc -SHA1 (patch-qemu-char.c) = 8567c5d763cab574a888bb00d150bc5e94facbd7 SHA1 (patch-slirp_tcp__subr.c) = cfc8289384fa987289e32b64532c13a83a890820 SHA1 (patch-user-exec.c) = eb83832c7c9e5f69313f8cad2c2f77b304072556 -SHA1 (patch-util_hbitmap.c) = 7ca62f7f7a82526007d034dfe7d5e2d4ff96f900 diff --git a/emulators/qemu/patches/patch-configure b/emulators/qemu/patches/patch-configure new file mode 100644 index 00000000000..1a528fb4842 --- /dev/null +++ b/emulators/qemu/patches/patch-configure @@ -0,0 +1,14 @@ +$NetBSD: patch-configure,v 1.4 2014/08/17 08:57:01 adam Exp $ + +L2TPV3 works on Linux; don't turn it on for other platforms. + +--- configure.orig 2014-08-17 08:35:26.000000000 +0000 ++++ configure +@@ -1722,6 +1722,7 @@ fi + # L2TPV3 probe + + cat > $TMPC <<EOF ++#include <linux/ip.h> + #include <sys/socket.h> + int main(void) { return sizeof(struct mmsghdr); } + EOF diff --git a/emulators/qemu/patches/patch-hw_char_serial.c b/emulators/qemu/patches/patch-hw_char_serial.c deleted file mode 100644 index f268a0b9525..00000000000 --- a/emulators/qemu/patches/patch-hw_char_serial.c +++ /dev/null @@ -1,86 +0,0 @@ -$NetBSD: patch-hw_char_serial.c,v 1.1 2014/07/11 19:15:08 gson Exp $ - -Part of fix for qemu bug 1335444, aka PR 48071. From Kirill Batuzov, -backported to 2.0 by gson. - ---- hw/char/serial.c.orig 2014-04-17 13:44:44.000000000 +0000 -+++ hw/char/serial.c -@@ -223,37 +223,42 @@ static gboolean serial_xmit(GIOChannel * - { - SerialState *s = opaque; - -- if (s->tsr_retry <= 0) { -- if (s->fcr & UART_FCR_FE) { -- if (fifo8_is_empty(&s->xmit_fifo)) { -+ do { -+ if (s->tsr_retry <= 0) { -+ if (s->fcr & UART_FCR_FE) { -+ if (fifo8_is_empty(&s->xmit_fifo)) { -+ return FALSE; -+ } -+ s->tsr = fifo8_pop(&s->xmit_fifo); -+ if (!s->xmit_fifo.num) { -+ s->lsr |= UART_LSR_THRE; -+ } -+ } else if ((s->lsr & UART_LSR_THRE)) { - return FALSE; -- } -- s->tsr = fifo8_pop(&s->xmit_fifo); -- if (!s->xmit_fifo.num) { -+ } else { -+ s->tsr = s->thr; - s->lsr |= UART_LSR_THRE; -+ s->lsr &= ~UART_LSR_TEMT; - } -- } else if ((s->lsr & UART_LSR_THRE)) { -- return FALSE; -- } else { -- s->tsr = s->thr; -- s->lsr |= UART_LSR_THRE; -- s->lsr &= ~UART_LSR_TEMT; - } -- } - -- if (s->mcr & UART_MCR_LOOP) { -- /* in loopback mode, say that we just received a char */ -- serial_receive1(s, &s->tsr, 1); -- } else if (qemu_chr_fe_write(s->chr, &s->tsr, 1) != 1) { -- if (s->tsr_retry >= 0 && s->tsr_retry < MAX_XMIT_RETRY && -- qemu_chr_fe_add_watch(s->chr, G_IO_OUT, serial_xmit, s) > 0) { -- s->tsr_retry++; -- return FALSE; -+ if (s->mcr & UART_MCR_LOOP) { -+ /* in loopback mode, say that we just received a char */ -+ serial_receive1(s, &s->tsr, 1); -+ } else if (qemu_chr_fe_write(s->chr, &s->tsr, 1) != 1) { -+ if (s->tsr_retry >= 0 && s->tsr_retry < MAX_XMIT_RETRY && -+ qemu_chr_fe_add_watch(s->chr, G_IO_OUT|G_IO_HUP, -+ serial_xmit, s) > 0) { -+ s->tsr_retry++; -+ return FALSE; -+ } -+ s->tsr_retry = 0; -+ } else { -+ s->tsr_retry = 0; - } -- s->tsr_retry = 0; -- } else { -- s->tsr_retry = 0; -- } -+ /* Transmit another byte if it is already available. It is only -+ possible when FIFO is enabled and not empty. */ -+ } while ((s->fcr & UART_FCR_FE) && !fifo8_is_empty(&s->xmit_fifo)); - - s->last_xmit_ts = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); - -@@ -293,7 +298,9 @@ static void serial_ioport_write(void *op - s->thr_ipending = 0; - s->lsr &= ~UART_LSR_THRE; - serial_update_irq(s); -- serial_xmit(NULL, G_IO_OUT, s); -+ if (s->tsr_retry <= 0) { -+ serial_xmit(NULL, G_IO_OUT, s); -+ } - } - break; - case 1: diff --git a/emulators/qemu/patches/patch-hw_virtio_virtio.c b/emulators/qemu/patches/patch-hw_virtio_virtio.c deleted file mode 100644 index 94851ead760..00000000000 --- a/emulators/qemu/patches/patch-hw_virtio_virtio.c +++ /dev/null @@ -1,69 +0,0 @@ -$NetBSD: patch-hw_virtio_virtio.c,v 1.1 2014/05/15 12:28:13 wiz Exp $ - -Fixes for -http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-4151 -http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-4535 -http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-4536 -http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-6399 -http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0182 -from upstream git. - ---- hw/virtio/virtio.c.orig 2014-04-17 13:44:44.000000000 +0000 -+++ hw/virtio/virtio.c -@@ -430,6 +430,12 @@ void virtqueue_map_sg(struct iovec *sg, - unsigned int i; - hwaddr len; - -+ if (num_sg >= VIRTQUEUE_MAX_SIZE) { -+ error_report("virtio: map attempt out of bounds: %zd > %d", -+ num_sg, VIRTQUEUE_MAX_SIZE); -+ exit(1); -+ } -+ - for (i = 0; i < num_sg; i++) { - len = sg[i].iov_len; - sg[i].iov_base = cpu_physical_memory_map(addr[i], &len, is_write); -@@ -891,7 +897,9 @@ int virtio_set_features(VirtIODevice *vd - - int virtio_load(VirtIODevice *vdev, QEMUFile *f) - { -- int num, i, ret; -+ int i, ret; -+ int32_t config_len; -+ uint32_t num; - uint32_t features; - uint32_t supported_features; - BusState *qbus = qdev_get_parent_bus(DEVICE(vdev)); -@@ -906,6 +914,9 @@ int virtio_load(VirtIODevice *vdev, QEMU - qemu_get_8s(f, &vdev->status); - qemu_get_8s(f, &vdev->isr); - qemu_get_be16s(f, &vdev->queue_sel); -+ if (vdev->queue_sel >= VIRTIO_PCI_QUEUE_MAX) { -+ return -1; -+ } - qemu_get_be32s(f, &features); - - if (virtio_set_features(vdev, features) < 0) { -@@ -914,11 +925,21 @@ int virtio_load(VirtIODevice *vdev, QEMU - features, supported_features); - return -1; - } -- vdev->config_len = qemu_get_be32(f); -+ config_len = qemu_get_be32(f); -+ if (config_len != vdev->config_len) { -+ error_report("Unexpected config length 0x%x. Expected 0x%zx", -+ config_len, vdev->config_len); -+ return -1; -+ } - qemu_get_buffer(f, vdev->config, vdev->config_len); - - num = qemu_get_be32(f); - -+ if (num > VIRTIO_PCI_QUEUE_MAX) { -+ error_report("Invalid number of PCI queues: 0x%x", num); -+ return -1; -+ } -+ - for (i = 0; i < num; i++) { - vdev->vq[i].vring.num = qemu_get_be32(f); - if (k->has_variable_vring_alignment) { diff --git a/emulators/qemu/patches/patch-qemu-char.c b/emulators/qemu/patches/patch-qemu-char.c deleted file mode 100644 index 67d4f903063..00000000000 --- a/emulators/qemu/patches/patch-qemu-char.c +++ /dev/null @@ -1,29 +0,0 @@ -$NetBSD: patch-qemu-char.c,v 1.1 2014/07/11 19:15:08 gson Exp $ - -Part of fix for qemu bug 1335444, aka PR 48071. From Kirill Batuzov. - ---- qemu-char.c.orig 2014-04-17 13:44:45.000000000 +0000 -+++ qemu-char.c -@@ -519,6 +519,12 @@ static Notifier muxes_realize_notify = { - .notify = muxes_realize_done, - }; - -+static GSource *mux_chr_add_watch(CharDriverState *s, GIOCondition cond) -+{ -+ MuxDriver *d = s->opaque; -+ return d->drv->chr_add_watch(d->drv, cond); -+} -+ - static CharDriverState *qemu_chr_open_mux(CharDriverState *drv) - { - CharDriverState *chr; -@@ -535,6 +541,9 @@ static CharDriverState *qemu_chr_open_mu - chr->chr_accept_input = mux_chr_accept_input; - /* Frontend guest-open / -close notification is not support with muxes */ - chr->chr_set_fe_open = NULL; -+ if (drv->chr_add_watch) { -+ chr->chr_add_watch = mux_chr_add_watch; -+ } - /* only default to opened state if we've realized the initial - * set of muxes - */ diff --git a/emulators/qemu/patches/patch-util_hbitmap.c b/emulators/qemu/patches/patch-util_hbitmap.c deleted file mode 100644 index 23cbc6e1ede..00000000000 --- a/emulators/qemu/patches/patch-util_hbitmap.c +++ /dev/null @@ -1,32 +0,0 @@ -$NetBSD: patch-util_hbitmap.c,v 1.3 2014/01/15 18:26:20 wiz Exp $ - -Avoid conflicts against popcountl(3) in NetBSD's libc. - ---- util/hbitmap.c.orig 2013-11-27 22:15:55.000000000 +0000 -+++ util/hbitmap.c -@@ -92,7 +92,7 @@ struct HBitmap { - unsigned long *levels[HBITMAP_LEVELS]; - }; - --static inline int popcountl(unsigned long l) -+static inline int qemu_popcountl(unsigned long l) - { - return BITS_PER_LONG == 32 ? ctpop32(l) : ctpop64(l); - } -@@ -200,14 +200,14 @@ static uint64_t hb_count_between(HBitmap - if (pos >= (end >> BITS_PER_LEVEL)) { - break; - } -- count += popcountl(cur); -+ count += qemu_popcountl(cur); - } - - if (pos == (end >> BITS_PER_LEVEL)) { - /* Drop bits representing the END-th and subsequent items. */ - int bit = end & (BITS_PER_LONG - 1); - cur &= (1UL << bit) - 1; -- count += popcountl(cur); -+ count += qemu_popcountl(cur); - } - - return count; |