- update to latest stable release: 1.0.1. For changes see:
http://wiki.qemu.org/ChangeLog/1.0 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=53
This commit is contained in:
parent
214b22079e
commit
24b70ccda8
@ -1,72 +0,0 @@
|
|||||||
From 4fddaa4befeb3ddb1c14d9b2c882474ba4166940 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Graf <agraf@suse.de>
|
|
||||||
Date: Mon, 12 Dec 2011 23:16:43 +0100
|
|
||||||
Subject: [PATCH] PPC: Fix linker scripts on ppc hosts
|
|
||||||
|
|
||||||
When compiling qemu statically with multilib on PPC, we hit the
|
|
||||||
same issue that commit 845f2c2812d9ed24b36c02a3d06ee83aeafe8b49
|
|
||||||
is fixing. Do the same here.
|
|
||||||
|
|
||||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
||||||
---
|
|
||||||
ppc.ld | 16 ++++++++++++++--
|
|
||||||
ppc64.ld | 16 ++++++++++++++--
|
|
||||||
2 files changed, 28 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/ppc.ld b/ppc.ld
|
|
||||||
index 69aa3f2..2a0dcad 100644
|
|
||||||
--- a/ppc.ld
|
|
||||||
+++ b/ppc.ld
|
|
||||||
@@ -49,8 +49,20 @@ SECTIONS
|
|
||||||
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
|
|
||||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
- .rel.plt : { *(.rel.plt) }
|
|
||||||
- .rela.plt : { *(.rela.plt) }
|
|
||||||
+ .rel.plt :
|
|
||||||
+ {
|
|
||||||
+ *(.rel.plt)
|
|
||||||
+ PROVIDE (__rel_iplt_start = .);
|
|
||||||
+ *(.rel.iplt)
|
|
||||||
+ PROVIDE (__rel_iplt_end = .);
|
|
||||||
+ }
|
|
||||||
+ .rela.plt :
|
|
||||||
+ {
|
|
||||||
+ *(.rela.plt)
|
|
||||||
+ PROVIDE (__rela_iplt_start = .);
|
|
||||||
+ *(.rela.iplt)
|
|
||||||
+ PROVIDE (__rela_iplt_end = .);
|
|
||||||
+ }
|
|
||||||
.init :
|
|
||||||
{
|
|
||||||
KEEP (*(.init))
|
|
||||||
diff --git a/ppc64.ld b/ppc64.ld
|
|
||||||
index 0a7c0dd..e2dafa0 100644
|
|
||||||
--- a/ppc64.ld
|
|
||||||
+++ b/ppc64.ld
|
|
||||||
@@ -54,8 +54,20 @@ SECTIONS
|
|
||||||
*(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
|
|
||||||
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
|
|
||||||
}
|
|
||||||
- .rel.plt : { *(.rel.plt) }
|
|
||||||
- .rela.plt : { *(.rela.plt) }
|
|
||||||
+ .rel.plt :
|
|
||||||
+ {
|
|
||||||
+ *(.rel.plt)
|
|
||||||
+ PROVIDE (__rel_iplt_start = .);
|
|
||||||
+ *(.rel.iplt)
|
|
||||||
+ PROVIDE (__rel_iplt_end = .);
|
|
||||||
+ }
|
|
||||||
+ .rela.plt :
|
|
||||||
+ {
|
|
||||||
+ *(.rela.plt)
|
|
||||||
+ PROVIDE (__rela_iplt_start = .);
|
|
||||||
+ *(.rela.iplt)
|
|
||||||
+ PROVIDE (__rela_iplt_end = .);
|
|
||||||
+ }
|
|
||||||
.rela.tocbss : { *(.rela.tocbss) }
|
|
||||||
.init :
|
|
||||||
{
|
|
||||||
--
|
|
||||||
1.6.0.2
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From 2b0fc5def570362c27ce526b8a08529a6ae22362 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Graf <agraf@suse.de>
|
|
||||||
Date: Fri, 18 Nov 2011 16:41:59 +0100
|
|
||||||
Subject: [PATCH] console: Fix segfault on screendump without VGA adapter
|
|
||||||
|
|
||||||
When trying to create a screen dump without having any VGA adapter
|
|
||||||
inside the guest, QEMU segfaults.
|
|
||||||
|
|
||||||
This is because it's trying to switch back to the "previous" screen
|
|
||||||
it was on before dumping the VGA screen. Unfortunately, in my case
|
|
||||||
there simply is no previous screen so it accesses a NULL pointer.
|
|
||||||
|
|
||||||
Fix it by checking if previous_active_console is actually available.
|
|
||||||
|
|
||||||
This is 1.0 material.
|
|
||||||
|
|
||||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
||||||
---
|
|
||||||
console.c | 4 +++-
|
|
||||||
1 files changed, 3 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/console.c b/console.c
|
|
||||||
index f6fe441..ed6a653 100644
|
|
||||||
--- a/console.c
|
|
||||||
+++ b/console.c
|
|
||||||
@@ -186,7 +186,9 @@ void vga_hw_screen_dump(const char *filename)
|
|
||||||
consoles[0]->hw_screen_dump(consoles[0]->hw, filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
- console_select(previous_active_console->index);
|
|
||||||
+ if (previous_active_console) {
|
|
||||||
+ console_select(previous_active_console->index);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
void vga_hw_text_update(console_ch_t *chardata)
|
|
||||||
--
|
|
||||||
1.6.0.2
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
From 632e46dfa29a19ba656a5580b610fda0003cf3b0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Gibson <david@gibson.dropbear.id.au>
|
|
||||||
Date: Mon, 28 Nov 2011 20:21:39 +0000
|
|
||||||
Subject: [PATCH] pseries: Fix array overrun bug in PCI code
|
|
||||||
|
|
||||||
spapr_populate_pci_devices() containd a loop with PCI_NUM_REGIONS (7)
|
|
||||||
iterations. However this overruns the 'bars' global array, which only has
|
|
||||||
6 elements. In fact we only want to run this loop for things listed in the
|
|
||||||
bars array, so this patch corrects the loop bounds to reflect that.
|
|
||||||
|
|
||||||
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
|
||||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
||||||
(cherry picked from commit 135712de61dfa22368e98914d65b8b0860ec8505)
|
|
||||||
---
|
|
||||||
hw/spapr_pci.c | 2 +-
|
|
||||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
|
|
||||||
index 7162588..9b6a032 100644
|
|
||||||
--- a/hw/spapr_pci.c
|
|
||||||
+++ b/hw/spapr_pci.c
|
|
||||||
@@ -454,7 +454,7 @@ int spapr_populate_pci_devices(sPAPRPHBState *phb,
|
|
||||||
reg[0].size = 0;
|
|
||||||
|
|
||||||
n = 0;
|
|
||||||
- for (i = 0; i < PCI_NUM_REGIONS; ++i) {
|
|
||||||
+ for (i = 0; i < ARRAY_SIZE(bars); ++i) {
|
|
||||||
if (0 == dev->io_regions[i].size) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.6.0.2
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
|||||||
From 0ae672e84c7f722aebdcca35f1573e7b6f83fddd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Liu Yu-B13201 <Yu.Liu@freescale.com>
|
|
||||||
Date: Mon, 28 Nov 2011 20:41:18 +0000
|
|
||||||
Subject: [PATCH] kvm-ppc: halt secondary cpus when guest reset
|
|
||||||
|
|
||||||
When guest reset, we need to halt secondary cpus until guest kick them.
|
|
||||||
This already works for tcg. The patch add the support for kvm.
|
|
||||||
|
|
||||||
Signed-off-by: Liu Yu <yu.liu@freescale.com>
|
|
||||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
||||||
[agraf: remove in-kernel irqchip code]
|
|
||||||
(cherry picked from commit 157feeadbaec09fe4dca539a24f6f6d327d6eeb6)
|
|
||||||
---
|
|
||||||
hw/ppce500_spin.c | 1 +
|
|
||||||
target-ppc/kvm.c | 2 +-
|
|
||||||
2 files changed, 2 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/ppce500_spin.c b/hw/ppce500_spin.c
|
|
||||||
index cccd940..2b52728 100644
|
|
||||||
--- a/hw/ppce500_spin.c
|
|
||||||
+++ b/hw/ppce500_spin.c
|
|
||||||
@@ -112,6 +112,7 @@ static void spin_kick(void *data)
|
|
||||||
|
|
||||||
env->halted = 0;
|
|
||||||
env->exception_index = -1;
|
|
||||||
+ env->stopped = 0;
|
|
||||||
qemu_cpu_kick(env);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
|
|
||||||
index 923677c..9541626 100644
|
|
||||||
--- a/target-ppc/kvm.c
|
|
||||||
+++ b/target-ppc/kvm.c
|
|
||||||
@@ -504,7 +504,7 @@ void kvm_arch_post_run(CPUState *env, struct kvm_run *run)
|
|
||||||
|
|
||||||
int kvm_arch_process_async_events(CPUState *env)
|
|
||||||
{
|
|
||||||
- return 0;
|
|
||||||
+ return env->halted;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int kvmppc_handle_halt(CPUState *env)
|
|
||||||
--
|
|
||||||
1.6.0.2
|
|
||||||
|
|
@ -1,101 +0,0 @@
|
|||||||
From 7fe6b9bf81290f708919ffb6065daa16e5dbe7e3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Gibson <david@gibson.dropbear.id.au>
|
|
||||||
Date: Mon, 12 Dec 2011 18:24:32 +0000
|
|
||||||
Subject: [PATCH] pseries: Emit device tree nodes in reg order
|
|
||||||
|
|
||||||
Although in theory the device tree has no inherent ordering, in practice
|
|
||||||
the order of nodes in the device tree does effect the order that devices
|
|
||||||
are detected by software.
|
|
||||||
|
|
||||||
Currently the ordering is determined by the order the devices appear on
|
|
||||||
the QEMU command line. Although that does give the user control over the
|
|
||||||
ordering, it is fragile, especially when the user does not generate the
|
|
||||||
command line manually - eg. when using libvirt etc.
|
|
||||||
|
|
||||||
So order the device tree based on the reg value, ie. the address of on
|
|
||||||
the VIO bus of the devices. This gives us a sane and stable ordering.
|
|
||||||
|
|
||||||
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
|
|
||||||
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
|
||||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
||||||
|
|
||||||
[agraf] add braces
|
|
||||||
(cherry picked from commit 05c194384f836240ea4c2da5fa3be43a54bff021)
|
|
||||||
---
|
|
||||||
hw/spapr_vio.c | 50 +++++++++++++++++++++++++++++++++++++++++++++-----
|
|
||||||
1 files changed, 45 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c
|
|
||||||
index 2dcc036..8bd00ca 100644
|
|
||||||
--- a/hw/spapr_vio.c
|
|
||||||
+++ b/hw/spapr_vio.c
|
|
||||||
@@ -749,21 +749,61 @@ static void spapr_vio_register_devices(void)
|
|
||||||
device_init(spapr_vio_register_devices)
|
|
||||||
|
|
||||||
#ifdef CONFIG_FDT
|
|
||||||
+static int compare_reg(const void *p1, const void *p2)
|
|
||||||
+{
|
|
||||||
+ VIOsPAPRDevice const *dev1, *dev2;
|
|
||||||
+
|
|
||||||
+ dev1 = (VIOsPAPRDevice *)*(DeviceState **)p1;
|
|
||||||
+ dev2 = (VIOsPAPRDevice *)*(DeviceState **)p2;
|
|
||||||
+
|
|
||||||
+ if (dev1->reg < dev2->reg) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+ if (dev1->reg == dev2->reg) {
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* dev1->reg > dev2->reg */
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int spapr_populate_vdevice(VIOsPAPRBus *bus, void *fdt)
|
|
||||||
{
|
|
||||||
- DeviceState *qdev;
|
|
||||||
- int ret = 0;
|
|
||||||
+ DeviceState *qdev, **qdevs;
|
|
||||||
+ int i, num, ret = 0;
|
|
||||||
|
|
||||||
+ /* Count qdevs on the bus list */
|
|
||||||
+ num = 0;
|
|
||||||
QTAILQ_FOREACH(qdev, &bus->bus.children, sibling) {
|
|
||||||
- VIOsPAPRDevice *dev = (VIOsPAPRDevice *)qdev;
|
|
||||||
+ num++;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Copy out into an array of pointers */
|
|
||||||
+ qdevs = g_malloc(sizeof(qdev) * num);
|
|
||||||
+ num = 0;
|
|
||||||
+ QTAILQ_FOREACH(qdev, &bus->bus.children, sibling) {
|
|
||||||
+ qdevs[num++] = qdev;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Sort the array */
|
|
||||||
+ qsort(qdevs, num, sizeof(qdev), compare_reg);
|
|
||||||
+
|
|
||||||
+ /* Hack alert. Give the devices to libfdt in reverse order, we happen
|
|
||||||
+ * to know that will mean they are in forward order in the tree. */
|
|
||||||
+ for (i = num - 1; i >= 0; i--) {
|
|
||||||
+ VIOsPAPRDevice *dev = (VIOsPAPRDevice *)(qdevs[i]);
|
|
||||||
|
|
||||||
ret = vio_make_devnode(dev, fdt);
|
|
||||||
|
|
||||||
if (ret < 0) {
|
|
||||||
- return ret;
|
|
||||||
+ goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- return 0;
|
|
||||||
+ ret = 0;
|
|
||||||
+out:
|
|
||||||
+ free(qdevs);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_FDT */
|
|
||||||
--
|
|
||||||
1.6.0.2
|
|
||||||
|
|
@ -1,97 +0,0 @@
|
|||||||
From 2f5760ec14a8f595c347f8a6ad2f8b6adfc20bc2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Gibson <david@gibson.dropbear.id.au>
|
|
||||||
Date: Mon, 12 Dec 2011 18:24:33 +0000
|
|
||||||
Subject: [PATCH] pseries: Add a routine to find a stable "default" vty and use it
|
|
||||||
|
|
||||||
In vty_lookup() we have a special case for supporting early debug in
|
|
||||||
the kernel. This accepts reg == 0 as a special case to mean "any vty".
|
|
||||||
|
|
||||||
We implement this by searching the vtys on the bus and returning the
|
|
||||||
first we find. This means that the vty we chose depends on the order
|
|
||||||
the vtys are specified on the QEMU command line - because that determines
|
|
||||||
the order of the vtys on the bus.
|
|
||||||
|
|
||||||
We'd rather the command line order was irrelevant, so instead return
|
|
||||||
the vty with the lowest reg value. This is still a guess as to what the
|
|
||||||
user really means, but it is at least stable WRT command line ordering.
|
|
||||||
|
|
||||||
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
|
|
||||||
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
|
||||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
||||||
|
|
||||||
[agraf] fix braces
|
|
||||||
(cherry picked from commit 98331f8ad6a3e2cfbb402d72e6be47eac7706251)
|
|
||||||
---
|
|
||||||
hw/spapr_vty.c | 47 ++++++++++++++++++++++++++++++++++++++---------
|
|
||||||
1 files changed, 38 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/spapr_vty.c b/hw/spapr_vty.c
|
|
||||||
index f23cc36..e2fec58 100644
|
|
||||||
--- a/hw/spapr_vty.c
|
|
||||||
+++ b/hw/spapr_vty.c
|
|
||||||
@@ -156,24 +156,53 @@ static VIOsPAPRDeviceInfo spapr_vty = {
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
+static VIOsPAPRDevice *spapr_vty_get_default(VIOsPAPRBus *bus)
|
|
||||||
+{
|
|
||||||
+ VIOsPAPRDevice *sdev, *selected;
|
|
||||||
+ DeviceState *iter;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * To avoid the console bouncing around we want one VTY to be
|
|
||||||
+ * the "default". We haven't really got anything to go on, so
|
|
||||||
+ * arbitrarily choose the one with the lowest reg value.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ selected = NULL;
|
|
||||||
+ QTAILQ_FOREACH(iter, &bus->bus.children, sibling) {
|
|
||||||
+ /* Only look at VTY devices */
|
|
||||||
+ if (iter->info != &spapr_vty.qdev) {
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ sdev = DO_UPCAST(VIOsPAPRDevice, qdev, iter);
|
|
||||||
+
|
|
||||||
+ /* First VTY we've found, so it is selected for now */
|
|
||||||
+ if (!selected) {
|
|
||||||
+ selected = sdev;
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Choose VTY with lowest reg value */
|
|
||||||
+ if (sdev->reg < selected->reg) {
|
|
||||||
+ selected = sdev;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return selected;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static VIOsPAPRDevice *vty_lookup(sPAPREnvironment *spapr, target_ulong reg)
|
|
||||||
{
|
|
||||||
VIOsPAPRDevice *sdev;
|
|
||||||
|
|
||||||
sdev = spapr_vio_find_by_reg(spapr->vio_bus, reg);
|
|
||||||
if (!sdev && reg == 0) {
|
|
||||||
- DeviceState *qdev;
|
|
||||||
-
|
|
||||||
/* Hack for kernel early debug, which always specifies reg==0.
|
|
||||||
- * We search all VIO devices, and grab the first available vty
|
|
||||||
- * device. This attempts to mimic existing PowerVM behaviour
|
|
||||||
+ * We search all VIO devices, and grab the vty with the lowest
|
|
||||||
+ * reg. This attempts to mimic existing PowerVM behaviour
|
|
||||||
* (early debug does work there, despite having no vty with
|
|
||||||
* reg==0. */
|
|
||||||
- QTAILQ_FOREACH(qdev, &spapr->vio_bus->bus.children, sibling) {
|
|
||||||
- if (qdev->info == &spapr_vty.qdev) {
|
|
||||||
- return DO_UPCAST(VIOsPAPRDevice, qdev, qdev);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
+ return spapr_vty_get_default(spapr->vio_bus);
|
|
||||||
}
|
|
||||||
|
|
||||||
return sdev;
|
|
||||||
--
|
|
||||||
1.6.0.2
|
|
||||||
|
|
@ -1,119 +0,0 @@
|
|||||||
From cdec03dc7bb33b4ebf5bd286338e5c50be77a055 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Gibson <david@gibson.dropbear.id.au>
|
|
||||||
Date: Tue, 13 Dec 2011 15:24:34 +1100
|
|
||||||
Subject: [PATCH] pseries: Populate "/chosen/linux,stdout-path" in the FDT
|
|
||||||
|
|
||||||
There is a device tree property "/chosen/linux,stdout-path" which indicates
|
|
||||||
which device should be used as stdout - ie. "the console".
|
|
||||||
|
|
||||||
Currently we don't specify anything, which means both firmware and Linux
|
|
||||||
choose something arbitrarily. Use the routine we added in the last patch
|
|
||||||
to pick a default vty and specify it as stdout.
|
|
||||||
|
|
||||||
Currently SLOF doesn't use the property, but we are hoping to update it
|
|
||||||
to do so.
|
|
||||||
|
|
||||||
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
|
|
||||||
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
|
||||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
||||||
(cherry picked from commit 68f3a94c64bbaaf8c7f2daa70de1b5d87a432f86)
|
|
||||||
---
|
|
||||||
hw/spapr.c | 2 ++
|
|
||||||
hw/spapr_vio.c | 34 ++++++++++++++++++++++++++++++++++
|
|
||||||
hw/spapr_vio.h | 3 +++
|
|
||||||
hw/spapr_vty.c | 2 +-
|
|
||||||
4 files changed, 40 insertions(+), 1 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/spapr.c b/hw/spapr.c
|
|
||||||
index 2b901f1..5a98d86 100644
|
|
||||||
--- a/hw/spapr.c
|
|
||||||
+++ b/hw/spapr.c
|
|
||||||
@@ -351,6 +351,8 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr,
|
|
||||||
fprintf(stderr, "Couldn't set up RTAS device tree properties\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
+ spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
|
|
||||||
+
|
|
||||||
_FDT((fdt_pack(fdt)));
|
|
||||||
|
|
||||||
cpu_physical_memory_write(fdt_addr, fdt, fdt_totalsize(fdt));
|
|
||||||
diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c
|
|
||||||
index 8bd00ca..464fe87 100644
|
|
||||||
--- a/hw/spapr_vio.c
|
|
||||||
+++ b/hw/spapr_vio.c
|
|
||||||
@@ -806,4 +806,38 @@ out:
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+int spapr_populate_chosen_stdout(void *fdt, VIOsPAPRBus *bus)
|
|
||||||
+{
|
|
||||||
+ VIOsPAPRDevice *dev;
|
|
||||||
+ char *name, *path;
|
|
||||||
+ int ret, offset;
|
|
||||||
+
|
|
||||||
+ dev = spapr_vty_get_default(bus);
|
|
||||||
+ if (!dev)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ offset = fdt_path_offset(fdt, "/chosen");
|
|
||||||
+ if (offset < 0) {
|
|
||||||
+ return offset;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ name = vio_format_dev_name(dev);
|
|
||||||
+ if (!name) {
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (asprintf(&path, "/vdevice/%s", name) < 0) {
|
|
||||||
+ path = NULL;
|
|
||||||
+ ret = -ENOMEM;
|
|
||||||
+ goto out;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ret = fdt_setprop_string(fdt, offset, "linux,stdout-path", path);
|
|
||||||
+out:
|
|
||||||
+ free(name);
|
|
||||||
+ free(path);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
#endif /* CONFIG_FDT */
|
|
||||||
diff --git a/hw/spapr_vio.h b/hw/spapr_vio.h
|
|
||||||
index a325a5f..9fcd304 100644
|
|
||||||
--- a/hw/spapr_vio.h
|
|
||||||
+++ b/hw/spapr_vio.h
|
|
||||||
@@ -83,6 +83,7 @@ extern VIOsPAPRBus *spapr_vio_bus_init(void);
|
|
||||||
extern VIOsPAPRDevice *spapr_vio_find_by_reg(VIOsPAPRBus *bus, uint32_t reg);
|
|
||||||
extern void spapr_vio_bus_register_withprop(VIOsPAPRDeviceInfo *info);
|
|
||||||
extern int spapr_populate_vdevice(VIOsPAPRBus *bus, void *fdt);
|
|
||||||
+extern int spapr_populate_chosen_stdout(void *fdt, VIOsPAPRBus *bus);
|
|
||||||
|
|
||||||
extern int spapr_vio_signal(VIOsPAPRDevice *dev, target_ulong mode);
|
|
||||||
|
|
||||||
@@ -108,6 +109,8 @@ void spapr_vty_create(VIOsPAPRBus *bus, uint32_t reg, CharDriverState *chardev);
|
|
||||||
void spapr_vlan_create(VIOsPAPRBus *bus, uint32_t reg, NICInfo *nd);
|
|
||||||
void spapr_vscsi_create(VIOsPAPRBus *bus, uint32_t reg);
|
|
||||||
|
|
||||||
+VIOsPAPRDevice *spapr_vty_get_default(VIOsPAPRBus *bus);
|
|
||||||
+
|
|
||||||
int spapr_tce_set_bypass(uint32_t unit, uint32_t enable);
|
|
||||||
void spapr_vio_quiesce(void);
|
|
||||||
|
|
||||||
diff --git a/hw/spapr_vty.c b/hw/spapr_vty.c
|
|
||||||
index e2fec58..386ccf7 100644
|
|
||||||
--- a/hw/spapr_vty.c
|
|
||||||
+++ b/hw/spapr_vty.c
|
|
||||||
@@ -156,7 +156,7 @@ static VIOsPAPRDeviceInfo spapr_vty = {
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
-static VIOsPAPRDevice *spapr_vty_get_default(VIOsPAPRBus *bus)
|
|
||||||
+VIOsPAPRDevice *spapr_vty_get_default(VIOsPAPRBus *bus)
|
|
||||||
{
|
|
||||||
VIOsPAPRDevice *sdev, *selected;
|
|
||||||
DeviceState *iter;
|
|
||||||
--
|
|
||||||
1.6.0.2
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
From 2335c9428ecb8066cf354bd6f2b21998941e8518 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Anthony Liguori <aliguori@us.ibm.com>
|
|
||||||
Date: Mon, 23 Jan 2012 07:30:43 -0600
|
|
||||||
Subject: [PATCH 53/53] e1000: bounds packet size against buffer size
|
|
||||||
|
|
||||||
Otherwise we can write beyond the buffer and corrupt memory. This is tracked
|
|
||||||
as CVE-2012-0029.
|
|
||||||
|
|
||||||
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
|
||||||
---
|
|
||||||
hw/e1000.c | 3 +++
|
|
||||||
1 files changed, 3 insertions(+), 0 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/e1000.c b/hw/e1000.c
|
|
||||||
index 19ca5bf..22a601a 100644
|
|
||||||
--- a/hw/e1000.c
|
|
||||||
+++ b/hw/e1000.c
|
|
||||||
@@ -466,6 +466,8 @@ process_tx_desc(E1000State *s, struct e1000_tx_desc *dp)
|
|
||||||
bytes = split_size;
|
|
||||||
if (tp->size + bytes > msh)
|
|
||||||
bytes = msh - tp->size;
|
|
||||||
+
|
|
||||||
+ bytes = MIN(sizeof(tp->data) - tp->size, bytes);
|
|
||||||
pci_dma_read(&s->dev, addr, tp->data + tp->size, bytes);
|
|
||||||
if ((sz = tp->size + bytes) >= hdr && tp->size < hdr)
|
|
||||||
memmove(tp->header, tp->data, hdr);
|
|
||||||
@@ -481,6 +483,7 @@ process_tx_desc(E1000State *s, struct e1000_tx_desc *dp)
|
|
||||||
// context descriptor TSE is not set, while data descriptor TSE is set
|
|
||||||
DBGOUT(TXERR, "TCP segmentaion Error\n");
|
|
||||||
} else {
|
|
||||||
+ split_size = MIN(sizeof(tp->data) - tp->size, split_size);
|
|
||||||
pci_dma_read(&s->dev, addr, tp->data + tp->size, split_size);
|
|
||||||
tp->size += split_size;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.7.7
|
|
||||||
|
|
3
qemu-1.0.1.tar.bz2
Normal file
3
qemu-1.0.1.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:4ae6aa62497c2414bcd10d32c00f17fbcf3a1dc1278160cca3dcd1ef85d0d12a
|
||||||
|
size 9062824
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:17af2cf9b04314ad87eccabf9eb2dae0e42a287c2cb1233145ce1fd278caa452
|
|
||||||
size 9056102
|
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Feb 22 23:04:48 UTC 2012 - brogers@suse.com
|
||||||
|
|
||||||
|
- update to latest stable release: 1.0.1. For changes see:
|
||||||
|
http://wiki.qemu.org/ChangeLog/1.0
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Feb 6 22:24:27 UTC 2012 - brogers@suse.com
|
Mon Feb 6 22:24:27 UTC 2012 - brogers@suse.com
|
||||||
|
|
||||||
|
49
qemu.spec
49
qemu.spec
@ -15,12 +15,13 @@
|
|||||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
Name: qemu
|
Name: qemu
|
||||||
Url: http://fabrice.bellard.free.fr/qemu/
|
Url: http://fabrice.bellard.free.fr/qemu/
|
||||||
Summary: Universal CPU emulator
|
Summary: Universal CPU emulator
|
||||||
License: BSD-3-Clause ; GPL-2.0+ ; LGPL-2.1+ ; MIT
|
License: BSD-3-Clause ; GPL-2.0+ ; LGPL-2.1+ ; MIT
|
||||||
Group: System/Emulators/PC
|
Group: System/Emulators/PC
|
||||||
Version: 1.0
|
Version: 1.0.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Source: %name-%version.tar.bz2
|
Source: %name-%version.tar.bz2
|
||||||
Patch0001: 0001-Handle-CPU-interrupts-by-inline-checking-of-a-flag.patch
|
Patch0001: 0001-Handle-CPU-interrupts-by-inline-checking-of-a-flag.patch
|
||||||
@ -54,29 +55,21 @@ Patch0028: 0028-Integrating-Dynamips-and-GNS3-UDP-tunnels-Patches.patch
|
|||||||
Patch0029: 0029-linux-user-add-binfmt-wrapper-for-argv-0-handling.patch
|
Patch0029: 0029-linux-user-add-binfmt-wrapper-for-argv-0-handling.patch
|
||||||
Patch0030: 0030-linux-user-Ignore-timer_create-syscall.patch
|
Patch0030: 0030-linux-user-Ignore-timer_create-syscall.patch
|
||||||
Patch0031: 0031-linux-user-be-silent-about-capget-failures.patch
|
Patch0031: 0031-linux-user-be-silent-about-capget-failures.patch
|
||||||
Patch0032: 0032-PPC-Fix-linker-scripts-on-ppc-hosts.patch
|
Patch0032: 0032-linux-user-reserve-4GB-of-vmem-for-32-on-64.patch
|
||||||
Patch0033: 0033-linux-user-reserve-4GB-of-vmem-for-32-on-64.patch
|
Patch0033: 0033-PPC-KVM-Disable-mmu-notifier-check.patch
|
||||||
Patch0034: 0034-PPC-KVM-Disable-mmu-notifier-check.patch
|
Patch0034: 0034-linux-user-improve-fake-proc-self-stat-making-ps.patch
|
||||||
Patch0035: 0035-linux-user-improve-fake-proc-self-stat-making-ps.patch
|
Patch0035: 0035-linux-user-target_argv-is-placed-on-ts-bprm-argv.patch
|
||||||
Patch0036: 0036-linux-user-target_argv-is-placed-on-ts-bprm-argv.patch
|
Patch0036: 0036-PPC-KVM-Ignore-SET_ONE_REG-failures.patch
|
||||||
Patch0037: 0037-PPC-KVM-Ignore-SET_ONE_REG-failures.patch
|
Patch0037: 0037-PPC-KVM-Ignore-ENABLE_PAPR-to-support-very-old-HV.patch
|
||||||
Patch0038: 0038-PPC-KVM-Ignore-ENABLE_PAPR-to-support-very-old-HV.patch
|
Patch0038: 0038-linux-user-fix-segfault-deadlock.patch
|
||||||
Patch0039: 0039-console-Fix-segfault-on-screendump-without-VGA-adap.patch
|
Patch0039: 0039-linux-user-implement-device-mapper-ioctls.patch
|
||||||
Patch0040: 0040-pseries-Fix-array-overrun-bug-in-PCI-code.patch
|
Patch0040: 0040-linux-user-add-struct-old_dev_t-compat.patch
|
||||||
Patch0041: 0041-kvm-ppc-halt-secondary-cpus-when-guest-reset.patch
|
Patch0041: 0041-linux-user-fix-BLK-ioctl-arguments.patch
|
||||||
Patch0042: 0042-pseries-Emit-device-tree-nodes-in-reg-order.patch
|
Patch0042: 0042-linux-user-add-BLKSSZGET-ioctl-wrapper.patch
|
||||||
Patch0043: 0043-pseries-Add-a-routine-to-find-a-stable-default-vt.patch
|
Patch0043: 0043-linux-user-Add-ioctl-for-BLKBSZGET.patch
|
||||||
Patch0044: 0044-pseries-Populate-chosen-linux-stdout-path-in-the.patch
|
Patch0044: 0044-linux-user-take-RESERVED_VA-into-account-for-g2h_va.patch
|
||||||
Patch0045: 0045-linux-user-fix-segfault-deadlock.patch
|
Patch0045: 0045-linux-user-binfmt-support-host-binaries.patch
|
||||||
Patch0046: 0046-linux-user-implement-device-mapper-ioctls.patch
|
Patch0046: 0046-linux-user-fix-fallocate.patch
|
||||||
Patch0047: 0047-linux-user-add-struct-old_dev_t-compat.patch
|
|
||||||
Patch0048: 0048-linux-user-fix-BLK-ioctl-arguments.patch
|
|
||||||
Patch0049: 0049-linux-user-add-BLKSSZGET-ioctl-wrapper.patch
|
|
||||||
Patch0050: 0050-linux-user-Add-ioctl-for-BLKBSZGET.patch
|
|
||||||
Patch0051: 0051-linux-user-take-RESERVED_VA-into-account-for-g2h_va.patch
|
|
||||||
Patch0052: 0052-linux-user-binfmt-support-host-binaries.patch
|
|
||||||
Patch0053: 0053-linux-user-fix-fallocate.patch
|
|
||||||
Patch0054: 0054-e1000-bounds-packet-size-against-buffer-size.patch
|
|
||||||
# this is to make lint happy
|
# this is to make lint happy
|
||||||
Source300: rpmlintrc
|
Source300: rpmlintrc
|
||||||
Source400: update_git.sh
|
Source400: update_git.sh
|
||||||
@ -183,14 +176,6 @@ run cross architectures builds
|
|||||||
%patch0044 -p1
|
%patch0044 -p1
|
||||||
%patch0045 -p1
|
%patch0045 -p1
|
||||||
%patch0046 -p1
|
%patch0046 -p1
|
||||||
%patch0047 -p1
|
|
||||||
%patch0048 -p1
|
|
||||||
%patch0049 -p1
|
|
||||||
%patch0050 -p1
|
|
||||||
%patch0051 -p1
|
|
||||||
%patch0052 -p1
|
|
||||||
%patch0053 -p1
|
|
||||||
%patch0054 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# build QEMU
|
# build QEMU
|
||||||
|
Loading…
Reference in New Issue
Block a user