qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday
@ 2013-01-16 16:49 Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 01/21] Fix semaphores fallback code Michael Roth
                   ` (22 more replies)
  0 siblings, 23 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

Hi everyone,

The following new patches are queued for QEMU stable v1.3.1:

https://github.com/mdroth/qemu/commits/stable-1.3-staging

The release is planned for 01-25-2013:

http://wiki.qemu.org/Planning/1.3

Please CC qemu-stable@nongnu.org on any patches you think should be
included in the release. The cut-off date is 01-21-2013 for new patches.

Testing/feedback is greatly appreciated.

Thanks!

204dd38 raw-posix: fix bdrv_aio_ioctl (Paolo Bonzini)
86bab45 vfio-pci: Loosen sanity checks to allow future features (Alex Williamson)
006c747 pci-assign: Enable MSIX on device to match guest (Alex Williamson)
f042cca vfio-pci: Make host MSI-X enable track guest (Alex Williamson)
1205b80 target-xtensa: fix search_pc for the last TB opcode (Max Filippov)
ff0c079 buffered_file: do not send more than s->bytes_xfer bytes per tick (Paolo Bonzini)
d745511 migration: fix migration_bitmap leak (Paolo Bonzini)
5afd0ec e1000: Discard oversized packets based on SBP|LPE (Michael Contreras)
c4cd5b0 qxl+vnc: register a vm state change handler for dummy spice_server (Uri Lublin)
7ca2496 qxl: save qemu_create_displaysurface_from result (Gerd Hoffmann)
bfae937 target-xtensa: fix ITLB/DTLB page protection flags (Max Filippov)
b68c48f pixman: fix vnc tight png/jpeg support (Gerd Hoffmann)
36fd817 Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901 (Gerd Hoffmann)
0bc5f4a seabios: update to e8a76b0f225bba5ba9d63ab227e0a37b3beb1059 (Gerd Hoffmann)
37e1428 vfio-pci: Don't use kvm_irqchip_in_kernel (Alex Williamson)
518799a target-mips: Fix incorrect shift for SHILO and SHILOV (Petar Jovanovic)
16c5fe4 target-mips: Fix incorrect code and test for INSV (Petar Jovanovic)
f1a2195 migration: Fix madvise breakage if host and guest have different page sizes (David Gibson)
3b4fc1f Fix off-by-1 error in RAM migration code (David Gibson)
d67d95f Disable semaphores fallback code for OpenBSD (Brad Smith)
0a7ad69 Fix semaphores fallback code (Brad Smith)

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 01/21] Fix semaphores fallback code
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 02/21] Disable semaphores fallback code for OpenBSD Michael Roth
                   ` (21 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Brad Smith <brad@comstyle.com>

As reported in bug 1087114 the semaphores fallback code is broken which
results in QEMU crashing and making QEMU unusable.

This patch is from Paolo.

This needs to be back ported to the 1.3 stable tree as well.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Brad Smith <brad@comstyle.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
(cherry picked from commit a795ef8dcb8cbadffc996c41ff38927a97645234)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qemu-thread-posix.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/qemu-thread-posix.c b/qemu-thread-posix.c
index 4ef9c7b..9a3885f 100644
--- a/qemu-thread-posix.c
+++ b/qemu-thread-posix.c
@@ -213,6 +213,7 @@ int qemu_sem_timedwait(QemuSemaphore *sem, int ms)
     while (sem->count < 0) {
         rc = pthread_cond_timedwait(&sem->cond, &sem->lock, &ts);
         if (rc == ETIMEDOUT) {
+            ++sem->count;
             break;
         }
         if (rc != 0) {
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 02/21] Disable semaphores fallback code for OpenBSD
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 01/21] Fix semaphores fallback code Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 03/21] Fix off-by-1 error in RAM migration code Michael Roth
                   ` (20 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Brad Smith <brad@comstyle.com>

Disable the semaphores fallback code for OpenBSD as modern OpenBSD
releases now have sem_timedwait().

Signed-off-by: Brad Smith <brad@comstyle.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
(cherry picked from commit 927fa909d5d5cf8c07673cd16a6d3bdc81250bc0)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 qemu-thread-posix.c |   10 +++++-----
 qemu-thread-posix.h |    2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/qemu-thread-posix.c b/qemu-thread-posix.c
index 9a3885f..e24e2ae 100644
--- a/qemu-thread-posix.c
+++ b/qemu-thread-posix.c
@@ -122,7 +122,7 @@ void qemu_sem_init(QemuSemaphore *sem, int init)
 {
     int rc;
 
-#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
+#if defined(__APPLE__) || defined(__NetBSD__)
     rc = pthread_mutex_init(&sem->lock, NULL);
     if (rc != 0) {
         error_exit(rc, __func__);
@@ -147,7 +147,7 @@ void qemu_sem_destroy(QemuSemaphore *sem)
 {
     int rc;
 
-#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
+#if defined(__APPLE__) || defined(__NetBSD__)
     rc = pthread_cond_destroy(&sem->cond);
     if (rc < 0) {
         error_exit(rc, __func__);
@@ -168,7 +168,7 @@ void qemu_sem_post(QemuSemaphore *sem)
 {
     int rc;
 
-#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
+#if defined(__APPLE__) || defined(__NetBSD__)
     pthread_mutex_lock(&sem->lock);
     if (sem->count == INT_MAX) {
         rc = EINVAL;
@@ -206,7 +206,7 @@ int qemu_sem_timedwait(QemuSemaphore *sem, int ms)
     int rc;
     struct timespec ts;
 
-#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
+#if defined(__APPLE__) || defined(__NetBSD__)
     compute_abs_deadline(&ts, ms);
     pthread_mutex_lock(&sem->lock);
     --sem->count;
@@ -249,7 +249,7 @@ int qemu_sem_timedwait(QemuSemaphore *sem, int ms)
 
 void qemu_sem_wait(QemuSemaphore *sem)
 {
-#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
+#if defined(__APPLE__) || defined(__NetBSD__)
     pthread_mutex_lock(&sem->lock);
     --sem->count;
     while (sem->count < 0) {
diff --git a/qemu-thread-posix.h b/qemu-thread-posix.h
index 380bae2..0f30dcc 100644
--- a/qemu-thread-posix.h
+++ b/qemu-thread-posix.h
@@ -12,7 +12,7 @@ struct QemuCond {
 };
 
 struct QemuSemaphore {
-#if defined(__OpenBSD__) || defined(__APPLE__) || defined(__NetBSD__)
+#if defined(__APPLE__) || defined(__NetBSD__)
     pthread_mutex_t lock;
     pthread_cond_t cond;
     int count;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 03/21] Fix off-by-1 error in RAM migration code
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 01/21] Fix semaphores fallback code Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 02/21] Disable semaphores fallback code for OpenBSD Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 04/21] migration: Fix madvise breakage if host and guest have different page sizes Michael Roth
                   ` (19 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: David Gibson <david@gibson.dropbear.id.au>

The code for migrating (or savevm-ing) memory pages starts off by creating
a dirty bitmap and filling it with 1s.  Except, actually, because bit
addresses are 0-based it fills every bit except bit 0 with 1s and puts an
extra 1 beyond the end of the bitmap, potentially corrupting unrelated
memory.  Oops.  This patch fixes it.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit 7ec81e56edc2b2007ce0ae3982aa5c18af9546ab)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 arch_init.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch_init.c b/arch_init.c
index e6effe8..b75a4c5 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -568,7 +568,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
     int64_t ram_pages = last_ram_offset() >> TARGET_PAGE_BITS;
 
     migration_bitmap = bitmap_new(ram_pages);
