* [Qemu-devel] [PATCH 01/26] hw/9pfs: Fix segfault with 9p2000.u
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 02/26] hw/9pfs: use O_NOFOLLOW for mapped readlink operation Michael Roth
` (29 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
When guest tries to chmod a block or char device file over 9pfs,
the qemu process segfaults. With 9p2000.u protocol we use wstat to
change mode bits and client don't send extension information for
chmod. We need to check for size field to check whether extension
info is present or not.
Reported-by: Michael Tokarev <mjt@tls.msk.ru>
Acked-by: Michael Tokarev <mjt@tls.msk.ru>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
(cherry picked from commit c7e587b73ebac05943df78f5f37d80d32ff47d3d)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/9pfs/virtio-9p.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/9pfs/virtio-9p.c b/hw/9pfs/virtio-9p.c
index 296f66f..8cbb8ae 100644
--- a/hw/9pfs/virtio-9p.c
+++ b/hw/9pfs/virtio-9p.c
@@ -658,7 +658,7 @@ static mode_t v9mode_to_mode(uint32_t mode, V9fsString *extension)
ret |= S_IFIFO;
}
if (mode & P9_STAT_MODE_DEVICE) {
- if (extension && extension->data[0] == 'c') {
+ if (extension->size && extension->data[0] == 'c') {
ret |= S_IFCHR;
} else {
ret |= S_IFBLK;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 02/26] hw/9pfs: use O_NOFOLLOW for mapped readlink operation
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 01/26] hw/9pfs: Fix segfault with 9p2000.u Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 03/26] rtl8139: flush queued packets when RxBufPtr is written Michael Roth
` (28 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
With mapped security models like mapped-xattr and mapped-file, we save the
symlink target as file contents. Now if we ever expose a normal directory
with mapped security model and find real symlinks in export path, never
follow them and return proper error.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
(cherry picked from commit aed858ce10ef09c7bdf03f73e75e772f567c74cd)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/9pfs/virtio-9p-local.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/9pfs/virtio-9p-local.c b/hw/9pfs/virtio-9p-local.c
index 6ece6f7..87aa75d 100644
--- a/hw/9pfs/virtio-9p-local.c
+++ b/hw/9pfs/virtio-9p-local.c
@@ -284,7 +284,7 @@ static ssize_t local_readlink(FsContext *fs_ctx, V9fsPath *fs_path,
if ((fs_ctx->export_flags & V9FS_SM_MAPPED) ||
(fs_ctx->export_flags & V9FS_SM_MAPPED_FILE)) {
int fd;
- fd = open(rpath(fs_ctx, path, buffer), O_RDONLY);
+ fd = open(rpath(fs_ctx, path, buffer), O_RDONLY | O_NOFOLLOW);
if (fd == -1) {
return -1;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 03/26] rtl8139: flush queued packets when RxBufPtr is written
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 01/26] hw/9pfs: Fix segfault with 9p2000.u Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 02/26] hw/9pfs: use O_NOFOLLOW for mapped readlink operation Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 04/26] qom/object: Don't poll cast cache for NULL objects Michael Roth
` (27 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Stefan Hajnoczi <stefanha@redhat.com>
Net queues support efficient "receive disable". For example, tap's file
descriptor will not be polled while its peer has receive disabled. This
saves CPU cycles for needlessly copying and then dropping packets which
the peer cannot receive.
rtl8139 is missing the qemu_flush_queued_packets() call that wakes the
queue up when receive becomes possible again.
As a result, the Windows 7 guest driver reaches a state where the
rtl8139 cannot receive packets. The driver has actually refilled the
receive buffer but we never resume reception.
The bug can be reproduced by running a large FTP 'get' inside a Windows
7 guest:
$ qemu -netdev tap,id=tap0,...
-device rtl8139,netdev=tap0
The Linux guest driver does not trigger the bug, probably due to a
different buffer management strategy.
Reported-by: Oliver Francke <oliver.francke@filoo.de>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
(cherry picked from commit 00b7ade807b5ce6779ddd86ce29c5521ec5c529a)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/net/rtl8139.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c
index 9369507..7993f9f 100644
--- a/hw/net/rtl8139.c
+++ b/hw/net/rtl8139.c
@@ -2575,6 +2575,9 @@ static void rtl8139_RxBufPtr_write(RTL8139State *s, uint32_t val)
/* this value is off by 16 */
s->RxBufPtr = MOD2(val + 0x10, s->RxBufferSize);
+ /* more buffer space may be available so try to receive */
+ qemu_flush_queued_packets(qemu_get_queue(s->nic));
+
DPRINTF(" CAPR write: rx buffer length %d head 0x%04x read 0x%04x\n",
s->RxBufferSize, s->RxBufAddr, s->RxBufPtr);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 04/26] qom/object: Don't poll cast cache for NULL objects
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (2 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 03/26] rtl8139: flush queued packets when RxBufPtr is written Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 05/26] xen: simplify xen_enabled Michael Roth
` (26 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
object_dynamic_cast_assert used to be tolerant of NULL objects and not
assert. It's clear from the implementation that this is the expected
behavior.
The preceding check of the cast cache dereferences obj however causing
a segfault. Fix by conditionalizing the cast cache logic on obj being
non-null.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
Message-id: 8e2bef6a55753869c50bfa32226f7fcf0439ca62.1369183592.git.peter.crosthwaite@xilinx.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit 95916abcf428fb03644468c7fbce64356c6483c0)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
qom/object.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/qom/object.c b/qom/object.c
index ec88231..803b94b 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -442,7 +442,7 @@ Object *object_dynamic_cast_assert(Object *obj, const char *typename,
int i;
Object *inst;
- for (i = 0; i < OBJECT_CLASS_CAST_CACHE; i++) {
+ for (i = 0; obj && i < OBJECT_CLASS_CAST_CACHE; i++) {
if (obj->class->cast_cache[i] == typename) {
goto out;
}
@@ -458,7 +458,7 @@ Object *object_dynamic_cast_assert(Object *obj, const char *typename,
assert(obj == inst);
- if (obj == inst) {
+ if (obj && obj == inst) {
for (i = 1; i < OBJECT_CLASS_CAST_CACHE; i++) {
obj->class->cast_cache[i - 1] = obj->class->cast_cache[i];
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 05/26] xen: simplify xen_enabled
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (3 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 04/26] qom/object: Don't poll cast cache for NULL objects Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 06/26] main_loop: do not set nonblocking if xen_enabled() Michael Roth
` (25 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
No need for preprocessor conditionals in xen_enabled: xen_allowed is
always defined.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
CC: qemu-stable@nongnu.org
(cherry picked from commit 49fa9881b2358e390e9e9466ddde74e995927efa)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
include/hw/xen/xen.h | 4 ----
1 file changed, 4 deletions(-)
diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
index 7451c5a..b42b0fd 100644
--- a/include/hw/xen/xen.h
+++ b/include/hw/xen/xen.h
@@ -25,11 +25,7 @@ extern bool xen_allowed;
static inline bool xen_enabled(void)
{
-#if defined(CONFIG_XEN_BACKEND) && defined(CONFIG_XEN)
return xen_allowed;
-#else
- return 0;
-#endif
}
int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 06/26] main_loop: do not set nonblocking if xen_enabled()
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (4 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 05/26] xen: simplify xen_enabled Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 07/26] xen_machine_pv: do not create a dummy CPU in machine->init Michael Roth
` (24 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
CC: qemu-stable@nongnu.org
(cherry picked from commit a7d4207d378069a5bb3175a131e8fdedd39ef97d)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
vl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vl.c b/vl.c
index 59dc0b4..efb073f 100644
--- a/vl.c
+++ b/vl.c
@@ -2022,7 +2022,7 @@ static void main_loop(void)
int64_t ti;
#endif
do {
- nonblocking = !kvm_enabled() && last_io > 0;
+ nonblocking = !kvm_enabled() && !xen_enabled() && last_io > 0;
#ifdef CONFIG_PROFILER
ti = profile_getclock();
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 07/26] xen_machine_pv: do not create a dummy CPU in machine->init
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (5 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 06/26] main_loop: do not set nonblocking if xen_enabled() Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 08/26] chardev: fix "info chardev" output Michael Roth
` (23 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
This fixes a regression introduced by:
commit 62fc403f11523169eb4264de31279745f48e3ecc
Author: Igor Mammedov <imammedo@redhat.com>
Date: Mon Apr 29 18:54:13 2013 +0200
target-i386: Attach ICC bus to CPU on its creation
X86CPU should have parent bus so it could provide bus for child APIC.
The commit makes it mandatory to pass a valid ICC bus to cpu_x86_create,
but cpu_x86_init just passes NULL to it.
xen_machine_pv uses cpu_x86_init, therefore it has been broken.
This patch fixes the problem by removing the dummy CPU creation
altogether from xen_init_pv, relying on the fact that QEMU can now cope
with a machine without an emulated CPU.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
CC: imammedo@redhat.com
CC: qemu-stable@nongnu.org
(cherry picked from commit 58ee9b0ae05d81c74d6869a25ce4263fc22ed809)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/i386/xen_machine_pv.c | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/hw/i386/xen_machine_pv.c b/hw/i386/xen_machine_pv.c
index f829a52..9f2e291 100644
--- a/hw/i386/xen_machine_pv.c
+++ b/hw/i386/xen_machine_pv.c
@@ -23,7 +23,6 @@
*/
#include "hw/hw.h"
-#include "hw/i386/pc.h"
#include "hw/boards.h"
#include "hw/xen/xen_backend.h"
#include "xen_domainbuild.h"
@@ -31,27 +30,12 @@
static void xen_init_pv(QEMUMachineInitArgs *args)
{
- const char *cpu_model = args->cpu_model;
const char *kernel_filename = args->kernel_filename;
const char *kernel_cmdline = args->kernel_cmdline;
const char *initrd_filename = args->initrd_filename;
- X86CPU *cpu;
- CPUState *cs;
DriveInfo *dinfo;
int i;
- /* Initialize a dummy CPU */
- if (cpu_model == NULL) {
-#ifdef TARGET_X86_64
- cpu_model = "qemu64";
-#else
- cpu_model = "qemu32";
-#endif
- }
- cpu = cpu_x86_init(cpu_model);
- cs = CPU(cpu);
- cs->halted = 1;
-
/* Initialize backend core & drivers */
if (xen_be_init() != 0) {
fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 08/26] chardev: fix "info chardev" output
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (6 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 07/26] xen_machine_pv: do not create a dummy CPU in machine->init Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH Michael Roth
` (22 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Gerd Hoffmann <kraxel@redhat.com>
Fill unset CharDriverState->filename with the backend name, so
'info chardev' will return at least the chardev type. Don't
touch it in case the chardev init function filled it already,
like the socket+pty chardevs do for example.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 60d95386abf1f5f37ded6a812d12ac458df2491b)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
qemu-char.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/qemu-char.c b/qemu-char.c
index cff2896..6b5bd6f 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -3801,6 +3801,9 @@ ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend,
chr->label = g_strdup(id);
chr->avail_connections =
(backend->kind == CHARDEV_BACKEND_KIND_MUX) ? MAX_MUX : 1;
+ if (!chr->filename) {
+ chr->filename = g_strdup(ChardevBackendKind_lookup[backend->kind]);
+ }
QTAILQ_INSERT_TAIL(&chardevs, chr, next);
return ret;
} else {
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (7 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 08/26] chardev: fix "info chardev" output Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-07-03 20:10 ` Alex Williamson
2013-06-12 21:41 ` [Qemu-devel] [PATCH 10/26] Revert "roms: switch oldnoconfig to olddefconfig" Michael Roth
` (21 subsequent siblings)
30 siblings, 1 reply; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Andreas Färber <afaerber@suse.de>
The implementation of the ATA FLUSH command invokes a flush at the block
layer, which may on raw files on POSIX entail a synchronous fdatasync().
This may in some cases take so long that the SLES 11 SP1 guest driver
reports I/O errors and filesystems get corrupted or remounted read-only.
Avoid this by setting BUSY_STAT, so that the guest is made aware we are
in the middle of an operation and no ATA commands are attempted to be
processed concurrently.
Addresses BNC#637297.
Suggested-by: Gonglei (Arei) <arei.gonglei@huawei.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
(cherry picked from commit f68ec8379e88502b4841a110c070e9b118d3151c)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/ide/core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/ide/core.c b/hw/ide/core.c
index c7a8041..9926d92 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -814,6 +814,7 @@ void ide_flush_cache(IDEState *s)
return;
}
+ s->status |= BUSY_STAT;
bdrv_acct_start(s->bs, &s->acct, 0, BDRV_ACCT_FLUSH);
bdrv_aio_flush(s->bs, ide_flush_cb, s);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH
2013-06-12 21:41 ` [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH Michael Roth
@ 2013-07-03 20:10 ` Alex Williamson
2013-07-03 20:16 ` Michael Roth
0 siblings, 1 reply; 45+ messages in thread
From: Alex Williamson @ 2013-07-03 20:10 UTC (permalink / raw)
To: Michael Roth; +Cc: qemu-devel, qemu-stable
On Wed, 2013-06-12 at 16:41 -0500, Michael Roth wrote:
> From: Andreas Färber <afaerber@suse.de>
>
> The implementation of the ATA FLUSH command invokes a flush at the block
> layer, which may on raw files on POSIX entail a synchronous fdatasync().
> This may in some cases take so long that the SLES 11 SP1 guest driver
> reports I/O errors and filesystems get corrupted or remounted read-only.
>
> Avoid this by setting BUSY_STAT, so that the guest is made aware we are
> in the middle of an operation and no ATA commands are attempted to be
> processed concurrently.
>
> Addresses BNC#637297.
>
> Suggested-by: Gonglei (Arei) <arei.gonglei@huawei.com>
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> (cherry picked from commit f68ec8379e88502b4841a110c070e9b118d3151c)
>
> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> ---
> hw/ide/core.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/hw/ide/core.c b/hw/ide/core.c
> index c7a8041..9926d92 100644
> --- a/hw/ide/core.c
> +++ b/hw/ide/core.c
> @@ -814,6 +814,7 @@ void ide_flush_cache(IDEState *s)
> return;
> }
>
> + s->status |= BUSY_STAT;
> bdrv_acct_start(s->bs, &s->acct, 0, BDRV_ACCT_FLUSH);
> bdrv_aio_flush(s->bs, ide_flush_cb, s);
> }
This caused a regression for me from 1.5.0->1.5.1. Windows 7 x64 no
longer boots on q35 IDE with this change. Thanks,
Alex
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH
2013-07-03 20:10 ` Alex Williamson
@ 2013-07-03 20:16 ` Michael Roth
2013-07-03 21:51 ` Alex Williamson
0 siblings, 1 reply; 45+ messages in thread
From: Michael Roth @ 2013-07-03 20:16 UTC (permalink / raw)
To: Alex Williamson; +Cc: qemu-devel, qemu-stable
On Wed, Jul 3, 2013 at 3:10 PM, Alex Williamson
<alex.williamson@redhat.com> wrote:
> On Wed, 2013-06-12 at 16:41 -0500, Michael Roth wrote:
>> From: Andreas Färber <afaerber@suse.de>
>>
>> The implementation of the ATA FLUSH command invokes a flush at the block
>> layer, which may on raw files on POSIX entail a synchronous fdatasync().
>> This may in some cases take so long that the SLES 11 SP1 guest driver
>> reports I/O errors and filesystems get corrupted or remounted read-only.
>>
>> Avoid this by setting BUSY_STAT, so that the guest is made aware we are
>> in the middle of an operation and no ATA commands are attempted to be
>> processed concurrently.
>>
>> Addresses BNC#637297.
>>
>> Suggested-by: Gonglei (Arei) <arei.gonglei@huawei.com>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
>> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
>> (cherry picked from commit f68ec8379e88502b4841a110c070e9b118d3151c)
>>
>> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
>> ---
>> hw/ide/core.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/hw/ide/core.c b/hw/ide/core.c
>> index c7a8041..9926d92 100644
>> --- a/hw/ide/core.c
>> +++ b/hw/ide/core.c
>> @@ -814,6 +814,7 @@ void ide_flush_cache(IDEState *s)
>> return;
>> }
>>
>> + s->status |= BUSY_STAT;
>> bdrv_acct_start(s->bs, &s->acct, 0, BDRV_ACCT_FLUSH);
>> bdrv_aio_flush(s->bs, ide_flush_cb, s);
>> }
>
> This caused a regression for me from 1.5.0->1.5.1. Windows 7 x64 no
> longer boots on q35 IDE with this change. Thanks,
Are you seeing the issue for upstream builds as well?
>
> Alex
>
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH
2013-07-03 20:16 ` Michael Roth
@ 2013-07-03 21:51 ` Alex Williamson
2013-08-12 22:43 ` Michael Roth
0 siblings, 1 reply; 45+ messages in thread
From: Alex Williamson @ 2013-07-03 21:51 UTC (permalink / raw)
To: Michael Roth; +Cc: qemu-devel, qemu-stable
On Wed, 2013-07-03 at 15:16 -0500, Michael Roth wrote:
> On Wed, Jul 3, 2013 at 3:10 PM, Alex Williamson
> <alex.williamson@redhat.com> wrote:
> > On Wed, 2013-06-12 at 16:41 -0500, Michael Roth wrote:
> >> From: Andreas Färber <afaerber@suse.de>
> >>
> >> The implementation of the ATA FLUSH command invokes a flush at the block
> >> layer, which may on raw files on POSIX entail a synchronous fdatasync().
> >> This may in some cases take so long that the SLES 11 SP1 guest driver
> >> reports I/O errors and filesystems get corrupted or remounted read-only.
> >>
> >> Avoid this by setting BUSY_STAT, so that the guest is made aware we are
> >> in the middle of an operation and no ATA commands are attempted to be
> >> processed concurrently.
> >>
> >> Addresses BNC#637297.
> >>
> >> Suggested-by: Gonglei (Arei) <arei.gonglei@huawei.com>
> >> Signed-off-by: Andreas Färber <afaerber@suse.de>
> >> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> >> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> >> (cherry picked from commit f68ec8379e88502b4841a110c070e9b118d3151c)
> >>
> >> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> >> ---
> >> hw/ide/core.c | 1 +
> >> 1 file changed, 1 insertion(+)
> >>
> >> diff --git a/hw/ide/core.c b/hw/ide/core.c
> >> index c7a8041..9926d92 100644
> >> --- a/hw/ide/core.c
> >> +++ b/hw/ide/core.c
> >> @@ -814,6 +814,7 @@ void ide_flush_cache(IDEState *s)
> >> return;
> >> }
> >>
> >> + s->status |= BUSY_STAT;
> >> bdrv_acct_start(s->bs, &s->acct, 0, BDRV_ACCT_FLUSH);
> >> bdrv_aio_flush(s->bs, ide_flush_cb, s);
> >> }
> >
> > This caused a regression for me from 1.5.0->1.5.1. Windows 7 x64 no
> > longer boots on q35 IDE with this change. Thanks,
>
> Are you seeing the issue for upstream builds as well?
Yes, I bisected this on upstream. If i revert just this from 1.5.1, I
can boot again. Upstream requires reverting this and a workaround for
9afce429. Thanks,
Alex
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH
2013-07-03 21:51 ` Alex Williamson
@ 2013-08-12 22:43 ` Michael Roth
2013-08-13 0:12 ` Michael Roth
0 siblings, 1 reply; 45+ messages in thread
From: Michael Roth @ 2013-08-12 22:43 UTC (permalink / raw)
To: Alex Williamson; +Cc: qemu-devel, qemu-stable
Quoting Alex Williamson (2013-07-03 16:51:56)
> On Wed, 2013-07-03 at 15:16 -0500, Michael Roth wrote:
> > On Wed, Jul 3, 2013 at 3:10 PM, Alex Williamson
> > <alex.williamson@redhat.com> wrote:
> > > On Wed, 2013-06-12 at 16:41 -0500, Michael Roth wrote:
> > >> From: Andreas Färber <afaerber@suse.de>
> > >>
> > >> The implementation of the ATA FLUSH command invokes a flush at the block
> > >> layer, which may on raw files on POSIX entail a synchronous fdatasync().
> > >> This may in some cases take so long that the SLES 11 SP1 guest driver
> > >> reports I/O errors and filesystems get corrupted or remounted read-only.
> > >>
> > >> Avoid this by setting BUSY_STAT, so that the guest is made aware we are
> > >> in the middle of an operation and no ATA commands are attempted to be
> > >> processed concurrently.
> > >>
> > >> Addresses BNC#637297.
> > >>
> > >> Suggested-by: Gonglei (Arei) <arei.gonglei@huawei.com>
> > >> Signed-off-by: Andreas Färber <afaerber@suse.de>
> > >> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> > >> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > >> (cherry picked from commit f68ec8379e88502b4841a110c070e9b118d3151c)
> > >>
> > >> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> > >> ---
> > >> hw/ide/core.c | 1 +
> > >> 1 file changed, 1 insertion(+)
> > >>
> > >> diff --git a/hw/ide/core.c b/hw/ide/core.c
> > >> index c7a8041..9926d92 100644
> > >> --- a/hw/ide/core.c
> > >> +++ b/hw/ide/core.c
> > >> @@ -814,6 +814,7 @@ void ide_flush_cache(IDEState *s)
> > >> return;
> > >> }
> > >>
> > >> + s->status |= BUSY_STAT;
> > >> bdrv_acct_start(s->bs, &s->acct, 0, BDRV_ACCT_FLUSH);
> > >> bdrv_aio_flush(s->bs, ide_flush_cb, s);
> > >> }
> > >
> > > This caused a regression for me from 1.5.0->1.5.1. Windows 7 x64 no
> > > longer boots on q35 IDE with this change. Thanks,
> >
> > Are you seeing the issue for upstream builds as well?
>
> Yes, I bisected this on upstream. If i revert just this from 1.5.1, I
> can boot again. Upstream requires reverting this and a workaround for
> 9afce429. Thanks,
Does the problem still exist upstream? I'd rather not revert without a
fix for the issue in 9afce429 since that might cause a regression for 1.5.1
users now.
Sucks either way but I think it's safer to have Win7 not boot on q35 than
re-introduce potential image corruption.
>
> Alex
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH
2013-08-12 22:43 ` Michael Roth
@ 2013-08-13 0:12 ` Michael Roth
0 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-08-13 0:12 UTC (permalink / raw)
To: Alex Williamson; +Cc: qemu-devel, qemu-stable
Quoting Michael Roth (2013-08-12 17:43:00)
> Quoting Alex Williamson (2013-07-03 16:51:56)
> > On Wed, 2013-07-03 at 15:16 -0500, Michael Roth wrote:
> > > On Wed, Jul 3, 2013 at 3:10 PM, Alex Williamson
> > > <alex.williamson@redhat.com> wrote:
> > > > On Wed, 2013-06-12 at 16:41 -0500, Michael Roth wrote:
> > > >> From: Andreas Färber <afaerber@suse.de>
> > > >>
> > > >> The implementation of the ATA FLUSH command invokes a flush at the block
> > > >> layer, which may on raw files on POSIX entail a synchronous fdatasync().
> > > >> This may in some cases take so long that the SLES 11 SP1 guest driver
> > > >> reports I/O errors and filesystems get corrupted or remounted read-only.
> > > >>
> > > >> Avoid this by setting BUSY_STAT, so that the guest is made aware we are
> > > >> in the middle of an operation and no ATA commands are attempted to be
> > > >> processed concurrently.
> > > >>
> > > >> Addresses BNC#637297.
> > > >>
> > > >> Suggested-by: Gonglei (Arei) <arei.gonglei@huawei.com>
> > > >> Signed-off-by: Andreas Färber <afaerber@suse.de>
> > > >> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> > > >> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > > >> (cherry picked from commit f68ec8379e88502b4841a110c070e9b118d3151c)
> > > >>
> > > >> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> > > >> ---
> > > >> hw/ide/core.c | 1 +
> > > >> 1 file changed, 1 insertion(+)
> > > >>
> > > >> diff --git a/hw/ide/core.c b/hw/ide/core.c
> > > >> index c7a8041..9926d92 100644
> > > >> --- a/hw/ide/core.c
> > > >> +++ b/hw/ide/core.c
> > > >> @@ -814,6 +814,7 @@ void ide_flush_cache(IDEState *s)
> > > >> return;
> > > >> }
> > > >>
> > > >> + s->status |= BUSY_STAT;
> > > >> bdrv_acct_start(s->bs, &s->acct, 0, BDRV_ACCT_FLUSH);
> > > >> bdrv_aio_flush(s->bs, ide_flush_cb, s);
> > > >> }
> > > >
> > > > This caused a regression for me from 1.5.0->1.5.1. Windows 7 x64 no
> > > > longer boots on q35 IDE with this change. Thanks,
> > >
> > > Are you seeing the issue for upstream builds as well?
> >
> > Yes, I bisected this on upstream. If i revert just this from 1.5.1, I
> > can boot again. Upstream requires reverting this and a workaround for
> > 9afce429. Thanks,
>
> Does the problem still exist upstream? I'd rather not revert without a
> fix for the issue in 9afce429 since that might cause a regression for 1.5.1
> users now.
Ok, looks like we have a fix for this that was already sent to stable:
a62eaa26c1d6d48fbdc3ac1d32bd1314f5fdc8c9
Could've sworn I searched master for a reference to f68ec837...
Will pull it in for 1.5.3
>
> Sucks either way but I think it's safer to have Win7 not boot on q35 than
> re-introduce potential image corruption.
>
> >
> > Alex
^ permalink raw reply [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 10/26] Revert "roms: switch oldnoconfig to olddefconfig"
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (8 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 09/26] ide: Set BSY bit during FLUSH Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 11/26] update seabios to release 1.7.2.2 Michael Roth
` (20 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Gerd Hoffmann <kraxel@redhat.com>
This reverts commit a5519b42cfd6c00e9f8b31c5aad7682e7a9f1181.
Breaks "make bios" in roms/ as the kconfig version in seabios doesn't
support olddefconfig. Must have been be totally untested.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 19cd090e17b293b49eec59346df94a668f5d2438)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
roms/configure-seabios.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/configure-seabios.sh b/roms/configure-seabios.sh
index 4bb6c2b..98f59a2 100755
--- a/roms/configure-seabios.sh
+++ b/roms/configure-seabios.sh
@@ -2,4 +2,4 @@
config="$1"
make -C seabios clean distclean
cp "$config" seabios/.config
-make -C seabios olddefconfig
+make -C seabios oldnoconfig
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 11/26] update seabios to release 1.7.2.2
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (9 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 10/26] Revert "roms: switch oldnoconfig to olddefconfig" Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 12/26] target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses Michael Roth
` (19 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Gerd Hoffmann <kraxel@redhat.com>
git shortlog from 1.7.2.1
Asias He (2):
virtio-scsi: Pack struct virtio_scsi_{req_cmd,resp_cmd}
virtio-scsi: Set _DRIVER_OK flag before scsi target scanning
Kevin O'Connor (1):
Cache boot-fail-wait to avoid romfile access after POST.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 6683d7bc2759e9da8b5c4907a9de85d500933ffb)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
pc-bios/bios.bin | Bin 131072 -> 131072 bytes
roms/seabios | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin
index ec9eeb12c62a511f2e45bfc6fe3af90cc6da0d65..c2a19b8930540db854d3c98c6a271eadc2d12e98 100644
GIT binary patch
delta 24715
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
Jj+kk;{{wMn9M=E<
delta 24525
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
diff --git a/roms/seabios b/roms/seabios
index 88cb66e..d4f7d90 160000
--- a/roms/seabios
+++ b/roms/seabios
@@ -1 +1 @@
-Subproject commit 88cb66ea542906ffff8a80ef397b9e3adbb33116
+Subproject commit d4f7d90f47462b4e8836899adc5060fbde5253e9
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 12/26] target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (10 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 11/26] update seabios to release 1.7.2.2 Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 13/26] Remove OSS support for OpenBSD Michael Roth
` (18 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Luiz Capitulino <lcapitulino@redhat.com>
The code used to walk IA-32e page-tables, and possibly PAE page-tables,
uses the bit mask ~0xfff to get the next PML4E/PDPTE/PDE/PTE address.
However, as we use a uint64_t to store the resulting address, that mask
gets expanded to 0xfffffffffffff000 which not only ends up selecting
reserved bits but also selects the XD bit (execute-disable) which
happens to be enabled by Windows 8, causing qemu_get_ram_ptr() to abort.
This commit fixes that problem by replacing ~0xfff by a correct mask
that only selects the address bit range (ie. bits 51:12).
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
(cherry picked from commit fbc2ed9518efcdcdcbf0adb9539c17a65addd20a)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
target-i386/arch_memory_mapping.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/target-i386/arch_memory_mapping.c b/target-i386/arch_memory_mapping.c
index 844893f..24884bd 100644
--- a/target-i386/arch_memory_mapping.c
+++ b/target-i386/arch_memory_mapping.c
@@ -75,6 +75,8 @@ static void walk_pte2(MemoryMappingList *list,
}
/* PAE Paging or IA-32e Paging */
+#define PLM4_ADDR_MASK 0xffffffffff000 /* selects bits 51:12 */
+
static void walk_pde(MemoryMappingList *list, hwaddr pde_start_addr,
int32_t a20_mask, target_ulong start_line_addr)
{
@@ -105,7 +107,7 @@ static void walk_pde(MemoryMappingList *list, hwaddr pde_start_addr,
continue;
}
- pte_start_addr = (pde & ~0xfff) & a20_mask;
+ pte_start_addr = (pde & PLM4_ADDR_MASK) & a20_mask;
walk_pte(list, pte_start_addr, a20_mask, line_addr);
}
}
@@ -208,7 +210,7 @@ static void walk_pdpe(MemoryMappingList *list,
continue;
}
- pde_start_addr = (pdpe & ~0xfff) & a20_mask;
+ pde_start_addr = (pdpe & PLM4_ADDR_MASK) & a20_mask;
walk_pde(list, pde_start_addr, a20_mask, line_addr);
}
}
@@ -231,7 +233,7 @@ static void walk_pml4e(MemoryMappingList *list,
}
line_addr = ((i & 0x1ffULL) << 39) | (0xffffULL << 48);
- pdpe_start_addr = (pml4e & ~0xfff) & a20_mask;
+ pdpe_start_addr = (pml4e & PLM4_ADDR_MASK) & a20_mask;
walk_pdpe(list, pdpe_start_addr, a20_mask, line_addr);
}
}
@@ -249,7 +251,7 @@ int cpu_get_memory_mapping(MemoryMappingList *list, CPUArchState *env)
if (env->hflags & HF_LMA_MASK) {
hwaddr pml4e_addr;
- pml4e_addr = (env->cr[3] & ~0xfff) & env->a20_mask;
+ pml4e_addr = (env->cr[3] & PLM4_ADDR_MASK) & env->a20_mask;
walk_pml4e(list, pml4e_addr, env->a20_mask);
} else
#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 13/26] Remove OSS support for OpenBSD
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (11 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 12/26] target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 14/26] xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional) Michael Roth
` (17 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Brad Smith <brad@comstyle.com>
Remove the OSS support for OpenBSD. The OSS API has not been usable
for quite some time.
Signed-off-by: Brad Smith <brad@comstyle.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
(cherry picked from commit 4f6ab397b60615d2da77bff4f32666be9ac2e949)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
audio/ossaudio.c | 4 ----
configure | 5 ++---
2 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/audio/ossaudio.c b/audio/ossaudio.c
index 00be9c9..007c641 100644
--- a/audio/ossaudio.c
+++ b/audio/ossaudio.c
@@ -25,11 +25,7 @@
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/ioctl.h>
-#ifdef __OpenBSD__
-#include <soundcard.h>
-#else
#include <sys/soundcard.h>
-#endif
#include "qemu-common.h"
#include "qemu/main-loop.h"
#include "qemu/host-utils.h"
diff --git a/configure b/configure
index 5ae7e4a..eb74510 100755
--- a/configure
+++ b/configure
@@ -468,9 +468,8 @@ NetBSD)
OpenBSD)
bsd="yes"
make="${MAKE-gmake}"
- audio_drv_list="oss"
- audio_possible_drivers="oss sdl esd"
- oss_lib="-lossaudio"
+ audio_drv_list="sdl"
+ audio_possible_drivers="sdl esd"
;;
Darwin)
bsd="yes"
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 14/26] xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional)
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (12 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 13/26] Remove OSS support for OpenBSD Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 15/26] do not check pointers after dereferencing them Michael Roth
` (16 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
We are currently setting the PCI hole to start at HVM_BELOW_4G_RAM_END,
that is 0xf0000000.
Start the PCI hole at 0xe0000000 instead, that is the same value used by
pc_init1 and qemu-xen-traditional.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
CC: qemu-stable@nongnu.org
(cherry picked from commit 9f24a8030a70ea4954b5b8c48f606012f086f65f)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/i386/pc_piix.c | 6 +++---
include/hw/i386/pc.h | 3 +++
xen-all.c | 12 ++++++------
3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 43ab480..06416ce 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -102,9 +102,9 @@ static void pc_init1(MemoryRegion *system_memory,
kvmclock_create();
}
- if (ram_size >= 0xe0000000 ) {
- above_4g_mem_size = ram_size - 0xe0000000;
- below_4g_mem_size = 0xe0000000;
+ if (ram_size >= QEMU_BELOW_4G_RAM_END ) {
+ above_4g_mem_size = ram_size - QEMU_BELOW_4G_RAM_END;
+ below_4g_mem_size = QEMU_BELOW_4G_RAM_END;
} else {
above_4g_mem_size = 0;
below_4g_mem_size = ram_size;
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 2bd7090..0242fec 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -78,6 +78,9 @@ extern int fd_bootchk;
void pc_register_ferr_irq(qemu_irq irq);
void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
+#define QEMU_BELOW_4G_RAM_END 0xe0000000
+#define QEMU_BELOW_4G_MMIO_LENGTH ((1ULL << 32) - QEMU_BELOW_4G_RAM_END)
+
void pc_cpus_init(const char *cpu_model, DeviceState *icc_bridge);
void pc_hot_add_cpu(const int64_t id, Error **errp);
void pc_acpi_init(const char *default_dsdt);
diff --git a/xen-all.c b/xen-all.c
index 539a154..5ca0c26 100644
--- a/xen-all.c
+++ b/xen-all.c
@@ -161,18 +161,18 @@ static void xen_ram_init(ram_addr_t ram_size)
ram_addr_t block_len;
block_len = ram_size;
- if (ram_size >= HVM_BELOW_4G_RAM_END) {
+ if (ram_size >= QEMU_BELOW_4G_RAM_END) {
/* Xen does not allocate the memory continuously, and keep a hole at
- * HVM_BELOW_4G_MMIO_START of HVM_BELOW_4G_MMIO_LENGTH
+ * QEMU_BELOW_4G_RAM_END of QEMU_BELOW_4G_MMIO_LENGTH
*/
- block_len += HVM_BELOW_4G_MMIO_LENGTH;
+ block_len += QEMU_BELOW_4G_MMIO_LENGTH;
}
memory_region_init_ram(&ram_memory, "xen.ram", block_len);
vmstate_register_ram_global(&ram_memory);
- if (ram_size >= HVM_BELOW_4G_RAM_END) {
- above_4g_mem_size = ram_size - HVM_BELOW_4G_RAM_END;
- below_4g_mem_size = HVM_BELOW_4G_RAM_END;
+ if (ram_size >= QEMU_BELOW_4G_RAM_END) {
+ above_4g_mem_size = ram_size - QEMU_BELOW_4G_RAM_END;
+ below_4g_mem_size = QEMU_BELOW_4G_RAM_END;
} else {
below_4g_mem_size = ram_size;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 15/26] do not check pointers after dereferencing them
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (13 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 14/26] xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional) Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 16/26] qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path Michael Roth
` (15 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Paolo Bonzini <pbonzini@redhat.com>
Two instances, both spotted by Coverity. In one, two blocks were
swapped. In the other, the check is not needed anymore.
Cc: qemu-stable@nongnu.org
Cc: qemu-trivial@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
(cherry picked from commit a4cc73d629d43c8a4d171d043ff229a959df3ca6)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
monitor.c | 2 +-
savevm.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/monitor.c b/monitor.c
index 62aaebe..dee980c 100644
--- a/monitor.c
+++ b/monitor.c
@@ -281,7 +281,7 @@ void monitor_flush(Monitor *mon)
buf = qstring_get_str(mon->outbuf);
len = qstring_get_length(mon->outbuf);
- if (mon && len && !mon->mux_out) {
+ if (len && !mon->mux_out) {
rc = qemu_chr_fe_write(mon->chr, (const uint8_t *) buf, len);
if (rc == len) {
/* all flushed */
diff --git a/savevm.c b/savevm.c
index 31dcce9..4e0fab6 100644
--- a/savevm.c
+++ b/savevm.c
@@ -322,13 +322,13 @@ QEMUFile *qemu_popen_cmd(const char *command, const char *mode)
FILE *stdio_file;
QEMUFileStdio *s;
- stdio_file = popen(command, mode);
- if (stdio_file == NULL) {
+ if (mode == NULL || (mode[0] != 'r' && mode[0] != 'w') || mode[1] != 0) {
+ fprintf(stderr, "qemu_popen: Argument validity check failed\n");
return NULL;
}
- if (mode == NULL || (mode[0] != 'r' && mode[0] != 'w') || mode[1] != 0) {
- fprintf(stderr, "qemu_popen: Argument validity check failed\n");
+ stdio_file = popen(command, mode);
+ if (stdio_file == NULL) {
return NULL;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 16/26] qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (14 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 15/26] do not check pointers after dereferencing them Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 17/26] host-libusb: Correct test for USB packet state Michael Roth
` (14 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Amos Kong <akong@redhat.com>
Recent virtio refactoring in QEMU made virtio-bus become the parent bus
of scsi-bus, and virtio-bus doesn't have get_fw_dev_path implementation,
typename will be added to fw_dev_path by default, the new fw_dev_path
could not be identified by seabios. It causes that bootindex parameter
of scsi device doesn't work.
This patch implements get_fw_dev_path() in BusClass, it will be called
if bus doesn't implement the method, tyename will be added to
fw_dev_path. If the implemented method returns NULL, nothing will be
added to fw_dev_path.
It also implements virtio_bus_get_fw_dev_path() to return NULL. Then
QEMU will still pass original style of fw_dev_path to seabios.
Signed-off-by: Amos Kong <akong@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-id: 1369814202-10346-1-git-send-email-akong@redhat.com
--
v2: only add nothing to fw_dev_path when get_fw_dev_path() is
implemented and returns NULL. then it will not effect other devices
don't have get_fw_dev_path() implementation.
v3: implement default get_fw_dev_path() in BusClass
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit bbfa18fca4e44ff9c23d36b50d8a998af9c9e9fc)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/core/qdev.c | 10 +++++++++-
hw/virtio/virtio-bus.c | 6 ++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 6985ad8..9190a7e 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -515,7 +515,7 @@ static int qdev_get_fw_dev_path_helper(DeviceState *dev, char *p, int size)
l += snprintf(p + l, size - l, "%s", d);
g_free(d);
} else {
- l += snprintf(p + l, size - l, "%s", object_get_typename(OBJECT(dev)));
+ return l;
}
}
l += snprintf(p + l , size - l, "/");
@@ -867,9 +867,17 @@ static void qbus_initfn(Object *obj)
QTAILQ_INIT(&bus->children);
}
+static char *default_bus_get_fw_dev_path(DeviceState *dev)
+{
+ return g_strdup(object_get_typename(OBJECT(dev)));
+}
+
static void bus_class_init(ObjectClass *class, void *data)
{
+ BusClass *bc = BUS_CLASS(class);
+
class->unparent = bus_unparent;
+ bc->get_fw_dev_path = default_bus_get_fw_dev_path;
}
static void qbus_finalize(Object *obj)
diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c
index ea2e11a..6849a01 100644
--- a/hw/virtio/virtio-bus.c
+++ b/hw/virtio/virtio-bus.c
@@ -161,10 +161,16 @@ static char *virtio_bus_get_dev_path(DeviceState *dev)
return qdev_get_dev_path(proxy);
}
+static char *virtio_bus_get_fw_dev_path(DeviceState *dev)
+{
+ return NULL;
+}
+
static void virtio_bus_class_init(ObjectClass *klass, void *data)
{
BusClass *bus_class = BUS_CLASS(klass);
bus_class->get_dev_path = virtio_bus_get_dev_path;
+ bus_class->get_fw_dev_path = virtio_bus_get_fw_dev_path;
}
static const TypeInfo virtio_bus_info = {
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 17/26] host-libusb: Correct test for USB packet state
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (15 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 16/26] qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 18/26] Fix usage of USB_DEV_FLAG_IS_HOST flag Michael Roth
` (13 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Ed Maste <emaste@freebsd.org>
USB_RET_ASYNC is -6, so inflight was always false.
Signed-off-by: Ed Maste <emaste@freebsd.org>
Cc: qemu-stable@nongnu.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 45ec267160307ce2ca7494d942589ba222b29479)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/usb/host-libusb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index f3de459..3a582c5 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -385,7 +385,7 @@ out:
static void usb_host_req_abort(USBHostRequest *r)
{
USBHostDevice *s = r->host;
- bool inflight = (r->p && r->p->state == USB_RET_ASYNC);
+ bool inflight = (r->p && r->p->state == USB_PACKET_ASYNC);
if (inflight) {
r->p->status = USB_RET_NODEV;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 18/26] Fix usage of USB_DEV_FLAG_IS_HOST flag.
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (16 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 17/26] host-libusb: Correct test for USB packet state Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 19/26] vmxnet3: fix NICState cleanup Michael Roth
` (12 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Michael Marineau <mike@marineau.org>
USB_DEV_FLAG_IS_HOST is the bit number, not value. Booting with a
"Fitbit Base Station" USB dongle was triggering this assert.
Signed-off-by: Michael Marineau <mike@marineau.org>
Cc: qemu-stable@nongnu.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 756335292f2b46775992c314cc70b54480a46d26)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/usb/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/usb/core.c b/hw/usb/core.c
index 15a150a..05948ca 100644
--- a/hw/usb/core.c
+++ b/hw/usb/core.c
@@ -410,7 +410,7 @@ void usb_handle_packet(USBDevice *dev, USBPacket *p)
assert(p->ep->type != USB_ENDPOINT_XFER_ISOC);
/* using async for interrupt packets breaks migration */
assert(p->ep->type != USB_ENDPOINT_XFER_INT ||
- (dev->flags & USB_DEV_FLAG_IS_HOST));
+ (dev->flags & (1 << USB_DEV_FLAG_IS_HOST)));
usb_packet_set_state(p, USB_PACKET_ASYNC);
QTAILQ_INSERT_TAIL(&p->ep->queue, p, queue);
} else if (p->status == USB_RET_ADD_TO_QUEUE) {
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 19/26] vmxnet3: fix NICState cleanup
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (17 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 18/26] Fix usage of USB_DEV_FLAG_IS_HOST flag Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 20/26] ui/gtk.c: Fix *BSD build of Gtk+ UI Michael Roth
` (11 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Stefan Hajnoczi <stefanha@redhat.com>
Use qemu_del_nic() instead of qemu_del_net_client() to correctly free
the entire NICState.
Cc: qemu-stable@nongnu.org
Reported-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
(cherry picked from commit 3ffee3cd5fb29de2115bdcbde0a02f47ce69a24c)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/net/vmxnet3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
index 5f483e7..4c575e5 100644
--- a/hw/net/vmxnet3.c
+++ b/hw/net/vmxnet3.c
@@ -1892,7 +1892,7 @@ static void vmxnet3_net_uninit(VMXNET3State *s)
vmxnet_tx_pkt_reset(s->tx_pkt);
vmxnet_tx_pkt_uninit(s->tx_pkt);
vmxnet_rx_pkt_uninit(s->rx_pkt);
- qemu_del_net_client(qemu_get_queue(s->nic));
+ qemu_del_nic(s->nic);
}
static void vmxnet3_net_init(VMXNET3State *s)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 20/26] ui/gtk.c: Fix *BSD build of Gtk+ UI
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (18 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 19/26] vmxnet3: fix NICState cleanup Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 21/26] s390x/css: Fix concurrent sense Michael Roth
` (10 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Brad Smith <brad@comstyle.com>
Fix the build of the Gtk+ UI on *BSD systems.
Signed-off-by: Brad Smith <brad@comstyle.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-id: 20130521161324.GA29977@rox.home.comstyle.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit 17bf9735dd5a46d829cfb175703c6a2c254a9aa2)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
include/qemu-common.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/qemu-common.h b/include/qemu-common.h
index b9057d1..cb82ef3 100644
--- a/include/qemu-common.h
+++ b/include/qemu-common.h
@@ -45,6 +45,7 @@
#if defined(__GLIBC__)
# include <pty.h>
#elif defined CONFIG_BSD
+# include <termios.h>
# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
# include <libutil.h>
# else
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 21/26] s390x/css: Fix concurrent sense.
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (19 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 20/26] ui/gtk.c: Fix *BSD build of Gtk+ UI Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 22/26] virtio-ccw: Fix unsetting of indicators Michael Roth
` (9 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Cornelia Huck <cornelia.huck@de.ibm.com>
Fix an off-by-one error when indicating availablity of concurrent
sense data.
Cc: qemu-stable@nongnu.org
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
(cherry picked from commit 8312976e73fce9689ab831c1da565ec413680cff)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/s390x/css.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/s390x/css.c b/hw/s390x/css.c
index e526a1c..f82abfe 100644
--- a/hw/s390x/css.c
+++ b/hw/s390x/css.c
@@ -777,7 +777,7 @@ int css_do_tsch(SubchDev *sch, IRB *target_irb)
(p->chars & PMCW_CHARS_MASK_CSENSE)) {
irb.scsw.flags |= SCSW_FLAGS_MASK_ESWF | SCSW_FLAGS_MASK_ECTL;
memcpy(irb.ecw, sch->sense_data, sizeof(sch->sense_data));
- irb.esw[1] = 0x02000000 | (sizeof(sch->sense_data) << 8);
+ irb.esw[1] = 0x01000000 | (sizeof(sch->sense_data) << 8);
}
}
/* Store the irb to the guest. */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 22/26] virtio-ccw: Fix unsetting of indicators.
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (20 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 21/26] s390x/css: Fix concurrent sense Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 23/26] xilinx_axidma: Do not set DMA .notify to NULL after notify Michael Roth
` (8 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Cornelia Huck <cornelia.huck@de.ibm.com>
Interpretation of the ccws to register (configuration) indicators contained
a thinko: We want to disallow reading from 0, but setting the indicator
pointer to 0 is fine.
Let's fix the handling for CCW_CMD_SET{,_CONF}_IND.
Cc: qemu-stable@nongnu.org
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
(cherry picked from commit d1db1fa8dfcea9c62643f624f2a07d2fd375ce45)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/s390x/virtio-ccw.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 5f5e267..44f5772 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -328,10 +328,10 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw)
ret = -EINVAL;
break;
}
- indicators = ldq_phys(ccw.cda);
- if (!indicators) {
+ if (!ccw.cda) {
ret = -EFAULT;
} else {
+ indicators = ldq_phys(ccw.cda);
dev->indicators = indicators;
sch->curr_status.scsw.count = ccw.count - sizeof(indicators);
ret = 0;
@@ -348,10 +348,10 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw)
ret = -EINVAL;
break;
}
- indicators = ldq_phys(ccw.cda);
- if (!indicators) {
+ if (!ccw.cda) {
ret = -EFAULT;
} else {
+ indicators = ldq_phys(ccw.cda);
dev->indicators2 = indicators;
sch->curr_status.scsw.count = ccw.count - sizeof(indicators);
ret = 0;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 23/26] xilinx_axidma: Do not set DMA .notify to NULL after notify
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (21 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 22/26] virtio-ccw: Fix unsetting of indicators Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 24/26] qemu-char: don't issue CHR_EVENT_OPEN in a BH Michael Roth
` (7 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Wendy Liang <jliang@xilinx.com>
If a stream notify function is not ready, it may re-populate the notify call-
back to indicate it should be re-polled later. This break in this usage, as
immediately following the notify() call, .notify is set to NULL. reverse the
ordering of the notify call and NULL assignment accordingly.
[PC: Reworked commit message]
Signed-off-by: Wendy Liang <jliang@xilinx.com>
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
(cherry picked from commit 4f293bd6e53739e089f33b458f70a9c4ac136b92)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/dma/xilinx_axidma.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
index 3a3ef8a..50054cf 100644
--- a/hw/dma/xilinx_axidma.c
+++ b/hw/dma/xilinx_axidma.c
@@ -514,8 +514,9 @@ static void axidma_write(void *opaque, hwaddr addr,
break;
}
if (sid == 1 && d->notify) {
- d->notify(d->notify_opaque);
+ StreamCanPushNotifyFn notifytmp = d->notify;
d->notify = NULL;
+ notifytmp(d->notify_opaque);
}
stream_update_irq(s);
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 24/26] qemu-char: don't issue CHR_EVENT_OPEN in a BH
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (22 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 23/26] xilinx_axidma: Do not set DMA .notify to NULL after notify Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 25/26] target-i386: Fix aflag logic for CODE64 and the 0x67 prefix Michael Roth
` (6 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
When CHR_EVENT_OPENED was initially added, it was CHR_EVENT_RESET,
and it was issued as a bottom-half:
86e94dea5b740dad65446c857f6959eae43e0ba6
Which we basically used to print out a greeting/prompt for the
monitor.
AFAICT the only reason this was ever done in a BH was because in
some cases we'd modify the chr_write handler for a new chardev
backend *after* the site where we issued the reset (see:
86e94d:qemu_chr_open_stdio())
At some point this event was renamed to CHR_EVENT_OPENED, and we've
maintained the use of this BH ever since.
However, due to 9f939df955a4152aad69a19a77e0898631bb2c18, we schedule
the BH via g_idle_add(), which is causing events to sometimes be
delivered after we've already begun processing data from backends,
leading to:
known bugs:
QMP:
session negotation resets with OPENED event, in some cases this
is causing new sessions to get sporadically reset
potential bugs:
hw/usb/redirect.c:
can_read handler checks for dev->parser != NULL, which may be
true if CLOSED BH has not been executed yet. In the past, OPENED
quiesced outstanding CLOSED events prior to us reading client
data. If it's delayed, our check may allow reads to occur even
though we haven't processed the OPENED event yet, and when we
do finally get the OPENED event, our state may get reset.
qtest.c:
can begin session before OPENED event is processed, leading to
a spurious reset of the system and irq_levels
gdbstub.c:
may start a gdb session prior to the machine being paused
To fix these, let's just drop the BH.
Since the initial reasoning for using it still applies to an extent,
work around that by deferring the delivery of CHR_EVENT_OPENED until
after the chardevs have been fully initialized, toward the end of
qmp_chardev_add() (or some cases, qemu_chr_new_from_opts()). This
defers delivery long enough that we can be assured a CharDriverState
is fully initialized before CHR_EVENT_OPENED is sent.
Also, rather than requiring each chardev to do an explicit open, do it
automatically, and allow the small few who don't desire such behavior to
suppress the OPENED-on-init behavior by setting a 'explicit_be_open'
flag.
We additionally add missing OPENED events for stdio backends on w32,
which were previously not being issued, causing us to not recieve the
banner and initial prompts for qmp/hmp.
Reported-by: Stefan Priebe <s.priebe@profihost.ag>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Message-id: 1370636393-21044-1-git-send-email-mdroth@linux.vnet.ibm.com
Cc: qemu-stable@nongnu.org
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit bd5c51ee6c4f1c79cae5ad2516d711a27b4ea8ec)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
backends/baum.c | 2 --
backends/msmouse.c | 1 +
include/sysemu/char.h | 2 +-
qemu-char.c | 38 +++++++++++++++++---------------------
spice-qemu-char.c | 1 +
ui/console.c | 4 ++++
ui/gtk.c | 2 ++
7 files changed, 26 insertions(+), 24 deletions(-)
diff --git a/backends/baum.c b/backends/baum.c
index 4cba79f..62aa784 100644
--- a/backends/baum.c
+++ b/backends/baum.c
@@ -611,8 +611,6 @@ CharDriverState *chr_baum_init(void)
qemu_set_fd_handler(baum->brlapi_fd, baum_chr_read, NULL, baum);
- qemu_chr_be_generic_open(chr);
-
return chr;
fail:
diff --git a/backends/msmouse.c b/backends/msmouse.c
index 0ac05a0..c0dbfcd 100644
--- a/backends/msmouse.c
+++ b/backends/msmouse.c
@@ -70,6 +70,7 @@ CharDriverState *qemu_chr_open_msmouse(void)
chr = g_malloc0(sizeof(CharDriverState));
chr->chr_write = msmouse_chr_write;
chr->chr_close = msmouse_chr_close;
+ chr->explicit_be_open = true;
qemu_add_mouse_event_handler(msmouse_event, chr, 0, "QEMU Microsoft Mouse");
diff --git a/include/sysemu/char.h b/include/sysemu/char.h
index 5e42c90..066c216 100644
--- a/include/sysemu/char.h
+++ b/include/sysemu/char.h
@@ -70,12 +70,12 @@ struct CharDriverState {
void (*chr_set_echo)(struct CharDriverState *chr, bool echo);
void (*chr_set_fe_open)(struct CharDriverState *chr, int fe_open);
void *opaque;
- int idle_tag;
char *label;
char *filename;
int be_open;
int fe_open;
int explicit_fe_open;
+ int explicit_be_open;
int avail_connections;
QemuOpts *opts;
QTAILQ_ENTRY(CharDriverState) next;
diff --git a/qemu-char.c b/qemu-char.c
index 6b5bd6f..a81fc4c 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -110,19 +110,9 @@ void qemu_chr_be_event(CharDriverState *s, int event)
s->chr_event(s->handler_opaque, event);
}
-static gboolean qemu_chr_be_generic_open_bh(gpointer opaque)
-{
- CharDriverState *s = opaque;
- qemu_chr_be_event(s, CHR_EVENT_OPENED);
- s->idle_tag = 0;
- return FALSE;
-}
-
void qemu_chr_be_generic_open(CharDriverState *s)
{
- if (s->idle_tag == 0) {
- s->idle_tag = g_idle_add(qemu_chr_be_generic_open_bh, s);
- }
+ qemu_chr_be_event(s, CHR_EVENT_OPENED);
}
int qemu_chr_fe_write(CharDriverState *s, const uint8_t *buf, int len)
@@ -247,6 +237,7 @@ static CharDriverState *qemu_chr_open_null(void)
chr = g_malloc0(sizeof(CharDriverState));
chr->chr_write = null_chr_write;
+ chr->explicit_be_open = true;
return chr;
}
@@ -504,9 +495,6 @@ static CharDriverState *qemu_chr_open_mux(CharDriverState *drv)
/* Frontend guest-open / -close notification is not support with muxes */
chr->chr_set_fe_open = NULL;
- /* Muxes are always open on creation */
- qemu_chr_be_generic_open(chr);
-
return chr;
}
@@ -883,8 +871,6 @@ static CharDriverState *qemu_chr_open_fd(int fd_in, int fd_out)
chr->chr_update_read_handler = fd_chr_update_read_handler;
chr->chr_close = fd_chr_close;
- qemu_chr_be_generic_open(chr);
-
return chr;
}
@@ -1243,6 +1229,7 @@ static CharDriverState *qemu_chr_open_pty(const char *id,
chr->chr_update_read_handler = pty_chr_update_read_handler;
chr->chr_close = pty_chr_close;
chr->chr_add_watch = pty_chr_add_watch;
+ chr->explicit_be_open = true;
s->fd = io_channel_from_fd(master_fd);
s->timer_tag = 0;
@@ -1595,8 +1582,6 @@ static CharDriverState *qemu_chr_open_pp_fd(int fd)
chr->chr_close = pp_close;
chr->opaque = drv;
- qemu_chr_be_generic_open(chr);
-
return chr;
}
#endif /* __linux__ */
@@ -1650,6 +1635,7 @@ static CharDriverState *qemu_chr_open_pp_fd(int fd)
chr->opaque = (void *)(intptr_t)fd;
chr->chr_write = null_chr_write;
chr->chr_ioctl = pp_ioctl;
+ chr->explicit_be_open = true;
return chr;
}
#endif
@@ -1880,7 +1866,6 @@ static CharDriverState *qemu_chr_open_win_path(const char *filename)
g_free(chr);
return NULL;
}
- qemu_chr_be_generic_open(chr);
return chr;
}
@@ -1980,7 +1965,6 @@ static CharDriverState *qemu_chr_open_pipe(ChardevHostdev *opts)
g_free(chr);
return NULL;
}
- qemu_chr_be_generic_open(chr);
return chr;
}
@@ -1994,7 +1978,6 @@ static CharDriverState *qemu_chr_open_win_file(HANDLE fd_out)
s->hcom = fd_out;
chr->opaque = s;
chr->chr_write = win_chr_write;
- qemu_chr_be_generic_open(chr);
return chr;
}
@@ -2329,6 +2312,8 @@ static CharDriverState *qemu_chr_open_udp_fd(int fd)
chr->chr_write = udp_chr_write;
chr->chr_update_read_handler = udp_chr_update_read_handler;
chr->chr_close = udp_chr_close;
+ /* be isn't opened until we get a connection */
+ chr->explicit_be_open = true;
return chr;
}
@@ -2731,6 +2716,8 @@ static CharDriverState *qemu_chr_open_socket_fd(int fd, bool do_nodelay,
chr->get_msgfd = tcp_get_msgfd;
chr->chr_add_client = tcp_chr_add_client;
chr->chr_add_watch = tcp_chr_add_watch;
+ /* be isn't opened until we get a connection */
+ chr->explicit_be_open = true;
if (is_listen) {
s->listen_fd = fd;
@@ -3325,6 +3312,12 @@ CharDriverState *qemu_chr_new_from_opts(QemuOpts *opts,
if (!chr->filename)
chr->filename = g_strdup(qemu_opt_get(opts, "backend"));
chr->init = init;
+ /* if we didn't create the chardev via qmp_chardev_add, we
+ * need to send the OPENED event here
+ */
+ if (!chr->explicit_be_open) {
+ qemu_chr_be_event(chr, CHR_EVENT_OPENED);
+ }
QTAILQ_INSERT_TAIL(&chardevs, chr, next);
if (qemu_opt_get_bool(opts, "mux", 0)) {
@@ -3804,6 +3797,9 @@ ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend,
if (!chr->filename) {
chr->filename = g_strdup(ChardevBackendKind_lookup[backend->kind]);
}
+ if (!chr->explicit_be_open) {
+ qemu_chr_be_event(chr, CHR_EVENT_OPENED);
+ }
QTAILQ_INSERT_TAIL(&chardevs, chr, next);
return ret;
} else {
diff --git a/spice-qemu-char.c b/spice-qemu-char.c
index f10970c..6d147a7 100644
--- a/spice-qemu-char.c
+++ b/spice-qemu-char.c
@@ -255,6 +255,7 @@ static CharDriverState *chr_open(const char *subtype)
chr->chr_add_watch = spice_chr_add_watch;
chr->chr_close = spice_chr_close;
chr->chr_set_fe_open = spice_chr_set_fe_open;
+ chr->explicit_be_open = true;
QLIST_INSERT_HEAD(&spice_chars, s, next);
diff --git a/ui/console.c b/ui/console.c
index b30853f..28bba6d 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -1788,6 +1788,10 @@ static CharDriverState *text_console_init(ChardevVC *vc)
s->chr = chr;
chr->opaque = s;
chr->chr_set_echo = text_console_set_echo;
+ /* console/chardev init sometimes completes elsewhere in a 2nd
+ * stage, so defer OPENED events until they are fully initialized
+ */
+ chr->explicit_be_open = true;
if (display_state) {
text_console_do_init(chr, display_state);
diff --git a/ui/gtk.c b/ui/gtk.c
index 52c3f95..82cf852 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1117,6 +1117,8 @@ static CharDriverState *gd_vc_handler(ChardevVC *unused)
chr = g_malloc0(sizeof(*chr));
chr->chr_write = gd_vc_chr_write;
+ /* defer OPENED events until our vc is fully initialized */
+ chr->explicit_be_open = true;
vcs[nb_vcs++] = chr;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 25/26] target-i386: Fix aflag logic for CODE64 and the 0x67 prefix
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (23 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 24/26] qemu-char: don't issue CHR_EVENT_OPEN in a BH Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-12 21:41 ` [Qemu-devel] [PATCH 26/26] q35: set fw_name Michael Roth
` (5 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: Richard Henderson <rth@twiddle.net>
The code reorganization in commit 4a6fd938 broke handling of PREFIX_ADR.
While fixing this, tidy and comment the code so that it's more obvious
what's going on in setting both aflag and dflag.
The TARGET_X86_64 ifdef can be eliminated because CODE64 expands to the
constant zero when TARGET_X86_64 is undefined.
Cc: Paolo Bonzini <pbonzini@redhat.com>
Reported-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1369855851-21400-1-git-send-email-rth@twiddle.net
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit dec3fc9657e0682637de4d5a29d947284d01985c)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
target-i386/translate.c | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/target-i386/translate.c b/target-i386/translate.c
index 0aeccdb..14b0298 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -4677,8 +4677,6 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s,
}
s->pc = pc_start;
prefixes = 0;
- aflag = s->code32;
- dflag = s->code32;
s->override = -1;
rex_w = -1;
rex_r = 0;
@@ -4801,23 +4799,25 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s,
}
/* Post-process prefixes. */
- if (prefixes & PREFIX_DATA) {
- dflag ^= 1;
- }
- if (prefixes & PREFIX_ADR) {
- aflag ^= 1;
- }
-#ifdef TARGET_X86_64
if (CODE64(s)) {
- if (rex_w == 1) {
- /* 0x66 is ignored if rex.w is set */
- dflag = 2;
+ /* In 64-bit mode, the default data size is 32-bit. Select 64-bit
+ data with rex_w, and 16-bit data with 0x66; rex_w takes precedence
+ over 0x66 if both are present. */
+ dflag = (rex_w > 0 ? 2 : prefixes & PREFIX_DATA ? 0 : 1);
+ /* In 64-bit mode, 0x67 selects 32-bit addressing. */
+ aflag = (prefixes & PREFIX_ADR ? 1 : 2);
+ } else {
+ /* In 16/32-bit mode, 0x66 selects the opposite data size. */
+ dflag = s->code32;
+ if (prefixes & PREFIX_DATA) {
+ dflag ^= 1;
}
- if (!(prefixes & PREFIX_ADR)) {
- aflag = 2;
+ /* In 16/32-bit mode, 0x67 selects the opposite addressing. */
+ aflag = s->code32;
+ if (prefixes & PREFIX_ADR) {
+ aflag ^= 1;
}
}
-#endif
s->prefix = prefixes;
s->aflag = aflag;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* [Qemu-devel] [PATCH 26/26] q35: set fw_name
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (24 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 25/26] target-i386: Fix aflag logic for CODE64 and the 0x67 prefix Michael Roth
@ 2013-06-12 21:41 ` Michael Roth
2013-06-13 9:16 ` [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Stefan Hajnoczi
` (4 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Michael Roth @ 2013-06-12 21:41 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
From: "Michael S. Tsirkin" <mst@redhat.com>
PCI host bridges need to set fw_name to be discoverable
by bios for boot device selection.
In particular, seabios expects root device to be called
"/pci/@i0cf8", so let's set it up like that for Q35.
Cc: qemu-stable@nongnu.org
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Amos Kong <akong@redhat.com>
(cherry picked from commit 68c0e134a090666246b467deaf9046e573b089f2)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
hw/pci-host/q35.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
index 8467f86..24df6b5 100644
--- a/hw/pci-host/q35.c
+++ b/hw/pci-host/q35.c
@@ -76,6 +76,7 @@ static void q35_host_class_init(ObjectClass *klass, void *data)
k->init = q35_host_init;
dc->props = mch_props;
+ dc->fw_name = "pci";
}
static void q35_host_initfn(Object *obj)
--
1.7.9.5
^ permalink raw reply related [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (25 preceding siblings ...)
2013-06-12 21:41 ` [Qemu-devel] [PATCH 26/26] q35: set fw_name Michael Roth
@ 2013-06-13 9:16 ` Stefan Hajnoczi
2013-06-13 12:27 ` Paolo Bonzini
` (3 subsequent siblings)
30 siblings, 0 replies; 45+ messages in thread
From: Stefan Hajnoczi @ 2013-06-13 9:16 UTC (permalink / raw)
To: Michael Roth; +Cc: qemu-devel, qemu-stable
On Wed, Jun 12, 2013 at 11:41 PM, Michael Roth
<mdroth@linux.vnet.ibm.com> wrote:
> Please respond here or CC qemu-stable@nongnu.org on any patches you
> think should be included in the release. The cut-off date is
> 2013-06-19 for new patches.
commit 293c51a6ee369228633a8428ab689f14c045ff98
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date: Wed Jun 5 10:33:14 2013 +0200
blockdev: reset werror/rerror on drive_del
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (26 preceding siblings ...)
2013-06-13 9:16 ` [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Stefan Hajnoczi
@ 2013-06-13 12:27 ` Paolo Bonzini
2013-06-13 12:36 ` Andreas Färber
2013-06-13 12:36 ` Frederic Konrad
` (2 subsequent siblings)
30 siblings, 1 reply; 45+ messages in thread
From: Paolo Bonzini @ 2013-06-13 12:27 UTC (permalink / raw)
To: Michael Roth; +Cc: qemu-devel, qemu-stable
Il 12/06/2013 17:41, Michael Roth ha scritto:
> Hi everyone,
>
> The following new patches are queued for QEMU stable v1.5.1:
>
> https://github.com/mdroth/qemu/commits/stable-1.5-staging
>
> The release is planned for 2013-06-26:
>
> http://wiki.qemu.org/Planning/1.5
>
> Please respond here or CC qemu-stable@nongnu.org on any patches you
> think should be included in the release. The cut-off date is
> 2013-06-19 for new patches.
I'm going to send pull requests for SCSI and NBD on Monday, both of them
will include 1.5.1 patches. Thanks!
Paolo
> Testing/feedback is greatly appreciated.
>
> Thanks!
>
> ----------------------------------------------------------------
> Amos Kong (1):
> qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path
>
> Andreas Färber (1):
> ide: Set BSY bit during FLUSH
>
> Aneesh Kumar K.V (2):
> hw/9pfs: Fix segfault with 9p2000.u
> hw/9pfs: use O_NOFOLLOW for mapped readlink operation
>
> Brad Smith (2):
> Remove OSS support for OpenBSD
> ui/gtk.c: Fix *BSD build of Gtk+ UI
>
> Cornelia Huck (2):
> s390x/css: Fix concurrent sense.
> virtio-ccw: Fix unsetting of indicators.
>
> Ed Maste (1):
> host-libusb: Correct test for USB packet state
>
> Gerd Hoffmann (3):
> chardev: fix "info chardev" output
> Revert "roms: switch oldnoconfig to olddefconfig"
> update seabios to release 1.7.2.2
>
> Luiz Capitulino (1):
> target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses
>
> Michael Marineau (1):
> Fix usage of USB_DEV_FLAG_IS_HOST flag.
>
> Michael Roth (1):
> qemu-char: don't issue CHR_EVENT_OPEN in a BH
>
> Michael S. Tsirkin (1):
> q35: set fw_name
>
> Paolo Bonzini (1):
> do not check pointers after dereferencing them
>
> Peter Crosthwaite (1):
> qom/object: Don't poll cast cache for NULL objects
>
> Richard Henderson (1):
> target-i386: Fix aflag logic for CODE64 and the 0x67 prefix
>
> Stefan Hajnoczi (2):
> rtl8139: flush queued packets when RxBufPtr is written
> vmxnet3: fix NICState cleanup
>
> Stefano Stabellini (4):
> xen: simplify xen_enabled
> main_loop: do not set nonblocking if xen_enabled()
> xen_machine_pv: do not create a dummy CPU in machine->init
> xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional)
>
> Wendy Liang (1):
> xilinx_axidma: Do not set DMA .notify to NULL after notify
>
> audio/ossaudio.c | 4 ----
> backends/baum.c | 2 --
> backends/msmouse.c | 1 +
> configure | 5 ++---
> hw/9pfs/virtio-9p-local.c | 2 +-
> hw/9pfs/virtio-9p.c | 2 +-
> hw/core/qdev.c | 10 ++++++++-
> hw/dma/xilinx_axidma.c | 3 ++-
> hw/i386/pc_piix.c | 6 +++---
> hw/i386/xen_machine_pv.c | 16 ---------------
> hw/ide/core.c | 1 +
> hw/net/rtl8139.c | 3 +++
> hw/net/vmxnet3.c | 2 +-
> hw/pci-host/q35.c | 1 +
> hw/s390x/css.c | 2 +-
> hw/s390x/virtio-ccw.c | 8 ++++----
> hw/usb/core.c | 2 +-
> hw/usb/host-libusb.c | 2 +-
> hw/virtio/virtio-bus.c | 6 ++++++
> include/hw/i386/pc.h | 3 +++
> include/hw/xen/xen.h | 4 ----
> include/qemu-common.h | 1 +
> include/sysemu/char.h | 2 +-
> monitor.c | 2 +-
> pc-bios/bios.bin | Bin 131072 -> 131072 bytes
> qemu-char.c | 41 ++++++++++++++++++-------------------
> qom/object.c | 4 ++--
> roms/configure-seabios.sh | 2 +-
> roms/seabios | 2 +-
> savevm.c | 8 ++++----
> spice-qemu-char.c | 1 +
> target-i386/arch_memory_mapping.c | 10 +++++----
> target-i386/translate.c | 30 +++++++++++++--------------
> ui/console.c | 4 ++++
> ui/gtk.c | 2 ++
> vl.c | 2 +-
> xen-all.c | 12 +++++------
> 37 files changed, 107 insertions(+), 101 deletions(-)
>
>
>
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-13 12:27 ` Paolo Bonzini
@ 2013-06-13 12:36 ` Andreas Färber
2013-06-13 13:47 ` mdroth
2013-06-17 22:29 ` mdroth
0 siblings, 2 replies; 45+ messages in thread
From: Andreas Färber @ 2013-06-13 12:36 UTC (permalink / raw)
To: Michael Roth; +Cc: Paolo Bonzini, qemu-devel, qemu-stable
Am 13.06.2013 14:27, schrieb Paolo Bonzini:
> Il 12/06/2013 17:41, Michael Roth ha scritto:
>> Hi everyone,
>>
>> The following new patches are queued for QEMU stable v1.5.1:
>>
>> https://github.com/mdroth/qemu/commits/stable-1.5-staging
>>
>> The release is planned for 2013-06-26:
>>
>> http://wiki.qemu.org/Planning/1.5
>>
>> Please respond here or CC qemu-stable@nongnu.org on any patches you
>> think should be included in the release. The cut-off date is
>> 2013-06-19 for new patches.
>
> I'm going to send pull requests for SCSI and NBD on Monday, both of them
> will include 1.5.1 patches. Thanks!
Ditto for my in-flight qom-cpu pull.
BTW v1.4.2 was still missing in qemu.git yesterday, is there a pull
pending already?
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-13 12:36 ` Andreas Färber
@ 2013-06-13 13:47 ` mdroth
2013-06-17 22:29 ` mdroth
1 sibling, 0 replies; 45+ messages in thread
From: mdroth @ 2013-06-13 13:47 UTC (permalink / raw)
To: Andreas Färber, aliguori; +Cc: Paolo Bonzini, qemu-devel, qemu-stable
On Thu, Jun 13, 2013 at 02:36:20PM +0200, Andreas Färber wrote:
> Am 13.06.2013 14:27, schrieb Paolo Bonzini:
> > Il 12/06/2013 17:41, Michael Roth ha scritto:
> >> Hi everyone,
> >>
> >> The following new patches are queued for QEMU stable v1.5.1:
> >>
> >> https://github.com/mdroth/qemu/commits/stable-1.5-staging
> >>
> >> The release is planned for 2013-06-26:
> >>
> >> http://wiki.qemu.org/Planning/1.5
> >>
> >> Please respond here or CC qemu-stable@nongnu.org on any patches you
> >> think should be included in the release. The cut-off date is
> >> 2013-06-19 for new patches.
> >
> > I'm going to send pull requests for SCSI and NBD on Monday, both of them
> > will include 1.5.1 patches. Thanks!
>
> Ditto for my in-flight qom-cpu pull.
>
> BTW v1.4.2 was still missing in qemu.git yesterday, is there a pull
> pending already?
Hmm, yah, it's pushed/tagging in the 1.4 repo:
http://git.qemu.org/?p=qemu-stable-1.4.git;a=commit;h=89400a80f5827ae3696e3da73df0996154965a0a
Anthony, do you still need to pull 1.4.2 into qemu.git?
>
> Andreas
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
>
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-13 12:36 ` Andreas Färber
2013-06-13 13:47 ` mdroth
@ 2013-06-17 22:29 ` mdroth
1 sibling, 0 replies; 45+ messages in thread
From: mdroth @ 2013-06-17 22:29 UTC (permalink / raw)
To: Andreas Färber; +Cc: Paolo Bonzini, qemu-devel, qemu-stable
On Thu, Jun 13, 2013 at 02:36:20PM +0200, Andreas Färber wrote:
> Am 13.06.2013 14:27, schrieb Paolo Bonzini:
> > Il 12/06/2013 17:41, Michael Roth ha scritto:
> >> Hi everyone,
> >>
> >> The following new patches are queued for QEMU stable v1.5.1:
> >>
> >> https://github.com/mdroth/qemu/commits/stable-1.5-staging
> >>
> >> The release is planned for 2013-06-26:
> >>
> >> http://wiki.qemu.org/Planning/1.5
> >>
> >> Please respond here or CC qemu-stable@nongnu.org on any patches you
> >> think should be included in the release. The cut-off date is
> >> 2013-06-19 for new patches.
> >
> > I'm going to send pull requests for SCSI and NBD on Monday, both of them
> > will include 1.5.1 patches. Thanks!
>
> Ditto for my in-flight qom-cpu pull.
I'm planning on pulling in these:
pc: Fix crash when attempting to hotplug CPU with negative ID
target-i386: cpu: Fix potential buffer overrun in get_register_name_32()
Were there any others from that PULL?
>
> BTW v1.4.2 was still missing in qemu.git yesterday, is there a pull
> pending already?
>
> Andreas
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
>
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (27 preceding siblings ...)
2013-06-13 12:27 ` Paolo Bonzini
@ 2013-06-13 12:36 ` Frederic Konrad
2013-06-13 12:44 ` Frederic Konrad
2013-06-17 22:56 ` mdroth
30 siblings, 0 replies; 45+ messages in thread
From: Frederic Konrad @ 2013-06-13 12:36 UTC (permalink / raw)
To: Michael Roth; +Cc: qemu-devel, qemu-stable
On 12/06/2013 23:41, Michael Roth wrote:
> Hi everyone,
>
> The following new patches are queued for QEMU stable v1.5.1:
>
> https://github.com/mdroth/qemu/commits/stable-1.5-staging
>
> The release is planned for 2013-06-26:
>
> http://wiki.qemu.org/Planning/1.5
>
> Please respond here or CC qemu-stable@nongnu.org on any patches you
> think should be included in the release. The cut-off date is
> 2013-06-19 for new patches.
Hi,
I think "virtio-scsi: forward scsibus for virtio-scsi-pci." should be
included.
I CC'ed qemu-stable@nongnu.org but I don't see it on the stable list.
Did I make a mistake somewhere?
Thanks,
Fred
>
> Testing/feedback is greatly appreciated.
>
> Thanks!
>
> ----------------------------------------------------------------
> Amos Kong (1):
> qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path
>
> Andreas Färber (1):
> ide: Set BSY bit during FLUSH
>
> Aneesh Kumar K.V (2):
> hw/9pfs: Fix segfault with 9p2000.u
> hw/9pfs: use O_NOFOLLOW for mapped readlink operation
>
> Brad Smith (2):
> Remove OSS support for OpenBSD
> ui/gtk.c: Fix *BSD build of Gtk+ UI
>
> Cornelia Huck (2):
> s390x/css: Fix concurrent sense.
> virtio-ccw: Fix unsetting of indicators.
>
> Ed Maste (1):
> host-libusb: Correct test for USB packet state
>
> Gerd Hoffmann (3):
> chardev: fix "info chardev" output
> Revert "roms: switch oldnoconfig to olddefconfig"
> update seabios to release 1.7.2.2
>
> Luiz Capitulino (1):
> target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses
>
> Michael Marineau (1):
> Fix usage of USB_DEV_FLAG_IS_HOST flag.
>
> Michael Roth (1):
> qemu-char: don't issue CHR_EVENT_OPEN in a BH
>
> Michael S. Tsirkin (1):
> q35: set fw_name
>
> Paolo Bonzini (1):
> do not check pointers after dereferencing them
>
> Peter Crosthwaite (1):
> qom/object: Don't poll cast cache for NULL objects
>
> Richard Henderson (1):
> target-i386: Fix aflag logic for CODE64 and the 0x67 prefix
>
> Stefan Hajnoczi (2):
> rtl8139: flush queued packets when RxBufPtr is written
> vmxnet3: fix NICState cleanup
>
> Stefano Stabellini (4):
> xen: simplify xen_enabled
> main_loop: do not set nonblocking if xen_enabled()
> xen_machine_pv: do not create a dummy CPU in machine->init
> xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional)
>
> Wendy Liang (1):
> xilinx_axidma: Do not set DMA .notify to NULL after notify
>
> audio/ossaudio.c | 4 ----
> backends/baum.c | 2 --
> backends/msmouse.c | 1 +
> configure | 5 ++---
> hw/9pfs/virtio-9p-local.c | 2 +-
> hw/9pfs/virtio-9p.c | 2 +-
> hw/core/qdev.c | 10 ++++++++-
> hw/dma/xilinx_axidma.c | 3 ++-
> hw/i386/pc_piix.c | 6 +++---
> hw/i386/xen_machine_pv.c | 16 ---------------
> hw/ide/core.c | 1 +
> hw/net/rtl8139.c | 3 +++
> hw/net/vmxnet3.c | 2 +-
> hw/pci-host/q35.c | 1 +
> hw/s390x/css.c | 2 +-
> hw/s390x/virtio-ccw.c | 8 ++++----
> hw/usb/core.c | 2 +-
> hw/usb/host-libusb.c | 2 +-
> hw/virtio/virtio-bus.c | 6 ++++++
> include/hw/i386/pc.h | 3 +++
> include/hw/xen/xen.h | 4 ----
> include/qemu-common.h | 1 +
> include/sysemu/char.h | 2 +-
> monitor.c | 2 +-
> pc-bios/bios.bin | Bin 131072 -> 131072 bytes
> qemu-char.c | 41 ++++++++++++++++++-------------------
> qom/object.c | 4 ++--
> roms/configure-seabios.sh | 2 +-
> roms/seabios | 2 +-
> savevm.c | 8 ++++----
> spice-qemu-char.c | 1 +
> target-i386/arch_memory_mapping.c | 10 +++++----
> target-i386/translate.c | 30 +++++++++++++--------------
> ui/console.c | 4 ++++
> ui/gtk.c | 2 ++
> vl.c | 2 +-
> xen-all.c | 12 +++++------
> 37 files changed, 107 insertions(+), 101 deletions(-)
>
>
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (28 preceding siblings ...)
2013-06-13 12:36 ` Frederic Konrad
@ 2013-06-13 12:44 ` Frederic Konrad
2013-06-13 13:21 ` Andreas Färber
2013-06-17 22:56 ` mdroth
30 siblings, 1 reply; 45+ messages in thread
From: Frederic Konrad @ 2013-06-13 12:44 UTC (permalink / raw)
To: Michael Roth; +Cc: qemu-devel, qemu-stable
On 12/06/2013 23:41, Michael Roth wrote:
> Hi everyone,
>
> The following new patches are queued for QEMU stable v1.5.1:
>
> https://github.com/mdroth/qemu/commits/stable-1.5-staging
>
> The release is planned for 2013-06-26:
>
> http://wiki.qemu.org/Planning/1.5
>
> Please respond here or CC qemu-stable@nongnu.org on any patches you
> think should be included in the release. The cut-off date is
> 2013-06-19 for new patches.
>
> Testing/feedback is greatly appreciated.
And it seems you forget "virtio-rng: Fix crash with non-default backend".
You said you'll pick it up for 1.5.1 ;)
Fred
>
> Thanks!
>
> ----------------------------------------------------------------
> Amos Kong (1):
> qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path
>
> Andreas Färber (1):
> ide: Set BSY bit during FLUSH
>
> Aneesh Kumar K.V (2):
> hw/9pfs: Fix segfault with 9p2000.u
> hw/9pfs: use O_NOFOLLOW for mapped readlink operation
>
> Brad Smith (2):
> Remove OSS support for OpenBSD
> ui/gtk.c: Fix *BSD build of Gtk+ UI
>
> Cornelia Huck (2):
> s390x/css: Fix concurrent sense.
> virtio-ccw: Fix unsetting of indicators.
>
> Ed Maste (1):
> host-libusb: Correct test for USB packet state
>
> Gerd Hoffmann (3):
> chardev: fix "info chardev" output
> Revert "roms: switch oldnoconfig to olddefconfig"
> update seabios to release 1.7.2.2
>
> Luiz Capitulino (1):
> target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses
>
> Michael Marineau (1):
> Fix usage of USB_DEV_FLAG_IS_HOST flag.
>
> Michael Roth (1):
> qemu-char: don't issue CHR_EVENT_OPEN in a BH
>
> Michael S. Tsirkin (1):
> q35: set fw_name
>
> Paolo Bonzini (1):
> do not check pointers after dereferencing them
>
> Peter Crosthwaite (1):
> qom/object: Don't poll cast cache for NULL objects
>
> Richard Henderson (1):
> target-i386: Fix aflag logic for CODE64 and the 0x67 prefix
>
> Stefan Hajnoczi (2):
> rtl8139: flush queued packets when RxBufPtr is written
> vmxnet3: fix NICState cleanup
>
> Stefano Stabellini (4):
> xen: simplify xen_enabled
> main_loop: do not set nonblocking if xen_enabled()
> xen_machine_pv: do not create a dummy CPU in machine->init
> xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional)
>
> Wendy Liang (1):
> xilinx_axidma: Do not set DMA .notify to NULL after notify
>
> audio/ossaudio.c | 4 ----
> backends/baum.c | 2 --
> backends/msmouse.c | 1 +
> configure | 5 ++---
> hw/9pfs/virtio-9p-local.c | 2 +-
> hw/9pfs/virtio-9p.c | 2 +-
> hw/core/qdev.c | 10 ++++++++-
> hw/dma/xilinx_axidma.c | 3 ++-
> hw/i386/pc_piix.c | 6 +++---
> hw/i386/xen_machine_pv.c | 16 ---------------
> hw/ide/core.c | 1 +
> hw/net/rtl8139.c | 3 +++
> hw/net/vmxnet3.c | 2 +-
> hw/pci-host/q35.c | 1 +
> hw/s390x/css.c | 2 +-
> hw/s390x/virtio-ccw.c | 8 ++++----
> hw/usb/core.c | 2 +-
> hw/usb/host-libusb.c | 2 +-
> hw/virtio/virtio-bus.c | 6 ++++++
> include/hw/i386/pc.h | 3 +++
> include/hw/xen/xen.h | 4 ----
> include/qemu-common.h | 1 +
> include/sysemu/char.h | 2 +-
> monitor.c | 2 +-
> pc-bios/bios.bin | Bin 131072 -> 131072 bytes
> qemu-char.c | 41 ++++++++++++++++++-------------------
> qom/object.c | 4 ++--
> roms/configure-seabios.sh | 2 +-
> roms/seabios | 2 +-
> savevm.c | 8 ++++----
> spice-qemu-char.c | 1 +
> target-i386/arch_memory_mapping.c | 10 +++++----
> target-i386/translate.c | 30 +++++++++++++--------------
> ui/console.c | 4 ++++
> ui/gtk.c | 2 ++
> vl.c | 2 +-
> xen-all.c | 12 +++++------
> 37 files changed, 107 insertions(+), 101 deletions(-)
>
>
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-13 12:44 ` Frederic Konrad
@ 2013-06-13 13:21 ` Andreas Färber
2013-06-13 13:29 ` Frederic Konrad
0 siblings, 1 reply; 45+ messages in thread
From: Andreas Färber @ 2013-06-13 13:21 UTC (permalink / raw)
To: Frederic Konrad; +Cc: qemu-stable, Michael Roth, qemu-devel
Am 13.06.2013 14:44, schrieb Frederic Konrad:
> On 12/06/2013 23:41, Michael Roth wrote:
>> Hi everyone,
>>
>> The following new patches are queued for QEMU stable v1.5.1:
>>
>> https://github.com/mdroth/qemu/commits/stable-1.5-staging
>>
>> The release is planned for 2013-06-26:
>>
>> http://wiki.qemu.org/Planning/1.5
>>
>> Please respond here or CC qemu-stable@nongnu.org on any patches you
>> think should be included in the release. The cut-off date is
>> 2013-06-19 for new patches.
>>
>> Testing/feedback is greatly appreciated.
>
> And it seems you forget "virtio-rng: Fix crash with non-default backend".
> You said you'll pick it up for 1.5.1 ;)
It's not yet committed to master, so cannot be cherry-picked into the
queue yet. Waiting for it myself. ;)
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-13 13:21 ` Andreas Färber
@ 2013-06-13 13:29 ` Frederic Konrad
2013-06-13 14:10 ` mdroth
0 siblings, 1 reply; 45+ messages in thread
From: Frederic Konrad @ 2013-06-13 13:29 UTC (permalink / raw)
To: Andreas Färber; +Cc: qemu-stable, Michael Roth, qemu-devel
On 13/06/2013 15:21, Andreas Färber wrote:
> Am 13.06.2013 14:44, schrieb Frederic Konrad:
>> On 12/06/2013 23:41, Michael Roth wrote:
>>> Hi everyone,
>>>
>>> The following new patches are queued for QEMU stable v1.5.1:
>>>
>>> https://github.com/mdroth/qemu/commits/stable-1.5-staging
>>>
>>> The release is planned for 2013-06-26:
>>>
>>> http://wiki.qemu.org/Planning/1.5
>>>
>>> Please respond here or CC qemu-stable@nongnu.org on any patches you
>>> think should be included in the release. The cut-off date is
>>> 2013-06-19 for new patches.
>>>
>>> Testing/feedback is greatly appreciated.
>> And it seems you forget "virtio-rng: Fix crash with non-default backend".
>> You said you'll pick it up for 1.5.1 ;)
> It's not yet committed to master, so cannot be cherry-picked into the
> queue yet. Waiting for it myself. ;)
>
> Andreas
>
Oh ok, so it need to be in master for being merged in stable?
I didn't know that ;)
Fred
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-13 13:29 ` Frederic Konrad
@ 2013-06-13 14:10 ` mdroth
0 siblings, 0 replies; 45+ messages in thread
From: mdroth @ 2013-06-13 14:10 UTC (permalink / raw)
To: Frederic Konrad; +Cc: qemu-stable, Andreas Färber, qemu-devel
On Thu, Jun 13, 2013 at 03:29:46PM +0200, Frederic Konrad wrote:
> On 13/06/2013 15:21, Andreas Färber wrote:
> >Am 13.06.2013 14:44, schrieb Frederic Konrad:
> >>On 12/06/2013 23:41, Michael Roth wrote:
> >>>Hi everyone,
> >>>
> >>>The following new patches are queued for QEMU stable v1.5.1:
> >>>
> >>>https://github.com/mdroth/qemu/commits/stable-1.5-staging
> >>>
> >>>The release is planned for 2013-06-26:
> >>>
> >>>http://wiki.qemu.org/Planning/1.5
> >>>
> >>>Please respond here or CC qemu-stable@nongnu.org on any patches you
> >>>think should be included in the release. The cut-off date is
> >>>2013-06-19 for new patches.
> >>>
> >>>Testing/feedback is greatly appreciated.
> >>And it seems you forget "virtio-rng: Fix crash with non-default backend".
> >>You said you'll pick it up for 1.5.1 ;)
> >It's not yet committed to master, so cannot be cherry-picked into the
> >queue yet. Waiting for it myself. ;)
> >
> >Andreas
> >
> Oh ok, so it need to be in master for being merged in stable?
Yes. There are exceptions in rare cases (such as preventing WW3), but
for the most part we need patches to get the full scrutiny of going
through upstream review process before we pull them into a stable
branch.
Same reason why:
"virtio-scsi: forward scsibus for virtio-scsi-pci"
isn't in yet. If you're targeting a patch for a stable release and think
it may not make it upstream in time consider pinging the respective
maintainers if it's had enough time for review.
>
> I didn't know that ;)
>
> Fred
>
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-12 21:41 [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19 Michael Roth
` (29 preceding siblings ...)
2013-06-13 12:44 ` Frederic Konrad
@ 2013-06-17 22:56 ` mdroth
2013-06-17 23:04 ` Richard Henderson
30 siblings, 1 reply; 45+ messages in thread
From: mdroth @ 2013-06-17 22:56 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-stable
On Wed, Jun 12, 2013 at 04:41:12PM -0500, Michael Roth wrote:
> Hi everyone,
>
> The following new patches are queued for QEMU stable v1.5.1:
>
> https://github.com/mdroth/qemu/commits/stable-1.5-staging
Repo updated with everything I'm tracking that's been committed so far.
As far as I'm aware there are also the patches in Paolo's upcoming scsi
pull, and the following that haven't yet been applied:
wdt_i6300esb: fix vmstate versioning
virtio-rng: Fix crash with non-default backend
virtio-scsi: forward scsibus for virtio-scsi-pci
ppc: do not register IABR SPR twice for 603e
savevm: avoid leaking popen(3) file pointer
raw-posix: Fix /dev/cdrom magic on OS X
s390/virtio-ccw: Fix virtio reset
390/ipl: Fix boot order
Freeze is EOD Wednesday so please work with the respective maintainers
to get these upstream if you're targetting anything for 1.5.1.
>
> The release is planned for 2013-06-26:
>
> http://wiki.qemu.org/Planning/1.5
>
> Please respond here or CC qemu-stable@nongnu.org on any patches you
> think should be included in the release. The cut-off date is
> 2013-06-19 for new patches.
> > Testing/feedback is greatly appreciated.
>
> Thanks!
>
> ----------------------------------------------------------------
> Amos Kong (1):
> qdev: fix get_fw_dev_path to support to add nothing to fw_dev_path
>
> Andreas Färber (1):
> ide: Set BSY bit during FLUSH
>
> Aneesh Kumar K.V (2):
> hw/9pfs: Fix segfault with 9p2000.u
> hw/9pfs: use O_NOFOLLOW for mapped readlink operation
>
> Brad Smith (2):
> Remove OSS support for OpenBSD
> ui/gtk.c: Fix *BSD build of Gtk+ UI
>
> Cornelia Huck (2):
> s390x/css: Fix concurrent sense.
> virtio-ccw: Fix unsetting of indicators.
>
> Ed Maste (1):
> host-libusb: Correct test for USB packet state
>
> Gerd Hoffmann (3):
> chardev: fix "info chardev" output
> Revert "roms: switch oldnoconfig to olddefconfig"
> update seabios to release 1.7.2.2
>
> Luiz Capitulino (1):
> target-i386: fix abort on bad PML4E/PDPTE/PDE/PTE addresses
>
> Michael Marineau (1):
> Fix usage of USB_DEV_FLAG_IS_HOST flag.
>
> Michael Roth (1):
> qemu-char: don't issue CHR_EVENT_OPEN in a BH
>
> Michael S. Tsirkin (1):
> q35: set fw_name
>
> Paolo Bonzini (1):
> do not check pointers after dereferencing them
>
> Peter Crosthwaite (1):
> qom/object: Don't poll cast cache for NULL objects
>
> Richard Henderson (1):
> target-i386: Fix aflag logic for CODE64 and the 0x67 prefix
>
> Stefan Hajnoczi (2):
> rtl8139: flush queued packets when RxBufPtr is written
> vmxnet3: fix NICState cleanup
>
> Stefano Stabellini (4):
> xen: simplify xen_enabled
> main_loop: do not set nonblocking if xen_enabled()
> xen_machine_pv: do not create a dummy CPU in machine->init
> xen: start PCI hole at 0xe0000000 (same as pc_init1 and qemu-xen-traditional)
>
> Wendy Liang (1):
> xilinx_axidma: Do not set DMA .notify to NULL after notify
>
> audio/ossaudio.c | 4 ----
> backends/baum.c | 2 --
> backends/msmouse.c | 1 +
> configure | 5 ++---
> hw/9pfs/virtio-9p-local.c | 2 +-
> hw/9pfs/virtio-9p.c | 2 +-
> hw/core/qdev.c | 10 ++++++++-
> hw/dma/xilinx_axidma.c | 3 ++-
> hw/i386/pc_piix.c | 6 +++---
> hw/i386/xen_machine_pv.c | 16 ---------------
> hw/ide/core.c | 1 +
> hw/net/rtl8139.c | 3 +++
> hw/net/vmxnet3.c | 2 +-
> hw/pci-host/q35.c | 1 +
> hw/s390x/css.c | 2 +-
> hw/s390x/virtio-ccw.c | 8 ++++----
> hw/usb/core.c | 2 +-
> hw/usb/host-libusb.c | 2 +-
> hw/virtio/virtio-bus.c | 6 ++++++
> include/hw/i386/pc.h | 3 +++
> include/hw/xen/xen.h | 4 ----
> include/qemu-common.h | 1 +
> include/sysemu/char.h | 2 +-
> monitor.c | 2 +-
> pc-bios/bios.bin | Bin 131072 -> 131072 bytes
> qemu-char.c | 41 ++++++++++++++++++-------------------
> qom/object.c | 4 ++--
> roms/configure-seabios.sh | 2 +-
> roms/seabios | 2 +-
> savevm.c | 8 ++++----
> spice-qemu-char.c | 1 +
> target-i386/arch_memory_mapping.c | 10 +++++----
> target-i386/translate.c | 30 +++++++++++++--------------
> ui/console.c | 4 ++++
> ui/gtk.c | 2 ++
> vl.c | 2 +-
> xen-all.c | 12 +++++------
> 37 files changed, 107 insertions(+), 101 deletions(-)
>
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-17 22:56 ` mdroth
@ 2013-06-17 23:04 ` Richard Henderson
2013-06-17 23:17 ` mdroth
0 siblings, 1 reply; 45+ messages in thread
From: Richard Henderson @ 2013-06-17 23:04 UTC (permalink / raw)
To: mdroth; +Cc: qemu-devel, qemu-stable
On 06/17/2013 03:56 PM, mdroth wrote:
> On Wed, Jun 12, 2013 at 04:41:12PM -0500, Michael Roth wrote:
>> Hi everyone,
>>
>> The following new patches are queued for QEMU stable v1.5.1:
>>
>> https://github.com/mdroth/qemu/commits/stable-1.5-staging
>
> Repo updated with everything I'm tracking that's been committed so far.
>
> As far as I'm aware there are also the patches in Paolo's upcoming scsi
> pull, and the following that haven't yet been applied:
>
> wdt_i6300esb: fix vmstate versioning
> virtio-rng: Fix crash with non-default backend
> virtio-scsi: forward scsibus for virtio-scsi-pci
> ppc: do not register IABR SPR twice for 603e
> savevm: avoid leaking popen(3) file pointer
> raw-posix: Fix /dev/cdrom magic on OS X
> s390/virtio-ccw: Fix virtio reset
> 390/ipl: Fix boot order
>
> Freeze is EOD Wednesday so please work with the respective maintainers
> to get these upstream if you're targetting anything for 1.5.1.
Anton's tcg/ppc64 patch set ought to go to 1.5.1. It was merged to
mainline today; the patches from the pull request were cc'd to qemu-stable.
r~
^ permalink raw reply [flat|nested] 45+ messages in thread
* Re: [Qemu-devel] Patch Round-up for stable 1.5.1, freeze on 2013-06-19
2013-06-17 23:04 ` Richard Henderson
@ 2013-06-17 23:17 ` mdroth
0 siblings, 0 replies; 45+ messages in thread
From: mdroth @ 2013-06-17 23:17 UTC (permalink / raw)
To: Richard Henderson; +Cc: qemu-devel, qemu-stable
On Mon, Jun 17, 2013 at 04:04:31PM -0700, Richard Henderson wrote:
> On 06/17/2013 03:56 PM, mdroth wrote:
> > On Wed, Jun 12, 2013 at 04:41:12PM -0500, Michael Roth wrote:
> >> Hi everyone,
> >>
> >> The following new patches are queued for QEMU stable v1.5.1:
> >>
> >> https://github.com/mdroth/qemu/commits/stable-1.5-staging
> >
> > Repo updated with everything I'm tracking that's been committed so far.
> >
> > As far as I'm aware there are also the patches in Paolo's upcoming scsi
> > pull, and the following that haven't yet been applied:
> >
> > wdt_i6300esb: fix vmstate versioning
> > virtio-rng: Fix crash with non-default backend
> > virtio-scsi: forward scsibus for virtio-scsi-pci
> > ppc: do not register IABR SPR twice for 603e
> > savevm: avoid leaking popen(3) file pointer
> > raw-posix: Fix /dev/cdrom magic on OS X
> > s390/virtio-ccw: Fix virtio reset
> > 390/ipl: Fix boot order
> >
> > Freeze is EOD Wednesday so please work with the respective maintainers
> > to get these upstream if you're targetting anything for 1.5.1.
>
> Anton's tcg/ppc64 patch set ought to go to 1.5.1. It was merged to
> mainline today; the patches from the pull request were cc'd to qemu-stable.
The emails were still were trickling into qemu-stable out of order when I sent
that for some reason, so I only had 2-4 of that pull when I sent my last
email.
When 1/4 finally landed I went ahead and rebased/re-applied them all in
order so they should all be there now.
>
>
> r~
>
^ permalink raw reply [flat|nested] 45+ messages in thread