Fix bogus libcacard dep on gluster (bz #987441)
Fix mouse with -display gtk -vga qxl (bz #1051724) Change gtk quit accelerator to ctrl+shift+q (bz #1062393) Fix crash during virtio-scsi hotplug (bz #1051611)
This commit is contained in:
parent
3fa1863e91
commit
05010a02f4
|
@ -24,3 +24,4 @@ qemu-kvm-0.13.0-25fdf4a.tar.gz
|
|||
/qemu-1.5.2.tar.bz2
|
||||
/qemu-1.6.0.tar.bz2
|
||||
/qemu-1.6.1.tar.bz2
|
||||
/qemu-1.6.2.tar.bz2
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 2196426a9b081cb99f4bdefb854aaa206bdd0392 Mon Sep 17 00:00:00 2001
|
||||
From 2ad13e88a15c892d2732467bf8b8a6656c521c09 Mon Sep 17 00:00:00 2001
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Fri, 16 Aug 2013 12:14:51 -0400
|
||||
Subject: [PATCH] Fix migration from qemu-kvm
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 85a924af30f31a4f701ee6f18d84dd27aa02f47b Mon Sep 17 00:00:00 2001
|
||||
From ff175461008f3f782c8976b8ad898120b88bc846 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Tue, 13 Aug 2013 00:02:18 +0200
|
||||
Subject: [PATCH] isapc: disable kvmvapic
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 07873f45017c04994496d8dc3f7acb60358bba49 Mon Sep 17 00:00:00 2001
|
||||
From a995edb5118fb249619444dbb3218e461f661286 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Thu, 2 May 2013 11:38:37 +0200
|
||||
Subject: [PATCH] pci: do not export pci_bus_reset
|
||||
|
@ -19,10 +19,10 @@ Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|||
3 files changed, 3 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
|
||||
index 4c004f5..0389375 100644
|
||||
index dc5b788..3a0c4a7 100644
|
||||
--- a/hw/pci/pci.c
|
||||
+++ b/hw/pci/pci.c
|
||||
@@ -210,8 +210,9 @@ void pci_device_reset(PCIDevice *dev)
|
||||
@@ -212,8 +212,9 @@ void pci_device_reset(PCIDevice *dev)
|
||||
* Trigger pci bus reset under a given bus.
|
||||
* To be called on RST# assert.
|
||||
*/
|
||||
|
@ -33,7 +33,7 @@ index 4c004f5..0389375 100644
|
|||
int i;
|
||||
|
||||
for (i = 0; i < bus->nirq; i++) {
|
||||
@@ -222,11 +223,6 @@ void pci_bus_reset(PCIBus *bus)
|
||||
@@ -224,11 +225,6 @@ void pci_bus_reset(PCIBus *bus)
|
||||
pci_device_reset(bus->devices[i]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From cf09bc533d82f2b16d1e9f4888c1afd977ca256d Mon Sep 17 00:00:00 2001
|
||||
From eb42e0f25a3fc432443a0e9287968cfa5268f25f Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Thu, 2 May 2013 11:38:38 +0200
|
||||
Subject: [PATCH] qdev: allow both pre- and post-order vists in qdev walking
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 41a2077cea8ce006dbef885bcb0778af05a0b159 Mon Sep 17 00:00:00 2001
|
||||
From 6158b4394ba67d1f488cb743ec3f4acb06c270e4 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Thu, 2 May 2013 11:38:39 +0200
|
||||
Subject: [PATCH] qdev: switch reset to post-order
|
||||
|
@ -59,7 +59,7 @@ index 842804f..87d7e1e 100644
|
|||
|
||||
void qbus_reset_all_fn(void *opaque)
|
||||
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
|
||||
index 0389375..bbca696 100644
|
||||
index 3a0c4a7..129cdb7 100644
|
||||
--- a/hw/pci/pci.c
|
||||
+++ b/hw/pci/pci.c
|
||||
@@ -46,7 +46,7 @@
|
||||
|
@ -68,10 +68,10 @@ index 0389375..bbca696 100644
|
|||
static char *pcibus_get_fw_dev_path(DeviceState *dev);
|
||||
-static int pcibus_reset(BusState *qbus);
|
||||
+static void pcibus_reset(BusState *qbus);
|
||||
static void pci_bus_finalize(Object *obj);
|
||||
|
||||
static Property pci_props[] = {
|
||||
DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1),
|
||||
@@ -165,16 +165,10 @@ void pci_device_deassert_intx(PCIDevice *dev)
|
||||
@@ -167,16 +167,10 @@ void pci_device_deassert_intx(PCIDevice *dev)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ index 0389375..bbca696 100644
|
|||
dev->irq_state = 0;
|
||||
pci_update_irq_status(dev);
|
||||
pci_device_deassert_intx(dev);
|
||||
@@ -207,10 +201,21 @@ void pci_device_reset(PCIDevice *dev)
|
||||
@@ -209,10 +203,21 @@ void pci_device_reset(PCIDevice *dev)
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -113,7 +113,7 @@ index 0389375..bbca696 100644
|
|||
{
|
||||
PCIBus *bus = DO_UPCAST(PCIBus, qbus, qbus);
|
||||
int i;
|
||||
@@ -220,13 +225,9 @@ static int pcibus_reset(BusState *qbus)
|
||||
@@ -222,13 +227,9 @@ static int pcibus_reset(BusState *qbus)
|
||||
}
|
||||
for (i = 0; i < ARRAY_SIZE(bus->devices); ++i) {
|
||||
if (bus->devices[i]) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From ed35f9edcc420b4f8c1f909bc7cfb002a54f437b Mon Sep 17 00:00:00 2001
|
||||
From 07742515412e1240bcc3dc2a7b335839862583d4 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:50 +0200
|
||||
Subject: [PATCH] virtio-bus: remove vdev field
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 1d388b4fda2c4c9d00dc6ae91aaf35eb9fc04c26 Mon Sep 17 00:00:00 2001
|
||||
From b8715ac95b5f0d1bf75b072bb245d7b041fe8ca9 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:51 +0200
|
||||
Subject: [PATCH] virtio-pci: remove vdev field
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From a9b1f1aeba8167ae90aecea9b8ca223faf33ae90 Mon Sep 17 00:00:00 2001
|
||||
From cb4b225256c2c12eaf0b53c6633c38ac7ad9561d Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:52 +0200
|
||||
Subject: [PATCH] virtio-ccw: remove vdev field
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From fe02fcc2b929e6a678ec783cb80890b79b7dca78 Mon Sep 17 00:00:00 2001
|
||||
From f547bed0159d3da84b66d8f6462642d79cced064 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:53 +0200
|
||||
Subject: [PATCH] virtio-bus: cleanup plug/unplug interface
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From aa75555e6fb5cae0e495cb5f7d9f3511ad5ac6ce Mon Sep 17 00:00:00 2001
|
||||
From f670d1a035292e1765ececcc72ef3343351f4af0 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:54 +0200
|
||||
Subject: [PATCH] virtio-blk: switch exit callback to VirtioDeviceClass
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 811b51426d9e7819e6498d4dad0d6ac744a8e5d0 Mon Sep 17 00:00:00 2001
|
||||
From 77d6cf9ef41cd7d01a8ca4ed9c36876da1043ca3 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:55 +0200
|
||||
Subject: [PATCH] virtio-serial: switch exit callback to VirtioDeviceClass
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 1582699fb9f748f9f91b015ef311f93bf5a95f5d Mon Sep 17 00:00:00 2001
|
||||
From 741a5a10161b87fbf324f13a4c8d7d0c1563e98b Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:56 +0200
|
||||
Subject: [PATCH] virtio-net: switch exit callback to VirtioDeviceClass
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|||
1 file changed, 4 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
|
||||
index aa1880c..46a4d8c 100644
|
||||
index 5320aab..060b900 100644
|
||||
--- a/hw/net/virtio-net.c
|
||||
+++ b/hw/net/virtio-net.c
|
||||
@@ -1568,16 +1568,15 @@ static int virtio_net_device_init(VirtIODevice *vdev)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From df750f462929ba85a61dbdd6a4020cb4b2ee68d0 Mon Sep 17 00:00:00 2001
|
||||
From 05677a87c77c56eb96e3e0b6842cc5d9a8ea48b1 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:57 +0200
|
||||
Subject: [PATCH] virtio-scsi: switch exit callback to VirtioDeviceClass
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From d42ac36363ef9e3d3963c2c31fa7122492dbaf0e Mon Sep 17 00:00:00 2001
|
||||
From 7805e853dfda059e3524cb564aef623a1a6aa6ef Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:58 +0200
|
||||
Subject: [PATCH] virtio-balloon: switch exit callback to VirtioDeviceClass
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 2bb10b85ffa655f91a4777da4f7a5534ee4c266c Mon Sep 17 00:00:00 2001
|
||||
From d1c9d98ee0e4128337f63649895994a7867312c0 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:57:59 +0200
|
||||
Subject: [PATCH] virtio-rng: switch exit callback to VirtioDeviceClass
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From cb2282d55ee34d04a67d74111d69ab098f765680 Mon Sep 17 00:00:00 2001
|
||||
From 555fd6699a04882775fc964830fea2447e0fa905 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 16:58:00 +0200
|
||||
Subject: [PATCH] virtio-pci: add device_unplugged callback
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 411a7e4ad457f7f3c9f1d02ef9f726ce13a35f08 Mon Sep 17 00:00:00 2001
|
||||
From 9faa24bdebcab5861acfa9fe390997d1eb319219 Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Wolf <kwolf@redhat.com>
|
||||
Date: Fri, 6 Sep 2013 12:32:25 +0200
|
||||
Subject: [PATCH] qcow2: Pass discard type to qcow2_discard_clusters()
|
||||
|
@ -14,10 +14,10 @@ Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|||
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
|
||||
index cca76d4..8c3185d 100644
|
||||
index b558eb0..09abbf0 100644
|
||||
--- a/block/qcow2-cluster.c
|
||||
+++ b/block/qcow2-cluster.c
|
||||
@@ -1317,7 +1317,7 @@ int qcow2_decompress_cluster(BlockDriverState *bs, uint64_t cluster_offset)
|
||||
@@ -1320,7 +1320,7 @@ int qcow2_decompress_cluster(BlockDriverState *bs, uint64_t cluster_offset)
|
||||
* clusters.
|
||||
*/
|
||||
static int discard_single_l2(BlockDriverState *bs, uint64_t offset,
|
||||
|
@ -26,7 +26,7 @@ index cca76d4..8c3185d 100644
|
|||
{
|
||||
BDRVQcowState *s = bs->opaque;
|
||||
uint64_t *l2_table;
|
||||
@@ -1346,7 +1346,7 @@ static int discard_single_l2(BlockDriverState *bs, uint64_t offset,
|
||||
@@ -1349,7 +1349,7 @@ static int discard_single_l2(BlockDriverState *bs, uint64_t offset,
|
||||
l2_table[l2_index + i] = cpu_to_be64(0);
|
||||
|
||||
/* Then decrease the refcount */
|
||||
|
@ -35,7 +35,7 @@ index cca76d4..8c3185d 100644
|
|||
}
|
||||
|
||||
ret = qcow2_cache_put(bs, s->l2_table_cache, (void**) &l2_table);
|
||||
@@ -1358,7 +1358,7 @@ static int discard_single_l2(BlockDriverState *bs, uint64_t offset,
|
||||
@@ -1361,7 +1361,7 @@ static int discard_single_l2(BlockDriverState *bs, uint64_t offset,
|
||||
}
|
||||
|
||||
int qcow2_discard_clusters(BlockDriverState *bs, uint64_t offset,
|
||||
|
@ -44,7 +44,7 @@ index cca76d4..8c3185d 100644
|
|||
{
|
||||
BDRVQcowState *s = bs->opaque;
|
||||
uint64_t end_offset;
|
||||
@@ -1381,7 +1381,7 @@ int qcow2_discard_clusters(BlockDriverState *bs, uint64_t offset,
|
||||
@@ -1384,7 +1384,7 @@ int qcow2_discard_clusters(BlockDriverState *bs, uint64_t offset,
|
||||
|
||||
/* Each L2 table is handled by its own loop iteration */
|
||||
while (nb_clusters > 0) {
|
||||
|
@ -54,10 +54,10 @@ index cca76d4..8c3185d 100644
|
|||
goto fail;
|
||||
}
|
||||
diff --git a/block/qcow2.c b/block/qcow2.c
|
||||
index 7f7282e..16e45a0 100644
|
||||
index 3bf932b..f87e6e3 100644
|
||||
--- a/block/qcow2.c
|
||||
+++ b/block/qcow2.c
|
||||
@@ -1506,7 +1506,7 @@ static coroutine_fn int qcow2_co_discard(BlockDriverState *bs,
|
||||
@@ -1510,7 +1510,7 @@ static coroutine_fn int qcow2_co_discard(BlockDriverState *bs,
|
||||
|
||||
qemu_co_mutex_lock(&s->lock);
|
||||
ret = qcow2_discard_clusters(bs, sector_num << BDRV_SECTOR_BITS,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 16d78f7cd9e1455ebb0599706ba5badfa3ee4fdc Mon Sep 17 00:00:00 2001
|
||||
From 08af434ab2532e22edc79898c6958ad6c44d10e1 Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Wolf <kwolf@redhat.com>
|
||||
Date: Fri, 6 Sep 2013 12:32:26 +0200
|
||||
Subject: [PATCH] qcow2: Discard VM state in active L1 after creating snapshot
|
||||
|
@ -40,10 +40,10 @@ index 0caac90..ae33b45 100644
|
|||
{
|
||||
BdrvCheckResult result = {0};
|
||||
diff --git a/block/qcow2.c b/block/qcow2.c
|
||||
index 16e45a0..f63c2cb 100644
|
||||
index f87e6e3..44161b2 100644
|
||||
--- a/block/qcow2.c
|
||||
+++ b/block/qcow2.c
|
||||
@@ -1666,11 +1666,6 @@ static coroutine_fn int qcow2_co_flush_to_os(BlockDriverState *bs)
|
||||
@@ -1670,11 +1670,6 @@ static coroutine_fn int qcow2_co_flush_to_os(BlockDriverState *bs)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
From 6f7e1d2bddb5a0a1c65f6f02467460d6edbcc901 Mon Sep 17 00:00:00 2001
|
||||
From 7e1b10e09968a5d503feacc45eabe6608361a527 Mon Sep 17 00:00:00 2001
|
||||
From: "Daniel P. Berrange" <berrange@redhat.com>
|
||||
Date: Tue, 1 Oct 2013 12:28:17 +0100
|
||||
Subject: [PATCH] hw/9pfs: Fix errno value for xattr functions
|
||||
|
|
|
@ -1,203 +0,0 @@
|
|||
From 042c76790b1168766332b1aafa4429c265d35ed0 Mon Sep 17 00:00:00 2001
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 7 Oct 2013 16:32:24 -0400
|
||||
Subject: [PATCH] Fix pc migration from qemu <= 1.5
|
||||
|
||||
The following commit introduced a migration incompatibility:
|
||||
|
||||
commit 568f0690fd9aa4d39d84b04c1a5dbb53a915c3fe
|
||||
Author: David Gibson <david@gibson.dropbear.id.au>
|
||||
Date: Thu Jun 6 18:48:49 2013 +1000
|
||||
|
||||
pci: Replace pci_find_domain() with more general pci_root_bus_path()
|
||||
|
||||
The issue is that i440fx savevm idstr went from 0000:00:00.0/I440FX to
|
||||
0000:00.0/I440FX. Unfortunately we are stuck with the breakage for
|
||||
1.6 machine types.
|
||||
|
||||
Add a compat property to maintain the busted idstr for the 1.6 machine
|
||||
types, but revert to the old style format for 1.7+, and <= 1.5.
|
||||
|
||||
Tested with migration from qemu 1.5, qemu 1.6, and qemu.git.
|
||||
|
||||
Cc: qemu-stable@nongnu.org
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
---
|
||||
hw/i386/pc_piix.c | 11 +++++++++++
|
||||
hw/i386/pc_q35.c | 11 +++++++++++
|
||||
hw/pci-host/piix.c | 9 ++++++++-
|
||||
hw/pci-host/q35.c | 10 ++++++++--
|
||||
include/hw/i386/pc.h | 20 ++++++++++++++++++++
|
||||
include/hw/pci-host/q35.h | 1 +
|
||||
6 files changed, 59 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
|
||||
index 2f2cb4d..10866f5 100644
|
||||
--- a/hw/i386/pc_piix.c
|
||||
+++ b/hw/i386/pc_piix.c
|
||||
@@ -341,6 +341,13 @@ static void pc_xen_hvm_init(QEMUMachineInitArgs *args)
|
||||
}
|
||||
#endif
|
||||
|
||||
+#define PC_I440FX_MACHINE_OPTIONS \
|
||||
+ PC_DEFAULT_MACHINE_OPTIONS, \
|
||||
+ .desc = "Standard PC (i440FX + PIIX, 1996)", \
|
||||
+ .hot_add_cpu = pc_hot_add_cpu
|
||||
+
|
||||
+#define PC_I440FX_1_6_MACHINE_OPTIONS PC_I440FX_MACHINE_OPTIONS
|
||||
+
|
||||
static QEMUMachine pc_i440fx_machine_v1_6 = {
|
||||
.name = "pc-i440fx-1.6",
|
||||
.alias = "pc",
|
||||
@@ -349,6 +356,10 @@ static QEMUMachine pc_i440fx_machine_v1_6 = {
|
||||
.hot_add_cpu = pc_hot_add_cpu,
|
||||
.max_cpus = 255,
|
||||
.is_default = 1,
|
||||
+ .compat_props = (GlobalProperty[]) {
|
||||
+ PC_COMPAT_1_6,
|
||||
+ { /* end of list */ }
|
||||
+ },
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
|
||||
index dd13130..4998ed3 100644
|
||||
--- a/hw/i386/pc_q35.c
|
||||
+++ b/hw/i386/pc_q35.c
|
||||
@@ -243,6 +243,13 @@ static void pc_q35_init_1_4(QEMUMachineInitArgs *args)
|
||||
pc_q35_init(args);
|
||||
}
|
||||
|
||||
+#define PC_Q35_MACHINE_OPTIONS \
|
||||
+ PC_DEFAULT_MACHINE_OPTIONS, \
|
||||
+ .desc = "Standard PC (Q35 + ICH9, 2009)", \
|
||||
+ .hot_add_cpu = pc_hot_add_cpu
|
||||
+
|
||||
+#define PC_Q35_1_6_MACHINE_OPTIONS PC_Q35_MACHINE_OPTIONS
|
||||
+
|
||||
static QEMUMachine pc_q35_machine_v1_6 = {
|
||||
.name = "pc-q35-1.6",
|
||||
.alias = "q35",
|
||||
@@ -250,6 +257,10 @@ static QEMUMachine pc_q35_machine_v1_6 = {
|
||||
.init = pc_q35_init_1_6,
|
||||
.hot_add_cpu = pc_hot_add_cpu,
|
||||
.max_cpus = 255,
|
||||
+ .compat_props = (GlobalProperty[]) {
|
||||
+ PC_COMPAT_1_6,
|
||||
+ { /* end of list */ }
|
||||
+ },
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
diff --git a/hw/pci-host/piix.c b/hw/pci-host/piix.c
|
||||
index 221d82b..967f949 100644
|
||||
--- a/hw/pci-host/piix.c
|
||||
+++ b/hw/pci-host/piix.c
|
||||
@@ -48,6 +48,7 @@ typedef struct I440FXState {
|
||||
PCIHostState parent_obj;
|
||||
PcPciInfo pci_info;
|
||||
uint64_t pci_hole64_size;
|
||||
+ uint32_t short_root_bus;
|
||||
} I440FXState;
|
||||
|
||||
#define PIIX_NUM_PIC_IRQS 16 /* i8259 * 2 */
|
||||
@@ -706,13 +707,19 @@ static const TypeInfo i440fx_info = {
|
||||
static const char *i440fx_pcihost_root_bus_path(PCIHostState *host_bridge,
|
||||
PCIBus *rootbus)
|
||||
{
|
||||
+ I440FXState *s = I440FX_PCI_HOST_BRIDGE(host_bridge);
|
||||
+
|
||||
/* For backwards compat with old device paths */
|
||||
- return "0000";
|
||||
+ if (s->short_root_bus) {
|
||||
+ return "0000";
|
||||
+ }
|
||||
+ return "0000:00";
|
||||
}
|
||||
|
||||
static Property i440fx_props[] = {
|
||||
DEFINE_PROP_SIZE(PCI_HOST_PROP_PCI_HOLE64_SIZE, I440FXState,
|
||||
pci_hole64_size, DEFAULT_PCI_HOLE64_SIZE),
|
||||
+ DEFINE_PROP_UINT32("short_root_bus", I440FXState, short_root_bus, 0),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
|
||||
index 4febd24..f762053 100644
|
||||
--- a/hw/pci-host/q35.c
|
||||
+++ b/hw/pci-host/q35.c
|
||||
@@ -61,8 +61,13 @@ static void q35_host_realize(DeviceState *dev, Error **errp)
|
||||
static const char *q35_host_root_bus_path(PCIHostState *host_bridge,
|
||||
PCIBus *rootbus)
|
||||
{
|
||||
- /* For backwards compat with old device paths */
|
||||
- return "0000";
|
||||
+ Q35PCIHost *s = Q35_HOST_DEVICE(host_bridge);
|
||||
+
|
||||
+ /* For backwards compat with old device paths */
|
||||
+ if (s->mch.short_root_bus) {
|
||||
+ return "0000";
|
||||
+ }
|
||||
+ return "0000:00";
|
||||
}
|
||||
|
||||
static void q35_host_get_pci_hole_start(Object *obj, Visitor *v,
|
||||
@@ -108,6 +113,7 @@ static Property mch_props[] = {
|
||||
MCH_HOST_BRIDGE_PCIEXBAR_DEFAULT),
|
||||
DEFINE_PROP_SIZE(PCI_HOST_PROP_PCI_HOLE64_SIZE, Q35PCIHost,
|
||||
mch.pci_hole64_size, DEFAULT_PCI_HOLE64_SIZE),
|
||||
+ DEFINE_PROP_UINT32("short_root_bus", Q35PCIHost, mch.short_root_bus, 0),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
|
||||
index 475ba9e..6e2b839 100644
|
||||
--- a/include/hw/i386/pc.h
|
||||
+++ b/include/hw/i386/pc.h
|
||||
@@ -225,7 +225,19 @@ void pvpanic_init(ISABus *bus);
|
||||
|
||||
int e820_add_entry(uint64_t, uint64_t, uint32_t);
|
||||
|
||||
+#define PC_COMPAT_1_6 \
|
||||
+ {\
|
||||
+ .driver = "i440FX-pcihost",\
|
||||
+ .property = "short_root_bus",\
|
||||
+ .value = stringify(1),\
|
||||
+ },{\
|
||||
+ .driver = "q35-pcihost",\
|
||||
+ .property = "short_root_bus",\
|
||||
+ .value = stringify(1),\
|
||||
+ }
|
||||
+
|
||||
#define PC_COMPAT_1_5 \
|
||||
+ PC_COMPAT_1_6, \
|
||||
{\
|
||||
.driver = "Conroe-" TYPE_X86_CPU,\
|
||||
.property = "model",\
|
||||
@@ -258,6 +270,14 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t);
|
||||
.driver = TYPE_X86_CPU,\
|
||||
.property = "pmu",\
|
||||
.value = "on",\
|
||||
+ },{\
|
||||
+ .driver = "i440FX-pcihost",\
|
||||
+ .property = "short_root_bus",\
|
||||
+ .value = stringify(0),\
|
||||
+ },{\
|
||||
+ .driver = "q35-pcihost",\
|
||||
+ .property = "short_root_bus",\
|
||||
+ .value = stringify(0),\
|
||||
}
|
||||
|
||||
#define PC_COMPAT_1_4 \
|
||||
diff --git a/include/hw/pci-host/q35.h b/include/hw/pci-host/q35.h
|
||||
index 6eb7ab6..95a3cc2 100644
|
||||
--- a/include/hw/pci-host/q35.h
|
||||
+++ b/include/hw/pci-host/q35.h
|
||||
@@ -61,6 +61,7 @@ typedef struct MCHPCIState {
|
||||
ram_addr_t above_4g_mem_size;
|
||||
uint64_t pci_hole64_size;
|
||||
PcGuestInfo *guest_info;
|
||||
+ uint32_t short_root_bus;
|
||||
} MCHPCIState;
|
||||
|
||||
typedef struct Q35PCIHost {
|
|
@ -1,42 +0,0 @@
|
|||
From 6b7ac46a461482c06c5ccdf54815e94205bc7d95 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 9 Oct 2013 21:33:44 +0200
|
||||
Subject: [PATCH] audio: honor QEMU_AUDIO_TIMER_PERIOD instead of waking up
|
||||
every *nano* second
|
||||
|
||||
Now that we no longer have MIN_REARM_TIMER_NS a bug in the audio subsys has
|
||||
clearly shown it self by trying to make a timer fire every nano second.
|
||||
|
||||
Note we have a similar problem in 1.6, 1.5 and older but there
|
||||
MIN_REARM_TIMER_NS limits the wakeups caused by audio being active to
|
||||
4000 times / second. This still causes a host cpu load of 50 % for simply
|
||||
playing audio, where as with this patch git master is at 13%, so we should
|
||||
backport this to 1.5 and 1.6 too.
|
||||
|
||||
Note this will not apply to 1.5 and 1.6 as is.
|
||||
|
||||
Cc: qemu-stable@nongnu.org
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
||||
(cherry picked from commit b4350deed67b95651896ddb60cf9f765093a4848)
|
||||
|
||||
Conflicts:
|
||||
audio/audio.c
|
||||
---
|
||||
audio/audio.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/audio/audio.c b/audio/audio.c
|
||||
index 02bb886..f9b3e95 100644
|
||||
--- a/audio/audio.c
|
||||
+++ b/audio/audio.c
|
||||
@@ -1124,7 +1124,8 @@ static int audio_is_timer_needed (void)
|
||||
static void audio_reset_timer (AudioState *s)
|
||||
{
|
||||
if (audio_is_timer_needed ()) {
|
||||
- qemu_mod_timer (s->ts, qemu_get_clock_ns (vm_clock) + 1);
|
||||
+ qemu_mod_timer (s->ts,
|
||||
+ qemu_get_clock_ns (vm_clock) + conf.period.ticks);
|
||||
}
|
||||
else {
|
||||
qemu_del_timer (s->ts);
|
|
@ -1,181 +0,0 @@
|
|||
From dd733d7097c126ee3b8ee8a0f4c38b8ccac76504 Mon Sep 17 00:00:00 2001
|
||||
From: Amos Kong <akong@redhat.com>
|
||||
Date: Fri, 15 Nov 2013 18:53:14 +0100
|
||||
Subject: [PATCH] qmp: access the local QemuOptsLists for drive option
|
||||
|
||||
Currently we have three QemuOptsList (qemu_common_drive_opts,
|
||||
qemu_legacy_drive_opts, and qemu_drive_opts), only qemu_drive_opts
|
||||
is added to vm_config_groups[].
|
||||
|
||||
This patch changes query-command-line-options to access three local
|
||||
QemuOptsLists for drive option, and merge the description items
|
||||
together.
|
||||
|
||||
Signed-off-by: Amos Kong <akong@redhat.com>
|
||||
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
||||
---
|
||||
blockdev.c | 1 -
|
||||
include/qemu/config-file.h | 1 +
|
||||
include/sysemu/sysemu.h | 1 +
|
||||
util/qemu-config.c | 77 +++++++++++++++++++++++++++++++++++++++++++++-
|
||||
vl.c | 2 ++
|
||||
5 files changed, 80 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/blockdev.c b/blockdev.c
|
||||
index 097932c..1a6892e 100644
|
||||
--- a/blockdev.c
|
||||
+++ b/blockdev.c
|
||||
@@ -45,7 +45,6 @@
|
||||
#include "sysemu/arch_init.h"
|
||||
|
||||
static QTAILQ_HEAD(drivelist, DriveInfo) drives = QTAILQ_HEAD_INITIALIZER(drives);
|
||||
-extern QemuOptsList qemu_common_drive_opts;
|
||||
extern QemuOptsList qemu_old_drive_opts;
|
||||
|
||||
static const char *const if_name[IF_COUNT] = {
|
||||
diff --git a/include/qemu/config-file.h b/include/qemu/config-file.h
|
||||
index ad4a9e5..508428f 100644
|
||||
--- a/include/qemu/config-file.h
|
||||
+++ b/include/qemu/config-file.h
|
||||
@@ -8,6 +8,7 @@
|
||||
QemuOptsList *qemu_find_opts(const char *group);
|
||||
QemuOptsList *qemu_find_opts_err(const char *group, Error **errp);
|
||||
void qemu_add_opts(QemuOptsList *list);
|
||||
+void qemu_add_drive_opts(QemuOptsList *list);
|
||||
int qemu_set_option(const char *str);
|
||||
int qemu_global_option(const char *str);
|
||||
void qemu_add_globals(void);
|
||||
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
|
||||
index 1a77c99..4962cef 100644
|
||||
--- a/include/sysemu/sysemu.h
|
||||
+++ b/include/sysemu/sysemu.h
|
||||
@@ -190,6 +190,7 @@ QemuOpts *qemu_get_machine_opts(void);
|
||||
|
||||
bool usb_enabled(bool default_usb);
|
||||
|
||||
+extern QemuOptsList qemu_common_drive_opts;
|
||||
extern QemuOptsList qemu_drive_opts;
|
||||
extern QemuOptsList qemu_chardev_opts;
|
||||
extern QemuOptsList qemu_device_opts;
|
||||
diff --git a/util/qemu-config.c b/util/qemu-config.c
|
||||
index a59568d..04da942 100644
|
||||
--- a/util/qemu-config.c
|
||||
+++ b/util/qemu-config.c
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "qmp-commands.h"
|
||||
|
||||
static QemuOptsList *vm_config_groups[32];
|
||||
+static QemuOptsList *drive_config_groups[4];
|
||||
|
||||
static QemuOptsList *find_list(QemuOptsList **lists, const char *group,
|
||||
Error **errp)
|
||||
@@ -77,6 +78,59 @@ static CommandLineParameterInfoList *query_option_descs(const QemuOptDesc *desc)
|
||||
return param_list;
|
||||
}
|
||||
|
||||
+/* remove repeated entry from the info list */
|
||||
+static void cleanup_infolist(CommandLineParameterInfoList *head)
|
||||
+{
|
||||
+ CommandLineParameterInfoList *pre_entry, *cur, *del_entry;
|
||||
+
|
||||
+ cur = head;
|
||||
+ while (cur->next) {
|
||||
+ pre_entry = head;
|
||||
+ while (pre_entry != cur->next) {
|
||||
+ if (!strcmp(pre_entry->value->name, cur->next->value->name)) {
|
||||
+ del_entry = cur->next;
|
||||
+ cur->next = cur->next->next;
|
||||
+ g_free(del_entry);
|
||||
+ break;
|
||||
+ }
|
||||
+ pre_entry = pre_entry->next;
|
||||
+ }
|
||||
+ cur = cur->next;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+/* merge the description items of two parameter infolists */
|
||||
+static void connect_infolist(CommandLineParameterInfoList *head,
|
||||
+ CommandLineParameterInfoList *new)
|
||||
+{
|
||||
+ CommandLineParameterInfoList *cur;
|
||||
+
|
||||
+ cur = head;
|
||||
+ while (cur->next) {
|
||||
+ cur = cur->next;
|
||||
+ }
|
||||
+ cur->next = new;
|
||||
+}
|
||||
+
|
||||
+/* access all the local QemuOptsLists for drive option */
|
||||
+static CommandLineParameterInfoList *get_drive_infolist(void)
|
||||
+{
|
||||
+ CommandLineParameterInfoList *head = NULL, *cur;
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; drive_config_groups[i] != NULL; i++) {
|
||||
+ if (!head) {
|
||||
+ head = query_option_descs(drive_config_groups[i]->desc);
|
||||
+ } else {
|
||||
+ cur = query_option_descs(drive_config_groups[i]->desc);
|
||||
+ connect_infolist(head, cur);
|
||||
+ }
|
||||
+ }
|
||||
+ cleanup_infolist(head);
|
||||
+
|
||||
+ return head;
|
||||
+}
|
||||
+
|
||||
CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
|
||||
const char *option,
|
||||
Error **errp)
|
||||
@@ -89,7 +143,12 @@ CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option,
|
||||
if (!has_option || !strcmp(option, vm_config_groups[i]->name)) {
|
||||
info = g_malloc0(sizeof(*info));
|
||||
info->option = g_strdup(vm_config_groups[i]->name);
|
||||
- info->parameters = query_option_descs(vm_config_groups[i]->desc);
|
||||
+ if (!strcmp("drive", vm_config_groups[i]->name)) {
|
||||
+ info->parameters = get_drive_infolist();
|
||||
+ } else {
|
||||
+ info->parameters =
|
||||
+ query_option_descs(vm_config_groups[i]->desc);
|
||||
+ }
|
||||
entry = g_malloc0(sizeof(*entry));
|
||||
entry->value = info;
|
||||
entry->next = conf_list;
|
||||
@@ -109,6 +168,22 @@ QemuOptsList *qemu_find_opts_err(const char *group, Error **errp)
|
||||
return find_list(vm_config_groups, group, errp);
|
||||
}
|
||||
|
||||
+void qemu_add_drive_opts(QemuOptsList *list)
|
||||
+{
|
||||
+ int entries, i;
|
||||
+
|
||||
+ entries = ARRAY_SIZE(drive_config_groups);
|
||||
+ entries--; /* keep list NULL terminated */
|
||||
+ for (i = 0; i < entries; i++) {
|
||||
+ if (drive_config_groups[i] == NULL) {
|
||||
+ drive_config_groups[i] = list;
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ fprintf(stderr, "ran out of space in drive_config_groups");
|
||||
+ abort();
|
||||
+}
|
||||
+
|
||||
void qemu_add_opts(QemuOptsList *list)
|
||||
{
|
||||
int entries, i;
|
||||
diff --git a/vl.c b/vl.c
|
||||
index 2160933..63ecf16 100644
|
||||
--- a/vl.c
|
||||
+++ b/vl.c
|
||||
@@ -2942,6 +2942,8 @@ int main(int argc, char **argv, char **envp)
|
||||
module_call_init(MODULE_INIT_QOM);
|
||||
|
||||
qemu_add_opts(&qemu_drive_opts);
|
||||
+ qemu_add_drive_opts(&qemu_common_drive_opts);
|
||||
+ qemu_add_drive_opts(&qemu_drive_opts);
|
||||
qemu_add_opts(&qemu_chardev_opts);
|
||||
qemu_add_opts(&qemu_device_opts);
|
||||
qemu_add_opts(&qemu_netdev_opts);
|
|
@ -1,28 +0,0 @@
|
|||
From aafda3de0ce3589fa69472bd4a1782c65c8c7ade Mon Sep 17 00:00:00 2001
|
||||
From: Eduardo Otubo <otubo@linux.vnet.ibm.com>
|
||||
Date: Tue, 24 Sep 2013 14:50:44 -0300
|
||||
Subject: [PATCH] seccomp: fine tuning whitelist by adding times()
|
||||
|
||||
This was causing Qemu process to hang when using -sandbox on as
|
||||
discribed on RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1004175
|
||||
|
||||
Signed-off-by: Eduardo Otubo <otubo@linux.vnet.ibm.com>
|
||||
Tested-by: Paul Moore <pmoore@redhat.com>
|
||||
Acked-by: Paul Moore <pmoore@redhat.com>
|
||||
(cherry picked from commit c236f4519c9838801798f3705c17dce9ab9e3b9d)
|
||||
---
|
||||
qemu-seccomp.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/qemu-seccomp.c b/qemu-seccomp.c
|
||||
index 37d38f8..69cee44 100644
|
||||
--- a/qemu-seccomp.c
|
||||
+++ b/qemu-seccomp.c
|
||||
@@ -90,6 +90,7 @@ static const struct QemuSeccompSyscall seccomp_whitelist[] = {
|
||||
{ SCMP_SYS(getuid), 245 },
|
||||
{ SCMP_SYS(geteuid), 245 },
|
||||
{ SCMP_SYS(timer_create), 245 },
|
||||
+ { SCMP_SYS(times), 245 },
|
||||
{ SCMP_SYS(exit), 245 },
|
||||
{ SCMP_SYS(clock_gettime), 245 },
|
||||
{ SCMP_SYS(time), 245 },
|
|
@ -1,42 +0,0 @@
|
|||
From fc585c217f4f999d01695385b9f5bf194a117600 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Moore <pmoore@redhat.com>
|
||||
Date: Thu, 21 Nov 2013 10:40:15 -0500
|
||||
Subject: [PATCH] seccomp: add kill() to the syscall whitelist
|
||||
|
||||
The kill() syscall is triggered with the following command:
|
||||
|
||||
# qemu -sandbox on -monitor stdio \
|
||||
-device intel-hda -device hda-duplex -vnc :0
|
||||
|
||||
The resulting syslog/audit message:
|
||||
|
||||
# ausearch -m SECCOMP
|
||||
----
|
||||
time->Wed Nov 20 09:52:08 2013
|
||||
type=SECCOMP msg=audit(1384912328.482:6656): auid=0 uid=0 gid=0 ses=854
|
||||
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 pid=12087
|
||||
comm="qemu-kvm" sig=31 syscall=62 compat=0 ip=0x7f7a1d2abc67 code=0x0
|
||||
# scmp_sys_resolver 62
|
||||
kill
|
||||
|
||||
Reported-by: CongLi <coli@redhat.com>
|
||||
Tested-by: CongLi <coli@redhat.com>
|
||||
Signed-off-by: Paul Moore <pmoore@redhat.com>
|
||||
Acked-by: Eduardo Otubo <otubo@linux.vnet.ibm.com>
|
||||
(cherry picked from commit e9eecb5bf82a71564bf018fcbbfc6cda19cab6c2)
|
||||
---
|
||||
qemu-seccomp.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/qemu-seccomp.c b/qemu-seccomp.c
|
||||
index 69cee44..cf07869 100644
|
||||
--- a/qemu-seccomp.c
|
||||
+++ b/qemu-seccomp.c
|
||||
@@ -114,6 +114,7 @@ static const struct QemuSeccompSyscall seccomp_whitelist[] = {
|
||||
{ SCMP_SYS(write), 244 },
|
||||
{ SCMP_SYS(fcntl), 243 },
|
||||
{ SCMP_SYS(tgkill), 242 },
|
||||
+ { SCMP_SYS(kill), 242 },
|
||||
{ SCMP_SYS(rt_sigaction), 242 },
|
||||
{ SCMP_SYS(pipe2), 242 },
|
||||
{ SCMP_SYS(munmap), 242 },
|
|
@ -1,33 +0,0 @@
|
|||
From f7944b361fe5220d19680234db250abaad7ce909 Mon Sep 17 00:00:00 2001
|
||||
From: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Date: Mon, 2 Dec 2013 11:17:04 +0100
|
||||
Subject: [PATCH] spice: flip streaming video mode to off by default
|
||||
|
||||
Video streaming detection heuristics in spice-server have problems
|
||||
keeping modern desktop animations (as done by gnome shell) and real
|
||||
video playback apart. This leads to jpeg compression artefacts on
|
||||
your desktop, due to spice using mjpeg to send what it thinks is
|
||||
a video stream.
|
||||
|
||||
Turn off video detection by default to avoid these artifacts.
|
||||
|
||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Reviewed-by: Alon Levy <alevy@redhat.com>
|
||||
(cherry picked from commit f1d3e586f069e17f83b669842bc02d60d509daca)
|
||||
---
|
||||
ui/spice-core.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/ui/spice-core.c b/ui/spice-core.c
|
||||
index bd7a248..3960fa0 100644
|
||||
--- a/ui/spice-core.c
|
||||
+++ b/ui/spice-core.c
|
||||
@@ -778,6 +778,8 @@ void qemu_spice_init(void)
|
||||
if (str) {
|
||||
int streaming_video = parse_stream_video(str);
|
||||
spice_server_set_streaming_video(spice_server, streaming_video);
|
||||
+ } else {
|
||||
+ spice_server_set_streaming_video(spice_server, SPICE_STREAM_VIDEO_OFF);
|
||||
}
|
||||
|
||||
spice_server_set_agent_mouse
|
|
@ -1,59 +0,0 @@
|
|||
From f89c33c8092d7cc96d9937ea826c2ac8374779c8 Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Thu, 28 Nov 2013 11:01:13 +0100
|
||||
Subject: [PATCH] scsi-bus: fix transfer length and direction for VERIFY
|
||||
command
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The amount of bytes to transfer depends on the BYTCHK field.
|
||||
If any data is transferred, it is sent to the device.
|
||||
|
||||
Cc: qemu-stable@nongnu.org
|
||||
Tested-by: Hervé Poussineau <hpoussin@reactos.org>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
(cherry picked from commit d12ad44cc4cc9142179e64295608611f118b8ad8)
|
||||
---
|
||||
hw/scsi/scsi-bus.c | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
|
||||
index ad26c25..c62bfae 100644
|
||||
--- a/hw/scsi/scsi-bus.c
|
||||
+++ b/hw/scsi/scsi-bus.c
|
||||
@@ -885,7 +885,6 @@ static int scsi_req_length(SCSICommand *cmd, SCSIDevice *dev, uint8_t *buf)
|
||||
case RELEASE:
|
||||
case ERASE:
|
||||
case ALLOW_MEDIUM_REMOVAL:
|
||||
- case VERIFY_10:
|
||||
case SEEK_10:
|
||||
case SYNCHRONIZE_CACHE:
|
||||
case SYNCHRONIZE_CACHE_16:
|
||||
@@ -902,6 +901,16 @@ static int scsi_req_length(SCSICommand *cmd, SCSIDevice *dev, uint8_t *buf)
|
||||
case ALLOW_OVERWRITE:
|
||||
cmd->xfer = 0;
|
||||
break;
|
||||
+ case VERIFY_10:
|
||||
+ case VERIFY_12:
|
||||
+ case VERIFY_16:
|
||||
+ if ((buf[1] & 2) == 0) {
|
||||
+ cmd->xfer = 0;
|
||||
+ } else if ((buf[1] & 4) == 1) {
|
||||
+ cmd->xfer = 1;
|
||||
+ }
|
||||
+ cmd->xfer *= dev->blocksize;
|
||||
+ break;
|
||||
case MODE_SENSE:
|
||||
break;
|
||||
case WRITE_SAME_10:
|
||||
@@ -1099,6 +1108,9 @@ static void scsi_cmd_xfer_mode(SCSICommand *cmd)
|
||||
case WRITE_VERIFY_12:
|
||||
case WRITE_16:
|
||||
case WRITE_VERIFY_16:
|
||||
+ case VERIFY_10:
|
||||
+ case VERIFY_12:
|
||||
+ case VERIFY_16:
|
||||
case COPY:
|
||||
case COPY_VERIFY:
|
||||
case COMPARE:
|
|
@ -1,90 +0,0 @@
|
|||
From 1de35d38fb04166c0b7f6b87f7e38ae8c73651bb Mon Sep 17 00:00:00 2001
|
||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Thu, 28 Nov 2013 11:18:56 +0100
|
||||
Subject: [PATCH] scsi-disk: fix VERIFY emulation
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
VERIFY emulation was completely botched (and remained botched through
|
||||
all the refactorings). The command must be emulated both in check-medium
|
||||
mode (BYTCHK=00, which we implement by doing nothing) and in check-bytes
|
||||
mode (which we do not implement yet). Unlike WRITE AND VERIFY (which we
|
||||
treat simply as WRITE with FUA bit set), VERIFY cannot be handled like
|
||||
READ. In fact the device is _receiving_ data for VERIFY, not _sending_
|
||||
it like READ.
|
||||
|
||||
Cc: qemu-stable@nongnu.org
|
||||
Tested-by: Hervé Poussineau <hpoussin@reactos.org>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
(cherry picked from commit d97e7730816094a71cd1f19a56d7a73f77cdbf96)
|
||||
|
||||
Conflicts:
|
||||
hw/scsi/scsi-disk.c
|
||||
---
|
||||
hw/scsi/scsi-disk.c | 26 +++++++++++++++++++-------
|
||||
1 file changed, 19 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
|
||||
index 74e6a14..1fd1c26 100644
|
||||
--- a/hw/scsi/scsi-disk.c
|
||||
+++ b/hw/scsi/scsi-disk.c
|
||||
@@ -1597,6 +1597,14 @@ static void scsi_disk_emulate_write_data(SCSIRequest *req)
|
||||
scsi_disk_emulate_unmap(r, r->iov.iov_base);
|
||||
break;
|
||||
|
||||
+ case VERIFY_10:
|
||||
+ case VERIFY_12:
|
||||
+ case VERIFY_16:
|
||||
+ if (r->req.status == -1) {
|
||||
+ scsi_check_condition(r, SENSE_CODE(INVALID_FIELD));
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
@@ -1837,6 +1845,14 @@ static int32_t scsi_disk_emulate_command(SCSIRequest *req, uint8_t *buf)
|
||||
case UNMAP:
|
||||
DPRINTF("Unmap (len %lu)\n", (long)r->req.cmd.xfer);
|
||||
break;
|
||||
+ case VERIFY_10:
|
||||
+ case VERIFY_12:
|
||||
+ case VERIFY_16:
|
||||
+ DPRINTF("Verify (bytchk %lu)\n", (r->req.buf[1] >> 1) & 3);
|
||||
+ if (req->cmd.buf[1] & 6) {
|
||||
+ goto illegal_request;
|
||||
+ }
|
||||
+ break;
|
||||
case WRITE_SAME_10:
|
||||
case WRITE_SAME_16:
|
||||
nb_sectors = scsi_data_cdb_length(r->req.cmd.buf);
|
||||
@@ -1936,10 +1952,6 @@ static int32_t scsi_disk_dma_command(SCSIRequest *req, uint8_t *buf)
|
||||
scsi_check_condition(r, SENSE_CODE(WRITE_PROTECTED));
|
||||
return 0;
|
||||
}
|
||||
- /* fallthrough */
|
||||
- case VERIFY_10:
|
||||
- case VERIFY_12:
|
||||
- case VERIFY_16:
|
||||
DPRINTF("Write %s(sector %" PRId64 ", count %u)\n",
|
||||
(command & 0xe) == 0xe ? "And Verify " : "",
|
||||
r->req.cmd.lba, len);
|
||||
@@ -2207,14 +2219,14 @@ static const SCSIReqOps *const scsi_disk_reqops_dispatch[256] = {
|
||||
[UNMAP] = &scsi_disk_emulate_reqops,
|
||||
[WRITE_SAME_10] = &scsi_disk_emulate_reqops,
|
||||
[WRITE_SAME_16] = &scsi_disk_emulate_reqops,
|
||||
+ [VERIFY_10] = &scsi_disk_emulate_reqops,
|
||||
+ [VERIFY_12] = &scsi_disk_emulate_reqops,
|
||||
+ [VERIFY_16] = &scsi_disk_emulate_reqops,
|
||||
|
||||
[READ_6] = &scsi_disk_dma_reqops,
|
||||
[READ_10] = &scsi_disk_dma_reqops,
|
||||
[READ_12] = &scsi_disk_dma_reqops,
|
||||
[READ_16] = &scsi_disk_dma_reqops,
|
||||
- [VERIFY_10] = &scsi_disk_dma_reqops,
|
||||
- [VERIFY_12] = &scsi_disk_dma_reqops,
|
||||
- [VERIFY_16] = &scsi_disk_dma_reqops,
|
||||
[WRITE_6] = &scsi_disk_dma_reqops,
|
||||
[WRITE_10] = &scsi_disk_dma_reqops,
|
||||
[WRITE_12] = &scsi_disk_dma_reqops,
|
|
@ -1,47 +0,0 @@
|
|||
From b96534d01807de76afa262568e156156c0a6fdd6 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Lieven <pl@kamp.de>
|
||||
Date: Thu, 24 Oct 2013 09:21:29 +0200
|
||||
Subject: [PATCH] migration: drop MADVISE_DONT_NEED for incoming zero pages
|
||||
|
||||
The madvise for zeroed out pages was introduced when every transferred
|
||||
zero page was memset to zero and thus allocated. Since commit
|
||||
211ea740 we check for zeroness of a target page before we memset
|
||||
it to zero. Additionally we memmap target memory so it is essentially
|
||||
zero initialized (except for e.g. option roms and bios which are loaded
|
||||
into target memory although they shouldn't).
|
||||
|
||||
It was reported recently that this madvise causes a performance degradation
|
||||
in some situations. As the madvise should only be called rarely and if it's called
|
||||
it is likely on a busy page (it was non-zero and changed to zero during migration)
|
||||
drop it completely.
|
||||
|
||||
Reported-By: Zhang Haoyu <haoyu.zhang@huawei.com>
|
||||
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Signed-off-by: Peter Lieven <pl@kamp.de>
|
||||
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
||||
(cherry picked from commit fc1c4a5d32e15a4c40c47945da85ef9c1e0c1b54)
|
||||
|
||||
Conflicts:
|
||||
arch_init.c
|
||||
---
|
||||
arch_init.c | 7 -------
|
||||
1 file changed, 7 deletions(-)
|
||||
|
||||
diff --git a/arch_init.c b/arch_init.c
|
||||
index 68a7ab7..23151b3 100644
|
||||
--- a/arch_init.c
|
||||
+++ b/arch_init.c
|
||||
@@ -845,13 +845,6 @@ void ram_handle_compressed(void *host, uint8_t ch, uint64_t size)
|
||||
{
|
||||
if (ch != 0 || !is_zero_page(host)) {
|
||||
memset(host, ch, size);
|
||||
-#ifndef _WIN32
|
||||
- if (ch == 0 &&
|
||||
- (!kvm_enabled() || kvm_has_sync_mmu()) &&
|
||||
- getpagesize() <= TARGET_PAGE_SIZE) {
|
||||
- qemu_madvise(host, TARGET_PAGE_SIZE, QEMU_MADV_DONTNEED);
|
||||
- }
|
||||
-#endif
|
||||
}
|
||||
}
|
||||
|
72
qemu.spec
72
qemu.spec
|
@ -138,8 +138,8 @@
|
|||
|
||||
Summary: QEMU is a FAST! processor emulator
|
||||
Name: qemu
|
||||
Version: 1.6.1
|
||||
Release: 3%{?dist}
|
||||
Version: 1.6.2
|
||||
Release: 1%{?dist}
|
||||
Epoch: 2
|
||||
License: GPLv2+ and LGPLv2+ and BSD
|
||||
Group: Development/Tools
|
||||
|
@ -211,26 +211,30 @@ Patch0102: 0102-qcow2-Discard-VM-state-in-active-L1-after-creating-s.patch
|
|||
# Fix 9pfs xattrs on kernel 3.11 (bz #1013676)
|
||||
# Patch posted upstream
|
||||
Patch0103: 0103-hw-9pfs-Fix-errno-value-for-xattr-functions.patch
|
||||
# Fix migration from qemu <= 1.5
|
||||
# Patch posted upstream
|
||||
Patch0104: 0104-Fix-pc-migration-from-qemu-1.5.patch
|
||||
# Reduce CPU usage when audio is playing (bz #1017644)
|
||||
Patch0105: 0105-audio-honor-QEMU_AUDIO_TIMER_PERIOD-instead-of-wakin.patch
|
||||
# Fix drive discard options via libvirt (bz #1029953)
|
||||
# Patch queued upstream
|
||||
Patch0106: 0106-qmp-access-the-local-QemuOptsLists-for-drive-option.patch
|
||||
Patch0104: 0104-qmp-access-the-local-QemuOptsLists-for-drive-option.patch
|
||||
# Fix process exit with -sandbox on (bz #1027421)
|
||||
Patch0107: 0107-seccomp-fine-tuning-whitelist-by-adding-times.patch
|
||||
# Add kill() to seccomp whitelist, fix AC97 with -sandbox on (bz
|
||||
# #1043521)
|
||||
Patch0108: 0108-seccomp-add-kill-to-the-syscall-whitelist.patch
|
||||
Patch0105: 0105-seccomp-fine-tuning-whitelist-by-adding-times.patch
|
||||
# Changing streaming mode default to off for spice (bz #1038336)
|
||||
Patch0109: 0109-spice-flip-streaming-video-mode-to-off-by-default.patch
|
||||
Patch0106: 0106-spice-flip-streaming-video-mode-to-off-by-default.patch
|
||||
# Fix guest scsi verify command (bz #1001617)
|
||||
Patch0110: 0110-scsi-bus-fix-transfer-length-and-direction-for-VERIF.patch
|
||||
Patch0111: 0111-scsi-disk-fix-VERIFY-emulation.patch
|
||||
Patch0107: 0107-scsi-bus-fix-transfer-length-and-direction-for-VERIF.patch
|
||||
Patch0108: 0108-scsi-disk-fix-VERIFY-emulation.patch
|
||||
# Fix performance regression after save/restore (bz #917723)
|
||||
Patch0112: 0112-migration-drop-MADVISE_DONT_NEED-for-incoming-zero-p.patch
|
||||
Patch0109: 0109-migration-drop-MADVISE_DONT_NEED-for-incoming-zero-p.patch
|
||||
# Fix bogus libcacard dep on gluster (bz #987441)
|
||||
Patch0110: 0110-libcacard-Don-t-link-with-all-libraries-QEMU-links-t.patch
|
||||
# Fix mouse with -display gtk -vga qxl (bz #1051724)
|
||||
Patch0111: 0111-gtk-Fix-mouse-warping-with-gtk3.patch
|
||||
Patch0112: 0112-gtk-Don-t-warp-absolute-pointer.patch
|
||||
# Change gtk quit accelerator to ctrl+shift+q (bz #1062393)
|
||||
# Patches queued for 2.1
|
||||
Patch0113: 0113-Change-gtk-quit-accelerator-to-ctrl-shift-q-bz-10623.patch
|
||||
# Fix crash during virtio-scsi hotplug (bz #1051611)
|
||||
Patch0114: 0114-scsi-Assign-cancel_io-vector-for-scsi_disk_emulate_o.patch
|
||||
Patch0115: 0115-virtio-scsi-Cleanup-of-I-Os-that-never-started.patch
|
||||
Patch0116: 0116-virtio-scsi-Prevent-assertion-on-missed-events.patch
|
||||
|
||||
BuildRequires: SDL-devel
|
||||
BuildRequires: zlib-devel
|
||||
|
@ -774,26 +778,30 @@ CAC emulation development files.
|
|||
# Fix 9pfs xattrs on kernel 3.11 (bz #1013676)
|
||||
# Patch posted upstream
|
||||
%patch0103 -p1
|
||||
# Fix migration from qemu <= 1.5
|
||||
# Patch posted upstream
|
||||
%patch0104 -p1
|
||||
# Reduce CPU usage when audio is playing (bz #1017644)
|
||||
%patch0105 -p1
|
||||
# Fix drive discard options via libvirt (bz #1029953)
|
||||
# Patch queued upstream
|
||||
%patch0106 -p1
|
||||
%patch0104 -p1
|
||||
# Fix process exit with -sandbox on (bz #1027421)
|
||||
%patch0107 -p1
|
||||
# Add kill() to seccomp whitelist, fix AC97 with -sandbox on (bz
|
||||
# #1043521)
|
||||
%patch0108 -p1
|
||||
%patch0105 -p1
|
||||
# Changing streaming mode default to off for spice (bz #1038336)
|
||||
%patch0109 -p1
|
||||
%patch0106 -p1
|
||||
# Fix guest scsi verify command (bz #1001617)
|
||||
%patch0110 -p1
|
||||
%patch0111 -p1
|
||||
%patch0107 -p1
|
||||
%patch0108 -p1
|
||||
# Fix performance regression after save/restore (bz #917723)
|
||||
%patch0109 -p1
|
||||
# Fix bogus libcacard dep on gluster (bz #987441)
|
||||
%patch0110 -p1
|
||||
# Fix mouse with -display gtk -vga qxl (bz #1051724)
|
||||
%patch0111 -p1
|
||||
%patch0112 -p1
|
||||
# Change gtk quit accelerator to ctrl+shift+q (bz #1062393)
|
||||
# Patches queued for 2.1
|
||||
%patch0113 -p1
|
||||
# Fix crash during virtio-scsi hotplug (bz #1051611)
|
||||
%patch0114 -p1
|
||||
%patch0115 -p1
|
||||
%patch0116 -p1
|
||||
|
||||
|
||||
%build
|
||||
|
@ -1501,6 +1509,12 @@ getent passwd qemu >/dev/null || \
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Mar 19 2014 Cole Robinson <crobinso@redhat.com> - 2:1.6.2-1
|
||||
- Fix bogus libcacard dep on gluster (bz #987441)
|
||||
- Fix mouse with -display gtk -vga qxl (bz #1051724)
|
||||
- Change gtk quit accelerator to ctrl+shift+q (bz #1062393)
|
||||
- Fix crash during virtio-scsi hotplug (bz #1051611)
|
||||
|
||||
* Wed Dec 18 2013 Cole Robinson <crobinso@redhat.com> - 2:1.6.1-3
|
||||
- Add kill() to seccomp whitelist, fix AC97 with -sandbox on (bz #1043521)
|
||||
- Changing streaming mode default to off for spice (bz #1038336)
|
||||
|
|
Loading…
Reference in New Issue