-    bitmap_set(migration_bitmap, 1, ram_pages);
+    bitmap_set(migration_bitmap, 0, ram_pages);
     migration_dirty_pages = ram_pages;
 
     bytes_transferred = 0;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 04/21] migration: Fix madvise breakage if host and guest have different page sizes
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (2 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 03/21] Fix off-by-1 error in RAM migration code Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 05/21] target-mips: Fix incorrect code and test for INSV Michael Roth
                   ` (18 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: David Gibson <david@gibson.dropbear.id.au>

madvise(DONTNEED) will throw away the contents of the whole page at the
given address, even if the given length is less than the page size.  One
can argue about whether that's the correct behaviour, but that's what it's
done for a long time in Linux at least.

That means that the madvise() in ram_load(), on a setup where
TARGET_PAGE_SIZE is smaller than the host page size, can throw away data
in guest pages adjacent to the one it's actually processing right now,
leading to guest memory corruption on an incoming migration.

This patch therefore, disables the madvise() if the host page size is
larger than TARGET_PAGE_SIZE.  This means we don't get the benefits of that
madvise() in this case, but a more complete fix is more difficult to
accomplish.  This at least fixes the guest memory corruption.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit 45e6cee42b98d10e2e14885ab656541a9ffd5187)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 arch_init.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch_init.c b/arch_init.c
index b75a4c5..83dcc53 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -840,7 +840,8 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
             memset(host, ch, TARGET_PAGE_SIZE);
 #ifndef _WIN32
             if (ch == 0 &&
-                (!kvm_enabled() || kvm_has_sync_mmu())) {
+                (!kvm_enabled() || kvm_has_sync_mmu()) &&
+                getpagesize() <= TARGET_PAGE_SIZE) {
                 qemu_madvise(host, TARGET_PAGE_SIZE, QEMU_MADV_DONTNEED);
             }
 #endif
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 05/21] target-mips: Fix incorrect code and test for INSV
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (3 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 04/21] migration: Fix madvise breakage if host and guest have different page sizes Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 06/21] target-mips: Fix incorrect shift for SHILO and SHILOV Michael Roth
                   ` (17 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Petar Jovanovic <petarj@mips.com>

Content of register rs should be shifted for pos before applying a mask.
This change contains both fix for the instruction and to the existing test.

Signed-off-by: Petar Jovanovic <petarj@mips.com>
Reviewed-by: Eric Johnson <ericj@mips.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
(cherry picked from commit 34f5606ee101f82a247d09d05644ad2a63c8e342)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target-mips/dsp_helper.c         |    2 +-
 tests/tcg/mips/mips32-dsp/insv.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/target-mips/dsp_helper.c b/target-mips/dsp_helper.c
index e7949c2..fda5f04 100644
--- a/target-mips/dsp_helper.c
+++ b/target-mips/dsp_helper.c
@@ -3152,7 +3152,7 @@ target_ulong helper_##name(CPUMIPSState *env, target_ulong rs,  \
                                                                 \
     filter = ((int32_t)0x01 << size) - 1;                       \
     filter = filter << pos;                                     \
-    temprs = rs & filter;                                       \
+    temprs = (rs << pos) & filter;                              \
     temprt = rt & ~filter;                                      \
     temp = temprs | temprt;                                     \
                                                                 \
diff --git a/tests/tcg/mips/mips32-dsp/insv.c b/tests/tcg/mips/mips32-dsp/insv.c
index 7e3b047..243b007 100644
--- a/tests/tcg/mips/mips32-dsp/insv.c
+++ b/tests/tcg/mips/mips32-dsp/insv.c
@@ -10,7 +10,7 @@ int main()
     dsp    = 0x305;
     rt     = 0x12345678;
     rs     = 0x87654321;
-    result = 0x12345338;
+    result = 0x12345438;
     __asm
         ("wrdsp %2, 0x03\n\t"
          "insv  %0, %1\n\t"
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 06/21] target-mips: Fix incorrect shift for SHILO and SHILOV
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (4 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 05/21] target-mips: Fix incorrect code and test for INSV Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 07/21] vfio-pci: Don't use kvm_irqchip_in_kernel Michael Roth
                   ` (16 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Petar Jovanovic <petarj@mips.com>

helper_shilo has not been shifting an accumulator value correctly for negative
values in 'shift' field. Minor optimization for shift=0 case.
This change also adds tests that will trigger issue and check for regressions.

Signed-off-by: Petar Jovanovic <petarj@mips.com>
Reviewed-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Eric Johnson <ericj@mips.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
(cherry picked from commit 19e6c50d2d843220efbdd3b2db21d83c122c364a)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target-mips/dsp_helper.c           |   17 +++++++++--------
 tests/tcg/mips/mips32-dsp/shilo.c  |   18 ++++++++++++++++++
 tests/tcg/mips/mips32-dsp/shilov.c |   20 ++++++++++++++++++++
 3 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/target-mips/dsp_helper.c b/target-mips/dsp_helper.c
index fda5f04..14daf91 100644
--- a/target-mips/dsp_helper.c
+++ b/target-mips/dsp_helper.c
@@ -3814,17 +3814,18 @@ void helper_shilo(target_ulong ac, target_ulong rs, CPUMIPSState *env)
 
     rs5_0 = rs & 0x3F;
     rs5_0 = (int8_t)(rs5_0 << 2) >> 2;
-    rs5_0 = MIPSDSP_ABS(rs5_0);
+
+    if (unlikely(rs5_0 == 0)) {
+        return;
+    }
+
     acc   = (((uint64_t)env->active_tc.HI[ac] << 32) & MIPSDSP_LHI) |
             ((uint64_t)env->active_tc.LO[ac] & MIPSDSP_LLO);
-    if (rs5_0 == 0) {
-        temp = acc;
+
+    if (rs5_0 > 0) {
+        temp = acc >> rs5_0;
     } else {
-        if (rs5_0 > 0) {
-            temp = acc >> rs5_0;
-        } else {
-            temp = acc << rs5_0;
-        }
+        temp = acc << -rs5_0;
     }
 
     env->active_tc.HI[ac] = (target_ulong)(int32_t)((temp & MIPSDSP_LHI) >> 32);
diff --git a/tests/tcg/mips/mips32-dsp/shilo.c b/tests/tcg/mips/mips32-dsp/shilo.c
index b686616..ce8ebc6 100644
--- a/tests/tcg/mips/mips32-dsp/shilo.c
+++ b/tests/tcg/mips/mips32-dsp/shilo.c
@@ -23,5 +23,23 @@ int main()
     assert(ach == resulth);
     assert(acl == resultl);
 
+
+    ach = 0x1;
+    acl = 0x80000000;
+
+    resulth = 0x3;
+    resultl = 0x0;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "shilo $ac1, -1\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
     return 0;
 }
diff --git a/tests/tcg/mips/mips32-dsp/shilov.c b/tests/tcg/mips/mips32-dsp/shilov.c
index f186032..e1d6cea 100644
--- a/tests/tcg/mips/mips32-dsp/shilov.c
+++ b/tests/tcg/mips/mips32-dsp/shilov.c
@@ -25,5 +25,25 @@ int main()
     assert(ach == resulth);
     assert(acl == resultl);
 
+
+    rs  = 0xffffffff;
+    ach = 0x1;
+    acl = 0x80000000;
+
+    resulth = 0x3;
+    resultl = 0x0;
+
+    __asm
+        ("mthi %0, $ac1\n\t"
+         "mtlo %1, $ac1\n\t"
+         "shilov $ac1, %2\n\t"
+         "mfhi %0, $ac1\n\t"
+         "mflo %1, $ac1\n\t"
+         : "+r"(ach), "+r"(acl)
+         : "r"(rs)
+        );
+    assert(ach == resulth);
+    assert(acl == resultl);
+
     return 0;
 }
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 07/21] vfio-pci: Don't use kvm_irqchip_in_kernel
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (5 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 06/21] target-mips: Fix incorrect shift for SHILO and SHILOV Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 08/21] seabios: update to e8a76b0f225bba5ba9d63ab227e0a37b3beb1059 Michael Roth
                   ` (15 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Alex Williamson <alex.williamson@redhat.com>

kvm_irqchip_in_kernel() has an architecture specific meaning, so
we shouldn't be using it to determine whether to enabled KVM INTx
bypass.  kvm_irqfds_enabled() seems most appropriate.  Also use this
to protect our other call to kvm_check_extension() as that explodes
when KVM isn't enabled.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Cc: qemu-stable@nongnu.org
(cherry picked from commit d281084d3e51f03999d12a506491a0c6f31b40e8)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/vfio_pci.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/hw/vfio_pci.c b/hw/vfio_pci.c
index 7c27834..fbfe670 100644
--- a/hw/vfio_pci.c
+++ b/hw/vfio_pci.c
@@ -275,7 +275,7 @@ static void vfio_enable_intx_kvm(VFIODevice *vdev)
     int ret, argsz;
     int32_t *pfd;
 
-    if (!kvm_irqchip_in_kernel() ||
+    if (!kvm_irqfds_enabled() ||
         vdev->intx.route.mode != PCI_INTX_ENABLED ||
         !kvm_check_extension(kvm_state, KVM_CAP_IRQFD_RESAMPLE)) {
         return;
@@ -438,7 +438,8 @@ static int vfio_enable_intx(VFIODevice *vdev)
      * Only conditional to avoid generating error messages on platforms
      * where we won't actually use the result anyway.
      */
-    if (kvm_check_extension(kvm_state, KVM_CAP_IRQFD_RESAMPLE)) {
+    if (kvm_irqfds_enabled() &&
+        kvm_check_extension(kvm_state, KVM_CAP_IRQFD_RESAMPLE)) {
         vdev->intx.route = pci_device_route_intx_to_irq(&vdev->pdev,
                                                         vdev->intx.pin);
     }
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 08/21] seabios: update to e8a76b0f225bba5ba9d63ab227e0a37b3beb1059
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (6 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 07/21] vfio-pci: Don't use kvm_irqchip_in_kernel Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 09/21] Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901 Michael Roth
                   ` (14 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Gerd Hoffmann <kraxel@redhat.com>

This patch updates seabios to latest git master.  Changes:

  (1) q35 patches merged.
  (2) some acpi cleanups.
  (3) fixes irq 8 conflict.

(3) makes this a candidate for the stable branch

Cc: qemu-stable@nongnu.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit ff1562908d1da12362aa9e3f3bfc7ba0da8114a4)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 pc-bios/acpi-dsdt.aml     |  Bin 4540 -> 4438 bytes
 pc-bios/bios.bin          |  Bin 131072 -> 262144 bytes
 pc-bios/q35-acpi-dsdt.aml |  Bin 0 -> 7458 bytes
 roms/seabios              |    2 +-
 4 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 pc-bios/q35-acpi-dsdt.aml

diff --git a/pc-bios/acpi-dsdt.aml b/pc-bios/acpi-dsdt.aml
index bb3dd83a56f84131f9c9f968cbee9385931cecd3..18b4dc1aa53859593604abe598b05784b116a360 100644
GIT binary patch
delta 574
zcmdm^d`*eVCD<h-Opt+r@xVl`R6V8mV5j)#Cg}iYPXms44^I~!#|vD{9Py4WK@1%6
zp`I>`0uHizAVnY*n>jg-F>?BHKs32dzQI|{EXc(-IgqP>R~4=*x=C`fJg=xQ1J{26
zH&!HJPnOB&xFiju8`a|U0wN5J0}PFw85lhD8Q6UST>TgsEEt%b9YG9cXD1-V;pPG)
z1$?9@zv8l&Gxv6KiHA9nnOTH0J~+gYVF?#MN4#@T@MM2(N#^J#^~nX?5_Vt_K@Kif
zB?f^?hUg|Q7B?4XxcAr@L?pm^3qa;4EMS|Qz_5g2Aq(87Q`|E3(M@(f0U>bvSm1g<
zF2&R%D8R+*&RD@*!OX#-)W86;)Ro2A-`5c4U{*#*Xu_-p`4g8hKbU{;Ff(u{34qOU
zW0}03N6ZT9WKh81)W`IL38;+&s7=6|10L>^FR`0XuH^ONb)OB2Hv!iYP*iT5?7%+x
y6mL5t!{m#6+LLSfY}tI+ef+$gCOh$2PyWLfJoy5j&g5!-V94_8Z2rZ6h!Fs+D3!_p

delta 695
zcmcbnv`3lCCD<iok01jBqy9v$R2BcJ@xe~<(M|4C1Drh#IO07#U3eTXa4~blJGulh
zaKwjtx-f25WpiMkJcHG2<J@D6oDQ529UhZ&n2Om%xCE707$-ksD$rEZ14)34iEfhe
z40enMo52ILi6Ocnz{J3ri7SDNMZjHY@<nEQCKr~;f-Dj|BAW5eLBR|hA-)0ell536
zla_#3(M`s_{-HnvAkN_z76Dos;>fUsi(f<%p+S&?i&cq1pppTq$(_Z`#To7ib_OI}
zIuKn>p>76~7qG~rEdjBjo4i?l0z%;SurP>dfbA)Wi;L3>h%hvE2?};hs7?TSf}tT{
z0o&vRh9wLOSwPNEL>MS2z{Ts%SixMu%)z15zyNd(#BfKpNvxvvm?k<yP2?b8;t%E@
z%nTe#0tgeG*qr@+jbOpT$_S1hE+#ClhS||zPskFcA51_?IAE3t__89!qXX;YcxF*o
zt{5(r=tkoJLt|%VP>?792`3QY3?f`Xgd2!(2N511!V^SzDG0bAOq+a;)r-wZ9h68W
zr|@=6&f?RVEWu~X=F9Hm=j}B4CZEmZX?($xGx&8Ti}D9EvP^!<tG#&&{~<;IfFZIe

diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin
index dc9b57ddc9a39f3d8ea75a8f23e3869c26144795..3eefff4cf81a37e0cbd20d3cf0da7b2dd11c34d5 100644
GIT binary patch
delta 21251
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
WNQ(5Ag=7s~Vr%*<s;U#ZYX3j2$;ndy

delta 20391
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

diff --git a/pc-bios/q35-acpi-dsdt.aml b/pc-bios/q35-acpi-dsdt.aml
new file mode 100644
index 0000000000000000000000000000000000000000..8a5055951485d7b14ba44e6c99ecd32bf1ad446e
GIT binary patch
literal 7458
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

literal 0
HcmV?d00001

diff --git a/roms/seabios b/roms/seabios
index b1c35f2..e8a76b0 160000
--- a/roms/seabios
+++ b/roms/seabios
@@ -1 +1 @@
-Subproject commit b1c35f2b28cc0c94ebed8176ff61ac0e0b377798
+Subproject commit e8a76b0f225bba5ba9d63ab227e0a37b3beb1059
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 09/21] Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (7 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 08/21] seabios: update to e8a76b0f225bba5ba9d63ab227e0a37b3beb1059 Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 10/21] pixman: fix vnc tight png/jpeg support Michael Roth
                   ` (13 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Gerd Hoffmann <kraxel@redhat.com>

git shortlog:

Kevin O'Connor (6):
      floppy: Minor - reduce handle_0e code size when CONFIG_FLOPPY is disabled.
      vga: Minor comment spelling fix.
      Don't recursively evaluate CFLAGS variables.
      Don't use gcc's -combine option.
      Add compile checking phase to build.
      acpi: Use prt_slot() macro to describe irq pins of first PCI device.

Laszlo Ersek (1):
      maininit(): print machine UUID under seabios version message

Paolo Bonzini (1):
      acpi: reintroduce LNKS

Paolo's patch fixes the FreeBSD boot failure.

Cc: qemu-stable@nongnu.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 15faf946f7a17a5fab0d05a2312d43249d81af3c)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 pc-bios/acpi-dsdt.aml     |  Bin 4438 -> 4521 bytes
 pc-bios/bios.bin          |  Bin 262144 -> 131072 bytes
 pc-bios/q35-acpi-dsdt.aml |  Bin 7458 -> 7458 bytes
 roms/seabios              |    2 +-
 4 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/pc-bios/acpi-dsdt.aml b/pc-bios/acpi-dsdt.aml
index 18b4dc1aa53859593604abe598b05784b116a360..00224eabb7b92de601edc5cc41b444c4ca8cb9da 100644
GIT binary patch
delta 175
zcmcbnv{G5wCD<ior62<XqqtK<fHMPwQv^r^$Y)?+@bnAuQD)@asQi^x#A`u(uv5H%
zdr5$^rvXQNKv0N~_hcP5Q(j&cp8x-Ws(t*tgBdpGuqAT_MmPDhfVdp-9-b~dju&|N
zIpRY-UAS04`ho@dxVSsn7&sX@fmT#9h;YUShd44U;o=ryi+Ax1W)R_ycMb|>SOQWD
P6bcRsX54(9znu{PZH*~z

delta 91
zcmZ3fd`(H&CD<h-Opt+r@qklAfHMPwQv^r^$Y)?+@bnAu5#|)ysQi^x#C>*ruv5H%
qYe|5!rvXQNKv0N~=VTo=Q*Le+p8x+rs<}8f=dmSoZdMX#X9NHb#TIb@

diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin
index 3eefff4cf81a37e0cbd20d3cf0da7b2dd11c34d5..3910875311ceaed814f902e9e4e7e29cdf340fc6 100644
GIT binary patch
delta 44263
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

delta 44475
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

diff --git a/pc-bios/q35-acpi-dsdt.aml b/pc-bios/q35-acpi-dsdt.aml
index 8a5055951485d7b14ba44e6c99ecd32bf1ad446e..e50641cc53416c14133bfc7ae48f35fb14116781 100644
GIT binary patch
delta 44
xcmZ2vwa7}@CD<iINtS_u(Z(qvz?p%;DFP(Iz`(@7z~Jc@;-k#Sxl#GQ3;^N#3DN)n

delta 44
xcmZ2vwa7}@CD<iINtS_u(b_2@z?p%;DFP(Iz`(@7z~Jc@;v>u{v{CuL3;^NE3DN)n

diff --git a/roms/seabios b/roms/seabios
index e8a76b0..a810e4e 160000
--- a/roms/seabios
+++ b/roms/seabios
@@ -1 +1 @@
-Subproject commit e8a76b0f225bba5ba9d63ab227e0a37b3beb1059
+Subproject commit a810e4e72a0d42c7bc04eda57382f8e019add901
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 10/21] pixman: fix vnc tight png/jpeg support
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (8 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 09/21] Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901 Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 11/21] target-xtensa: fix ITLB/DTLB page protection flags Michael Roth
                   ` (12 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Gerd Hoffmann <1087974@bugs.launchpad.net>

This patch adds an x argument to qemu_pixman_linebuf_fill so it can
also be used to convert a partial scanline.  Then fix tight + png/jpeg
encoding by passing in the x+y offset, so the data is read from the
correct screen location instead of the upper left corner.

Cc: 1087974@bugs.launchpad.net
Cc: qemu-stable@nongnu.org
Reported-by: Tim Hardeneck <thardeck@suse.de>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
(cherry picked from commit bc210eb163b162ff2e94e5c8f4307715731257f8)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/vga.c           |    2 +-
 qemu-pixman.c      |    4 ++--
 qemu-pixman.h      |    2 +-
 ui/vnc-enc-tight.c |    4 ++--
 ui/vnc.c           |    2 +-
 5 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/hw/vga.c b/hw/vga.c
index 2b0200a..c266161 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -2413,7 +2413,7 @@ void ppm_save(const char *filename, struct DisplaySurface *ds, Error **errp)
     }
     linebuf = qemu_pixman_linebuf_create(PIXMAN_BE_r8g8b8, width);
     for (y = 0; y < height; y++) {
-        qemu_pixman_linebuf_fill(linebuf, ds->image, width, y);
+        qemu_pixman_linebuf_fill(linebuf, ds->image, width, 0, y);
         clearerr(f);
         ret = fwrite(pixman_image_get_data(linebuf), 1,
                      pixman_image_get_stride(linebuf), f);
diff --git a/qemu-pixman.c b/qemu-pixman.c
index e46e180..1473835 100644
--- a/qemu-pixman.c
+++ b/qemu-pixman.c
@@ -52,10 +52,10 @@ pixman_image_t *qemu_pixman_linebuf_create(pixman_format_code_t format,
 }
 
 void qemu_pixman_linebuf_fill(pixman_image_t *linebuf, pixman_image_t *fb,
-                              int width, int y)
+                              int width, int x, int y)
 {
     pixman_image_composite(PIXMAN_OP_SRC, fb, NULL, linebuf,
-                           0, y, 0, 0, 0, 0, width, 1);
+                           x, y, 0, 0, 0, 0, width, 1);
 }
 
 pixman_image_t *qemu_pixman_mirror_create(pixman_format_code_t format,
diff --git a/qemu-pixman.h b/qemu-pixman.h
index bee55eb..3c05c83 100644
--- a/qemu-pixman.h
+++ b/qemu-pixman.h
@@ -31,7 +31,7 @@ pixman_format_code_t qemu_pixman_get_format(PixelFormat *pf);
 pixman_image_t *qemu_pixman_linebuf_create(pixman_format_code_t format,
                                            int width);
 void qemu_pixman_linebuf_fill(pixman_image_t *linebuf, pixman_image_t *fb,
-                              int width, int y);
+                              int width, int x, int y);
 pixman_image_t *qemu_pixman_mirror_create(pixman_format_code_t format,
                                           pixman_image_t *image);
 void qemu_pixman_image_unref(pixman_image_t *image);
diff --git a/ui/vnc-enc-tight.c b/ui/vnc-enc-tight.c
index 9ae4cab..62d0fde 100644
--- a/ui/vnc-enc-tight.c
+++ b/ui/vnc-enc-tight.c
@@ -1212,7 +1212,7 @@ static int send_jpeg_rect(VncState *vs, int x, int y, int w, int h, int quality)
     buf = (uint8_t *)pixman_image_get_data(linebuf);
     row[0] = buf;
     for (dy = 0; dy < h; dy++) {
-        qemu_pixman_linebuf_fill(linebuf, vs->vd->server, w, dy);
+        qemu_pixman_linebuf_fill(linebuf, vs->vd->server, w, x, y + dy);
         jpeg_write_scanlines(&cinfo, row, 1);
     }
     qemu_pixman_image_unref(linebuf);
@@ -1356,7 +1356,7 @@ static int send_png_rect(VncState *vs, int x, int y, int w, int h,
         if (color_type == PNG_COLOR_TYPE_PALETTE) {
             memcpy(buf, vs->tight.tight.buffer + (dy * w), w);
         } else {
-            qemu_pixman_linebuf_fill(linebuf, vs->vd->server, w, dy);
+            qemu_pixman_linebuf_fill(linebuf, vs->vd->server, w, x, y + dy);
         }
         png_write_row(png_ptr, buf);
     }
diff --git a/ui/vnc.c b/ui/vnc.c
index ba30362..04afcff 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -2569,7 +2569,7 @@ static int vnc_refresh_server_surface(VncDisplay *vd)
             uint8_t *server_ptr;
 
             if (vd->guest.format != VNC_SERVER_FB_FORMAT) {
-                qemu_pixman_linebuf_fill(tmpbuf, vd->guest.fb, width, y);
+                qemu_pixman_linebuf_fill(tmpbuf, vd->guest.fb, width, 0, y);
                 guest_ptr = (uint8_t *)pixman_image_get_data(tmpbuf);
             } else {
                 guest_ptr = guest_row;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 11/21] target-xtensa: fix ITLB/DTLB page protection flags
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (9 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 10/21] pixman: fix vnc tight png/jpeg support Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 12/21] qxl: save qemu_create_displaysurface_from result Michael Roth
                   ` (11 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Max Filippov <jcmvbkbc@gmail.com>

With MMU option xtensa architecture has two TLBs: ITLB and DTLB. ITLB is
only used for code access, DTLB is only for data. However TLB entries in
both TLBs have attribute field controlling write and exec access. These
bits need to be properly masked off depending on TLB type before being
used as tlb_set_page prot argument. Otherwise the following happens:

(1) ITLB entry for some PFN gets invalidated
(2) DTLB entry for the same PFN gets updated, attributes allow code
    execution
(3) code at the page with that PFN is executed (possible due to step 2),
    entry for the TB is written into the jump cache
(4) QEMU TLB entry for the PFN gets replaced with an entry for some
    other PFN
(5) code in the TB from step 3 is executed (possible due to jump cache)
    and it accesses data, for which there's no DTLB entry, causing DTLB
    miss exception
(6) re-translation of the TB from step 5 is attempted, but there's no
    QEMU TLB entry nor xtensa ITLB entry for that PFN, which causes ITLB
    miss exception at the TB start address
(7) ITLB miss exception is handled by the guest, but execution is
    resumed from the beginning of the faulting TB (the point where ITLB
    miss occured), not from the point where DTLB miss occured, which is
    wrong.

With that fix the above scenario causes ITLB miss exception (that used
to be step 7) at step 3, right at the beginning of the TB.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
(cherry picked from commit 659f807c0a700317a7a0fae7a6e6ebfe68bfbbc4)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target-xtensa/helper.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target-xtensa/helper.c b/target-xtensa/helper.c
index d94bae2..7fa9ecc 100644
--- a/target-xtensa/helper.c
+++ b/target-xtensa/helper.c
@@ -486,7 +486,8 @@ static int get_physical_addr_mmu(CPUXtensaState *env, bool update_tlb,
             INST_FETCH_PRIVILEGE_CAUSE;
     }
 
-    *access = mmu_attr_to_access(entry->attr);
+    *access = mmu_attr_to_access(entry->attr) &
+        ~(dtlb ? PAGE_EXEC : PAGE_READ | PAGE_WRITE);
     if (!is_access_granted(*access, is_write)) {
         return dtlb ?
             (is_write ?
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 12/21] qxl: save qemu_create_displaysurface_from result
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (10 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 11/21] target-xtensa: fix ITLB/DTLB page protection flags Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 13/21] qxl+vnc: register a vm state change handler for dummy spice_server Michael Roth
                   ` (10 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Gerd Hoffmann <kraxel@redhat.com>

Spotted by Coverity.

https://bugzilla.redhat.com/show_bug.cgi?id=885644

Cc: qemu-stable@nongnu.org
Reported-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 2f464b5a32b414adb545acc6d94b5c35c7d258ba)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/qxl-render.c |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/hw/qxl-render.c b/hw/qxl-render.c
index 98ecb21..88e63f8 100644
--- a/hw/qxl-render.c
+++ b/hw/qxl-render.c
@@ -113,11 +113,12 @@ static void qxl_render_update_area_unlocked(PCIQXLDevice *qxl)
                qxl->guest_primary.bits_pp);
         if (qxl->guest_primary.qxl_stride > 0) {
             qemu_free_displaysurface(vga->ds);
-            qemu_create_displaysurface_from(qxl->guest_primary.surface.width,
-                                            qxl->guest_primary.surface.height,
-                                            qxl->guest_primary.bits_pp,
-                                            qxl->guest_primary.abs_stride,
-                                            qxl->guest_primary.data);
+            vga->ds->surface = qemu_create_displaysurface_from
+                (qxl->guest_primary.surface.width,
+                 qxl->guest_primary.surface.height,
+                 qxl->guest_primary.bits_pp,
+                 qxl->guest_primary.abs_stride,
+                 qxl->guest_primary.data);
         } else {
             qemu_resize_displaysurface(vga->ds,
                     qxl->guest_primary.surface.width,
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 13/21] qxl+vnc: register a vm state change handler for dummy spice_server
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (11 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 12/21] qxl: save qemu_create_displaysurface_from result Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 14/21] e1000: Discard oversized packets based on SBP|LPE Michael Roth
                   ` (9 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Uri Lublin <uril@redhat.com>

When qxl + vnc are used, a dummy spice_server is initialized.
The spice_server has to be told when the VM runstate changes,
which is what this patch does.

Without it, from qxl_send_events(), the following error message is shown:
  qxl_send_events: spice-server bug: guest stopped, ignoring

Cc: qemu-stable@nongnu.org
Signed-off-by: Uri Lublin <uril@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 938b8a36b65e44c44ca29245437f8d7ac0f826e8)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 ui/spice-core.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/ui/spice-core.c b/ui/spice-core.c
index 261c6f2..59ce5f6 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -732,6 +732,8 @@ int qemu_spice_add_interface(SpiceBaseInstance *sin)
          */
         spice_server = spice_server_new();
         spice_server_init(spice_server, &core_interface);
+        qemu_add_vm_change_state_handler(vm_change_state_handler,
+                                         &spice_server);
     }
 
     return spice_server_add_interface(spice_server, sin);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 14/21] e1000: Discard oversized packets based on SBP|LPE
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (12 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 13/21] qxl+vnc: register a vm state change handler for dummy spice_server Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 15/21] migration: fix migration_bitmap leak Michael Roth
                   ` (8 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Michael Contreras <michael@inetric.com>

Discard packets longer than 16384 when !SBP to match the hardware behavior.

Signed-off-by: Michael Contreras <michael@inetric.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
(cherry picked from commit 2c0331f4f7d241995452b99afaf0aab00493334a)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/e1000.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/hw/e1000.c b/hw/e1000.c
index 5537ad2..e772c8e 100644
--- a/hw/e1000.c
+++ b/hw/e1000.c
@@ -61,6 +61,8 @@ static int debugflags = DBGBIT(TXERR) | DBGBIT(GENERAL);
 
 /* this is the size past which hardware will drop packets when setting LPE=0 */
 #define MAXIMUM_ETHERNET_VLAN_SIZE 1522
+/* this is the size past which hardware will drop packets when setting LPE=1 */
+#define MAXIMUM_ETHERNET_LPE_SIZE 16384
 
 /*
  * HW models:
@@ -809,8 +811,9 @@ e1000_receive(NetClientState *nc, const uint8_t *buf, size_t size)
     }
 
     /* Discard oversized packets if !LPE and !SBP. */
-    if (size > MAXIMUM_ETHERNET_VLAN_SIZE
-        && !(s->mac_reg[RCTL] & E1000_RCTL_LPE)
+    if ((size > MAXIMUM_ETHERNET_LPE_SIZE ||
+        (size > MAXIMUM_ETHERNET_VLAN_SIZE
+        && !(s->mac_reg[RCTL] & E1000_RCTL_LPE)))
         && !(s->mac_reg[RCTL] & E1000_RCTL_SBP)) {
         return size;
     }
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 15/21] migration: fix migration_bitmap leak
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (13 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 14/21] e1000: Discard oversized packets based on SBP|LPE Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 16/21] buffered_file: do not send more than s->bytes_xfer bytes per tick Michael Roth
                   ` (7 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Paolo Bonzini <pbonzini@redhat.com>

Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
(cherry picked from commit 244eaa7514a944b36273eb8428f32da8e9124fcf)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 arch_init.c |   13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/arch_init.c b/arch_init.c
index 83dcc53..0d7844c 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -535,9 +535,13 @@ static void sort_ram_list(void)
 
 static void migration_end(void)
 {
-    memory_global_dirty_log_stop();
+    if (migration_bitmap) {
+        memory_global_dirty_log_stop();
+        g_free(migration_bitmap);
+        migration_bitmap = NULL;
+    }
 
-    if (migrate_use_xbzrle()) {
+    if (XBZRLE.cache) {
         cache_fini(XBZRLE.cache);
         g_free(XBZRLE.cache);
         g_free(XBZRLE.encoded_buf);
@@ -689,13 +693,10 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
         }
         bytes_transferred += bytes_sent;
     }
-    memory_global_dirty_log_stop();
+    migration_end();
 
     qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
 
-    g_free(migration_bitmap);
-    migration_bitmap = NULL;
-
     return 0;
 }
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 16/21] buffered_file: do not send more than s->bytes_xfer bytes per tick
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (14 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 15/21] migration: fix migration_bitmap leak Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 17/21] target-xtensa: fix search_pc for the last TB opcode Michael Roth
                   ` (6 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Paolo Bonzini <pbonzini@redhat.com>

Sending more was possible if the buffer was large.

Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
(cherry picked from commit bde54c08b4854aceee3dee25121a2b835cb81166)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 buffered_file.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/buffered_file.c b/buffered_file.c
index bd0f61d..9a8bd04 100644
--- a/buffered_file.c
+++ b/buffered_file.c
@@ -66,9 +66,9 @@ static ssize_t buffered_flush(QEMUFileBuffered *s)
     DPRINTF("flushing %zu byte(s) of data\n", s->buffer_size);
 
     while (s->bytes_xfer < s->xfer_limit && offset < s->buffer_size) {
-
+        size_t to_send = MIN(s->buffer_size - offset, s->xfer_limit - s->bytes_xfer);
         ret = migrate_fd_put_buffer(s->migration_state, s->buffer + offset,
-                                    s->buffer_size - offset);
+                                    to_send);
         if (ret == -EAGAIN) {
             DPRINTF("backend not ready, freezing\n");
             ret = 0;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 17/21] target-xtensa: fix search_pc for the last TB opcode
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (15 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 16/21] buffered_file: do not send more than s->bytes_xfer bytes per tick Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 18/21] vfio-pci: Make host MSI-X enable track guest Michael Roth
                   ` (5 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Max Filippov <jcmvbkbc@gmail.com>

Zero out tcg_ctx.gen_opc_instr_start for instructions representing the
last guest opcode in the TB.

Cc: qemu-stable@nongnu.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
(cherry picked from commit 36f25d2537c40c6c47f4abee5d31a24863d1adf7)

*modified to use older global version of gen_opc_instr_start

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target-xtensa/translate.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c
index e5a3f49..87f26c2 100644
--- a/target-xtensa/translate.c
+++ b/target-xtensa/translate.c
@@ -2962,7 +2962,11 @@ static void gen_intermediate_code_internal(
     gen_icount_end(tb, insn_count);
     *tcg_ctx.gen_opc_ptr = INDEX_op_end;
 
-    if (!search_pc) {
+    if (search_pc) {
+        j = tcg_ctx.gen_opc_ptr - tcg_ctx.gen_opc_buf;
+        memset(gen_opc_instr_start + lj + 1, 0,
+                (j - lj) * sizeof(gen_opc_instr_start[0]));
+    } else {
         tb->size = dc.pc - pc_start;
         tb->icount = insn_count;
     }
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 18/21] vfio-pci: Make host MSI-X enable track guest
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (16 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 17/21] target-xtensa: fix search_pc for the last TB opcode Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 19/21] pci-assign: Enable MSIX on device to match guest Michael Roth
                   ` (4 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Alex Williamson <alex.williamson@redhat.com>

Guests typically enable MSI-X with all of the vectors in the MSI-X
vector table masked.  Only when the vector is enabled does the vector
get unmasked, resulting in a vector_use callback.  These two points,
enable and unmask, correspond to pci_enable_msix() and request_irq()
for Linux guests.  Some drivers rely on VF/PF or PF/fw communication
channels that expect the physical state of the device to match the
guest visible state of the device.  They don't appreciate lazily
enabling MSI-X on the physical device.

To solve this, enable MSI-X with a single vector when the MSI-X
capability is enabled and immediate disable the vector.  This leaves
the physical device in exactly the same state between host and guest.
Furthermore, the brief gap where we enable vector 0, it fires into
userspace, not KVM, so the guest doesn't get spurious interrupts.
Ideally we could call VFIO_DEVICE_SET_IRQS with the right parameters
to enable MSI-X with zero vectors, but this will currently return an
error as the Linux MSI-X interfaces do not allow it.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Cc: qemu-stable@nongnu.org
(cherry picked from commit b0223e29afdc88cc262a764026296414396cd129)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/vfio_pci.c |   30 ++++++++++++++++++++++++++----
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/hw/vfio_pci.c b/hw/vfio_pci.c
index fbfe670..46dce55 100644
--- a/hw/vfio_pci.c
+++ b/hw/vfio_pci.c
@@ -562,8 +562,8 @@ static int vfio_enable_vectors(VFIODevice *vdev, bool msix)
     return ret;
 }
 
-static int vfio_msix_vector_use(PCIDevice *pdev,
-                                unsigned int nr, MSIMessage msg)
+static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
+                                   MSIMessage *msg, IOHandler *handler)
 {
     VFIODevice *vdev = DO_UPCAST(VFIODevice, pdev, pdev);
     VFIOMSIVector *vector;
@@ -587,7 +587,7 @@ static int vfio_msix_vector_use(PCIDevice *pdev,
      * Attempt to enable route through KVM irqchip,
      * default to userspace handling if unavailable.
      */
-    vector->virq = kvm_irqchip_add_msi_route(kvm_state, msg);
+    vector->virq = msg ? kvm_irqchip_add_msi_route(kvm_state, *msg) : -1;
     if (vector->virq < 0 ||
         kvm_irqchip_add_irqfd_notifier(kvm_state, &vector->interrupt,
                                        vector->virq) < 0) {
@@ -596,7 +596,7 @@ static int vfio_msix_vector_use(PCIDevice *pdev,
             vector->virq = -1;
         }
         qemu_set_fd_handler(event_notifier_get_fd(&vector->interrupt),
-                            vfio_msi_interrupt, NULL, vector);
+                            handler, NULL, vector);
     }
 
     /*
@@ -639,6 +639,12 @@ static int vfio_msix_vector_use(PCIDevice *pdev,
     return 0;
 }
 
+static int vfio_msix_vector_use(PCIDevice *pdev,
+                                unsigned int nr, MSIMessage msg)
+{
+    return vfio_msix_vector_do_use(pdev, nr, &msg, vfio_msi_interrupt);
+}
+
 static void vfio_msix_vector_release(PCIDevice *pdev, unsigned int nr)
 {
     VFIODevice *vdev = DO_UPCAST(VFIODevice, pdev, pdev);
@@ -697,6 +703,22 @@ static void vfio_enable_msix(VFIODevice *vdev)
 
     vdev->interrupt = VFIO_INT_MSIX;
 
+    /*
+     * Some communication channels between VF & PF or PF & fw rely on the
+     * physical state of the device and expect that enabling MSI-X from the
+     * guest enables the same on the host.  When our guest is Linux, the
+     * guest driver call to pci_enable_msix() sets the enabling bit in the
+     * MSI-X capability, but leaves the vector table masked.  We therefore
+     * can't rely on a vector_use callback (from request_irq() in the guest)
+     * to switch the physical device into MSI-X mode because that may come a
+     * long time after pci_enable_msix().  This code enables vector 0 with
+     * triggering to userspace, then immediately release the vector, leaving
+     * the physical device with no vectors enabled, but MSI-X enabled, just
+     * like the guest view.
+     */
+    vfio_msix_vector_do_use(&vdev->pdev, 0, NULL, NULL);
+    vfio_msix_vector_release(&vdev->pdev, 0);
+
     if (msix_set_vector_notifiers(&vdev->pdev, vfio_msix_vector_use,
                                   vfio_msix_vector_release)) {
         error_report("vfio: msix_set_vector_notifiers failed\n");
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 19/21] pci-assign: Enable MSIX on device to match guest
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (17 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 18/21] vfio-pci: Make host MSI-X enable track guest Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 20/21] vfio-pci: Loosen sanity checks to allow future features Michael Roth
                   ` (3 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Alex Williamson <alex.williamson@redhat.com>

When a guest enables MSIX on a device we evaluate the MSIX vector
table, typically find no unmasked vectors and don't switch the device
to MSIX mode.  This generally works fine and the device will be
switched once the guest enables and therefore unmasks a vector.
Unfortunately some drivers enable MSIX, then use interfaces to send
commands between VF & PF or PF & firmware that act based on the host
state of the device.  These therefore may break when MSIX is managed
lazily.  This change re-enables the previous test used to enable MSIX
(see qemu-kvm a6b402c9), which basically guesses whether a vector
will be used based on the data field of the vector table.

Cc: qemu-stable@nongnu.org
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
(cherry picked from commit feb9a2ab4b0260d8d680a7ffd25063dafc7ec628)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/kvm/pci-assign.c |   17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/hw/kvm/pci-assign.c b/hw/kvm/pci-assign.c
index e80dad0..12a219b 100644
--- a/hw/kvm/pci-assign.c
+++ b/hw/kvm/pci-assign.c
@@ -1025,6 +1025,19 @@ static bool assigned_dev_msix_masked(MSIXTableEntry *entry)
     return (entry->ctrl & cpu_to_le32(0x1)) != 0;
 }
 
+/*
+ * When MSI-X is first enabled the vector table typically has all the
+ * vectors masked, so we can't use that as the obvious test to figure out
+ * how many vectors to initially enable.  Instead we look at the data field
+ * because this is what worked for pci-assign for a long time.  This makes
+ * sure the physical MSI-X state tracks the guest's view, which is important
+ * for some VF/PF and PF/fw communication channels.
+ */
+static bool assigned_dev_msix_skipped(MSIXTableEntry *entry)
+{
+    return !entry->data;
+}
+
 static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev)
 {
     AssignedDevice *adev = DO_UPCAST(AssignedDevice, dev, pci_dev);
@@ -1035,7 +1048,7 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev)
 
     /* Get the usable entry number for allocating */
     for (i = 0; i < adev->msix_max; i++, entry++) {
-        if (assigned_dev_msix_masked(entry)) {
+        if (assigned_dev_msix_skipped(entry)) {
             continue;
         }
         entries_nr++;
@@ -1064,7 +1077,7 @@ static int assigned_dev_update_msix_mmio(PCIDevice *pci_dev)
     for (i = 0; i < adev->msix_max; i++, entry++) {
         adev->msi_virq[i] = -1;
 
-        if (assigned_dev_msix_masked(entry)) {
+        if (assigned_dev_msix_skipped(entry)) {
             continue;
         }
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 20/21] vfio-pci: Loosen sanity checks to allow future features
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (18 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 19/21] pci-assign: Enable MSIX on device to match guest Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 21/21] raw-posix: fix bdrv_aio_ioctl Michael Roth
                   ` (2 subsequent siblings)
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Alex Williamson <alex.williamson@redhat.com>

VFIO_PCI_NUM_REGIONS and VFIO_PCI_NUM_IRQS should never have been
used in this manner as it locks a specific kernel implementation.
Future features may introduce new regions or interrupt entries
(VGA may add legacy ranges, AER might add an IRQ for error
signalling).  Fix this before it gets us into trouble.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Cc: qemu-stable@nongnu.org
(cherry picked from commit 8fc94e5a8046e349e07976f9bcaffbcd5833f3a2)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/vfio_pci.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/vfio_pci.c b/hw/vfio_pci.c
index 46dce55..283842d 100644
--- a/hw/vfio_pci.c
+++ b/hw/vfio_pci.c
@@ -1837,13 +1837,13 @@ static int vfio_get_device(VFIOGroup *group, const char *name, VFIODevice *vdev)
         error_report("Warning, device %s does not support reset\n", name);
     }
 
-    if (dev_info.num_regions != VFIO_PCI_NUM_REGIONS) {
+    if (dev_info.num_regions < VFIO_PCI_CONFIG_REGION_INDEX + 1) {
         error_report("vfio: unexpected number of io regions %u\n",
                      dev_info.num_regions);
         goto error;
     }
 
-    if (dev_info.num_irqs != VFIO_PCI_NUM_IRQS) {
+    if (dev_info.num_irqs < VFIO_PCI_MSIX_IRQ_INDEX + 1) {
         error_report("vfio: unexpected number of irqs %u\n", dev_info.num_irqs);
         goto error;
     }
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Qemu-devel] [PATCH 21/21] raw-posix: fix bdrv_aio_ioctl
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (19 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 20/21] vfio-pci: Loosen sanity checks to allow future features Michael Roth
@ 2013-01-16 16:49 ` Michael Roth
  2013-01-16 18:12 ` [Qemu-devel] [Qemu-stable] Patch Round-up for stable 1.3.1, freeze Monday Michael Tokarev
  2013-01-19  1:59 ` Doug Goldstein
  22 siblings, 0 replies; 26+ messages in thread
From: Michael Roth @ 2013-01-16 16:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, qemu-stable

From: Paolo Bonzini <pbonzini@redhat.com>

When the raw-posix aio=thread code was moved from posix-aio-compat.c
to block/raw-posix.c, there was an unintended change to the ioctl code.
The code used to return the ioctl command, which posix_aio_read()
would later morph into a zero.  This hack is not necessary anymore,
and in fact breaks scsi-generic (which expects a zero return code).
Remove it.

Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit b608c8dc02c78ee95455a0989bdf1b41c768b2ef)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/raw-posix.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/block/raw-posix.c b/block/raw-posix.c
index 550c81f..5c6c564 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -456,15 +456,7 @@ static ssize_t handle_aiocb_ioctl(RawPosixAIOData *aiocb)
         return -errno;
     }
 
-    /*
-     * This looks weird, but the aio code only considers a request
-     * successful if it has written the full number of bytes.
-     *
-     * Now we overload aio_nbytes as aio_ioctl_cmd for the ioctl command,
-     * so in fact we return the ioctl command here to make posix_aio_read()
-     * happy..
-     */
-    return aiocb->aio_nbytes;
+    return 0;
 }
 
 static ssize_t handle_aiocb_flush(RawPosixAIOData *aiocb)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [Qemu-devel] [Qemu-stable] Patch Round-up for stable 1.3.1, freeze Monday
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (20 preceding siblings ...)
  2013-01-16 16:49 ` [Qemu-devel] [PATCH 21/21] raw-posix: fix bdrv_aio_ioctl Michael Roth
@ 2013-01-16 18:12 ` Michael Tokarev
  2013-01-16 18:56   ` mdroth
  2013-01-19  1:59 ` Doug Goldstein
  22 siblings, 1 reply; 26+ messages in thread
From: Michael Tokarev @ 2013-01-16 18:12 UTC (permalink / raw)
  To: Michael Roth; +Cc: aliguori, qemu-devel, qemu-stable

16.01.2013 20:49, Michael Roth wrote:
> Hi everyone,
>
> The following new patches are queued for QEMU stable v1.3.1:
>
> https://github.com/mdroth/qemu/commits/stable-1.3-staging
>
> The release is planned for 01-25-2013:
>
> http://wiki.qemu.org/Planning/1.3
>
> Please CC qemu-stable@nongnu.org on any patches you think should be
> included in the release. The cut-off date is 01-21-2013 for new patches.
>
> Testing/feedback is greatly appreciated.
>
> Thanks!

Actual commit IDs from the master branch, with some comments
(with just one useful for 1.3 comment, about e1000 security fix):

> 204dd38 raw-posix: fix bdrv_aio_ioctl (Paolo Bonzini)
b608c8dc02c78ee95455a0989bdf1b41c768b2ef

> 86bab45 vfio-pci: Loosen sanity checks to allow future features (Alex Williamson)
8fc94e5a8046e349e07976f9bcaffbcd5833f3a2

> 006c747 pci-assign: Enable MSIX on device to match guest (Alex Williamson)
feb9a2ab4b0260d8d680a7ffd25063dafc7ec628

This is applicable to old qemu-kvm (pre-1.3-merge), so it is qemu-kvm 1.1
and qemu-kvm 1.2.  I missed it for 1.1 because it is qemu-kvm-specific.
Queued for debian qemu-kvm package.

> f042cca vfio-pci: Make host MSI-X enable track guest (Alex Williamson)
b0223e29afdc88cc262a764026296414396cd129

> 1205b80 target-xtensa: fix search_pc for the last TB opcode (Max Filippov)
36f25d2537c40c6c47f4abee5d31a24863d1adf7

Now queued to stable-1.1 too.

> ff0c079 buffered_file: do not send more than s->bytes_xfer bytes per tick (Paolo Bonzini)
bde54c08b4854aceee3dee25121a2b835cb81166

Now queued to stable-1.1 too, with backport changes.

> d745511 migration: fix migration_bitmap leak (Paolo Bonzini)
244eaa7514a944b36273eb8428f32da8e9124fcf

> 5afd0ec e1000: Discard oversized packets based on SBP|LPE (Michael Contreras)
2c0331f4f7d241995452b99afaf0aab00493334a

Guys, this is just one half of the CVE-2012-6075 fix.
Please don't repeat the same mistake again and again.
Second patch by Michael is neede to fix this too.

Note that recent Xen advisory (Xen Security Advisory 41)
has the same issu, they fixed just the half of it.

Both are applied to stable-1.1.

> c4cd5b0 qxl+vnc: register a vm state change handler for dummy spice_server (Uri Lublin)
938b8a36b65e44c44ca29245437f8d7ac0f826e8
post-1.2 material, needs 938b8a36b65e44c44ca29245437f8d7ac0f826e8 and probably
a bunch of other stuff.

> 7ca2496 qxl: save qemu_create_displaysurface_from result (Gerd Hoffmann)
2f464b5a32b414adb545acc6d94b5c35c7d258ba

Now queued to stable-1.1

> bfae937 target-xtensa: fix ITLB/DTLB page protection flags (Max Filippov)
659f807c0a700317a7a0fae7a6e6ebfe68bfbbc4

Now queued to stable-1.1

> b68c48f pixman: fix vnc tight png/jpeg support (Gerd Hoffmann)
bc210eb163b162ff2e94e5c8f4307715731257f8
1.3+ material

> 36fd817 Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901 (Gerd Hoffmann)
15faf946f7a17a5fab0d05a2312d43249d81af3c

> 0bc5f4a seabios: update to e8a76b0f225bba5ba9d63ab227e0a37b3beb1059 (Gerd Hoffmann)
ff1562908d1da12362aa9e3f3bfc7ba0da8114a4

> 37e1428 vfio-pci: Don't use kvm_irqchip_in_kernel (Alex Williamson)
d281084d3e51f03999d12a506491a0c6f31b40e8

> 518799a target-mips: Fix incorrect shift for SHILO and SHILOV (Petar Jovanovic)
19e6c50d2d843220efbdd3b2db21d83c122c364a
1.3+ material

> 16c5fe4 target-mips: Fix incorrect code and test for INSV (Petar Jovanovic)
34f5606ee101f82a247d09d05644ad2a63c8e342
1.3+ material

> f1a2195 migration: Fix madvise breakage if host and guest have different page sizes (David Gibson)
45e6cee42b98d10e2e14885ab656541a9ffd5187

Now queued up for stable-1.1

> 3b4fc1f Fix off-by-1 error in RAM migration code (David Gibson)
7ec81e56edc2b2007ce0ae3982aa5c18af9546ab
1.3+ (past c6bf8e0e0cf04b40a8a22426e00ebbd727331d8b)

> d67d95f Disable semaphores fallback code for OpenBSD (Brad Smith)
927fa909d5d5cf8c07673cd16a6d3bdc81250bc0
1.3+ (past c166cb72f1676855816340666c3b618beef4b976)

> 0a7ad69 Fix semaphores fallback code (Brad Smith)
a795ef8dcb8cbadffc996c41ff38927a97645234
1.3+ (past c166cb72f1676855816340666c3b618beef4b976)

Thanks,

/mjt

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Qemu-devel] [Qemu-stable] Patch Round-up for stable 1.3.1, freeze Monday
  2013-01-16 18:12 ` [Qemu-devel] [Qemu-stable] Patch Round-up for stable 1.3.1, freeze Monday Michael Tokarev
@ 2013-01-16 18:56   ` mdroth
  2013-01-16 21:21     ` Michael Tokarev
  0 siblings, 1 reply; 26+ messages in thread
From: mdroth @ 2013-01-16 18:56 UTC (permalink / raw)
  To: Michael Tokarev; +Cc: aliguori, qemu-devel, qemu-stable

On Wed, Jan 16, 2013 at 10:12:38PM +0400, Michael Tokarev wrote:
> 16.01.2013 20:49, Michael Roth wrote:
> >Hi everyone,
> >
> >The following new patches are queued for QEMU stable v1.3.1:
> >
> >https://github.com/mdroth/qemu/commits/stable-1.3-staging
> >
> >The release is planned for 01-25-2013:
> >
> >http://wiki.qemu.org/Planning/1.3
> >
> >Please CC qemu-stable@nongnu.org on any patches you think should be
> >included in the release. The cut-off date is 01-21-2013 for new patches.
> >
> >Testing/feedback is greatly appreciated.
> >
> >Thanks!
> 
> Actual commit IDs from the master branch, with some comments
> (with just one useful for 1.3 comment, about e1000 security fix):
> 
> >204dd38 raw-posix: fix bdrv_aio_ioctl (Paolo Bonzini)
> b608c8dc02c78ee95455a0989bdf1b41c768b2ef
> 
> >86bab45 vfio-pci: Loosen sanity checks to allow future features (Alex Williamson)
> 8fc94e5a8046e349e07976f9bcaffbcd5833f3a2
> 
> >006c747 pci-assign: Enable MSIX on device to match guest (Alex Williamson)
> feb9a2ab4b0260d8d680a7ffd25063dafc7ec628
> 
> This is applicable to old qemu-kvm (pre-1.3-merge), so it is qemu-kvm 1.1
> and qemu-kvm 1.2.  I missed it for 1.1 because it is qemu-kvm-specific.
> Queued for debian qemu-kvm package.
> 
> >f042cca vfio-pci: Make host MSI-X enable track guest (Alex Williamson)
> b0223e29afdc88cc262a764026296414396cd129
> 
> >1205b80 target-xtensa: fix search_pc for the last TB opcode (Max Filippov)
> 36f25d2537c40c6c47f4abee5d31a24863d1adf7
> 
> Now queued to stable-1.1 too.
> 
> >ff0c079 buffered_file: do not send more than s->bytes_xfer bytes per tick (Paolo Bonzini)
> bde54c08b4854aceee3dee25121a2b835cb81166
> 
> Now queued to stable-1.1 too, with backport changes.
> 
> >d745511 migration: fix migration_bitmap leak (Paolo Bonzini)
> 244eaa7514a944b36273eb8428f32da8e9124fcf
> 
> >5afd0ec e1000: Discard oversized packets based on SBP|LPE (Michael Contreras)
> 2c0331f4f7d241995452b99afaf0aab00493334a
> 
> Guys, this is just one half of the CVE-2012-6075 fix.
> Please don't repeat the same mistake again and again.
> Second patch by Michael is neede to fix this too.

Do you mean b0d9ffcd0251161c7c92f94804dcf599dfa3edeb? If so, that one made it
in just before 1.3.0, and this picks up the 2nd patch.

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Qemu-devel] [Qemu-stable] Patch Round-up for stable 1.3.1, freeze Monday
  2013-01-16 18:56   ` mdroth
@ 2013-01-16 21:21     ` Michael Tokarev
  0 siblings, 0 replies; 26+ messages in thread
From: Michael Tokarev @ 2013-01-16 21:21 UTC (permalink / raw)
  To: mdroth; +Cc: aliguori, qemu-devel, qemu-stable

16.01.2013 22:56, mdroth wrote:
> On Wed, Jan 16, 2013 at 10:12:38PM +0400, Michael Tokarev wrote:

>>> 5afd0ec e1000: Discard oversized packets based on SBP|LPE (Michael Contreras)
>> 2c0331f4f7d241995452b99afaf0aab00493334a
>>
>> Guys, this is just one half of the CVE-2012-6075 fix.
>> Please don't repeat the same mistake again and again.
>> Second patch by Michael is neede to fix this too.
>
> Do you mean b0d9ffcd0251161c7c92f94804dcf599dfa3edeb? If so, that one made it
> in just before 1.3.0, and this picks up the 2nd patch.

Oh.  Yes, you're right.  N/m.

Thanks,

/mjt

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Qemu-devel] [Qemu-stable] Patch Round-up for stable 1.3.1, freeze Monday
  2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
                   ` (21 preceding siblings ...)
  2013-01-16 18:12 ` [Qemu-devel] [Qemu-stable] Patch Round-up for stable 1.3.1, freeze Monday Michael Tokarev
@ 2013-01-19  1:59 ` Doug Goldstein
  22 siblings, 0 replies; 26+ messages in thread
From: Doug Goldstein @ 2013-01-19  1:59 UTC (permalink / raw)
  To: Michael Roth; +Cc: aliguori, qemu-devel, qemu-stable

On Wed, Jan 16, 2013 at 10:49 AM, Michael Roth
<mdroth@linux.vnet.ibm.com> wrote:
> Hi everyone,
>
> The following new patches are queued for QEMU stable v1.3.1:
>
> https://github.com/mdroth/qemu/commits/stable-1.3-staging
>
> The release is planned for 01-25-2013:
>
> http://wiki.qemu.org/Planning/1.3
>
> Please CC qemu-stable@nongnu.org on any patches you think should be
> included in the release. The cut-off date is 01-21-2013 for new patches.
>
> Testing/feedback is greatly appreciated.
>
> Thanks!
>
> 204dd38 raw-posix: fix bdrv_aio_ioctl (Paolo Bonzini)
> 86bab45 vfio-pci: Loosen sanity checks to allow future features (Alex Williamson)
> 006c747 pci-assign: Enable MSIX on device to match guest (Alex Williamson)
> f042cca vfio-pci: Make host MSI-X enable track guest (Alex Williamson)
> 1205b80 target-xtensa: fix search_pc for the last TB opcode (Max Filippov)
> ff0c079 buffered_file: do not send more than s->bytes_xfer bytes per tick (Paolo Bonzini)
> d745511 migration: fix migration_bitmap leak (Paolo Bonzini)
> 5afd0ec e1000: Discard oversized packets based on SBP|LPE (Michael Contreras)
> c4cd5b0 qxl+vnc: register a vm state change handler for dummy spice_server (Uri Lublin)
> 7ca2496 qxl: save qemu_create_displaysurface_from result (Gerd Hoffmann)
> bfae937 target-xtensa: fix ITLB/DTLB page protection flags (Max Filippov)
> b68c48f pixman: fix vnc tight png/jpeg support (Gerd Hoffmann)
> 36fd817 Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901 (Gerd Hoffmann)
> 0bc5f4a seabios: update to e8a76b0f225bba5ba9d63ab227e0a37b3beb1059 (Gerd Hoffmann)
> 37e1428 vfio-pci: Don't use kvm_irqchip_in_kernel (Alex Williamson)
> 518799a target-mips: Fix incorrect shift for SHILO and SHILOV (Petar Jovanovic)
> 16c5fe4 target-mips: Fix incorrect code and test for INSV (Petar Jovanovic)
> f1a2195 migration: Fix madvise breakage if host and guest have different page sizes (David Gibson)
> 3b4fc1f Fix off-by-1 error in RAM migration code (David Gibson)
> d67d95f Disable semaphores fallback code for OpenBSD (Brad Smith)
> 0a7ad69 Fix semaphores fallback code (Brad Smith)
>
>

I'd be great if you could push this repo ahead of time so that we can
test it prior to the cut off and release. Honestly, when a patch is
selected to be shipped in a stable release it'd be great if it was
backported and pushed into that stable repo as that would allow for
more testing of the stable series. I know this increases your
maintenance burden but it would enable more distros to provide you
more meaningful feedback on stable releases so that they are truly
stable.

-- 
Doug Goldstein

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2013-01-19  1:59 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-16 16:49 [Qemu-devel] Patch Round-up for stable 1.3.1, freeze Monday Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 01/21] Fix semaphores fallback code Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 02/21] Disable semaphores fallback code for OpenBSD Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 03/21] Fix off-by-1 error in RAM migration code Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 04/21] migration: Fix madvise breakage if host and guest have different page sizes Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 05/21] target-mips: Fix incorrect code and test for INSV Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 06/21] target-mips: Fix incorrect shift for SHILO and SHILOV Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 07/21] vfio-pci: Don't use kvm_irqchip_in_kernel Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 08/21] seabios: update to e8a76b0f225bba5ba9d63ab227e0a37b3beb1059 Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 09/21] Update seabios to a810e4e72a0d42c7bc04eda57382f8e019add901 Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 10/21] pixman: fix vnc tight png/jpeg support Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 11/21] target-xtensa: fix ITLB/DTLB page protection flags Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 12/21] qxl: save qemu_create_displaysurface_from result Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 13/21] qxl+vnc: register a vm state change handler for dummy spice_server Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 14/21] e1000: Discard oversized packets based on SBP|LPE Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 15/21] migration: fix migration_bitmap leak Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 16/21] buffered_file: do not send more than s->bytes_xfer bytes per tick Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 17/21] target-xtensa: fix search_pc for the last TB opcode Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 18/21] vfio-pci: Make host MSI-X enable track guest Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 19/21] pci-assign: Enable MSIX on device to match guest Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 20/21] vfio-pci: Loosen sanity checks to allow future features Michael Roth
2013-01-16 16:49 ` [Qemu-devel] [PATCH 21/21] raw-posix: fix bdrv_aio_ioctl Michael Roth
2013-01-16 18:12 ` [Qemu-devel] [Qemu-stable] Patch Round-up for stable 1.3.1, freeze Monday Michael Tokarev
2013-01-16 18:56   ` mdroth
2013-01-16 21:21     ` Michael Tokarev
2013-01-19  1:59 ` Doug Goldstein

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).