qemu: Upgrade 0.13.0 -> 0.14.0
* ppc-hack patch is dropped. * Other patches which were direct backports or has been merged upstream in 0.14.0 are also dropped (From OE-Core rev: 97fbdfdbfb15de325fd148bcecc9187d0f778db5) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
fcb1b5a4d7
commit
7c62b36a34
|
@ -1,12 +0,0 @@
|
|||
Index: qemu/linux-user/syscall.c
|
||||
===================================================================
|
||||
--- qemu.orig/linux-user/syscall.c 2010-05-11 13:16:22.421783949 -0400
|
||||
+++ qemu/linux-user/syscall.c 2010-05-11 13:16:31.759805849 -0400
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
+#include <dirent.h>
|
||||
#include <time.h>
|
||||
#include <limits.h>
|
||||
#include <sys/types.h>
|
|
@ -1,13 +0,0 @@
|
|||
Index: git/Makefile.target
|
||||
===================================================================
|
||||
--- git.orig/Makefile.target 2010-05-27 12:35:26.000000000 -0400
|
||||
+++ git/Makefile.target 2010-05-27 12:59:53.520415731 -0400
|
||||
@@ -326,7 +326,7 @@ vl.o: qemu-options.h
|
||||
|
||||
monitor.o: qemu-monitor.h
|
||||
|
||||
-LIBS += -lGL -lGLU
|
||||
+LIBS += -lGL
|
||||
|
||||
ARLIBS=../libqemu_common.a libqemu.a $(HWLIB)
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
Index: qemu-0.13.0/Makefile
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/Makefile 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/Makefile 2011-01-17 16:44:57.000000000 +0800
|
||||
@@ -185,7 +185,7 @@
|
||||
install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig
|
||||
$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
|
||||
ifneq ($(TOOLS),)
|
||||
- $(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
|
||||
+ $(INSTALL_PROG) $(TOOLS) "$(DESTDIR)$(bindir)"
|
||||
endif
|
||||
ifneq ($(BLOBS),)
|
||||
$(INSTALL_DIR) "$(DESTDIR)$(datadir)"
|
||||
Index: qemu-0.13.0/Makefile.target
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:42:36.000000000 +0800
|
||||
+++ qemu-0.13.0/Makefile.target 2011-01-17 16:44:57.000000000 +0800
|
||||
@@ -351,7 +351,7 @@
|
||||
|
||||
install: all
|
||||
ifneq ($(PROGS),)
|
||||
- $(INSTALL) -m 755 $(STRIP_OPT) $(PROGS) "$(DESTDIR)$(bindir)"
|
||||
+ $(INSTALL) -m 755 $(PROGS) "$(DESTDIR)$(bindir)"
|
||||
endif
|
||||
|
||||
# Include automatically generated dependency files
|
|
@ -1,34 +0,0 @@
|
|||
Make -j(>=6) always fail as some job depends on config-host.h. Added following
|
||||
patch in upstream to resolve it.
|
||||
|
||||
Could remove it in next upgrade if necessary.
|
||||
|
||||
Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
|
||||
|
||||
commit f0acb38015409024683911380daa94cc974e4e0e
|
||||
Author: Paul Brook <paul@codesourcery.com>
|
||||
Date: Fri Nov 26 18:46:03 2010 +0000
|
||||
|
||||
Add missing dependency.
|
||||
|
||||
Teach Makefile that cmd.o depends on a generated header (specifically
|
||||
config-host.h).
|
||||
|
||||
Signed-off-by: Paul Brook <paul@codesourcery.com>
|
||||
(cherry picked from commit 6e14404aab26f74a448747d1e793ac16bde8a92b)
|
||||
|
||||
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
Index: qemu-0.13.0/Makefile
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/Makefile 2011-01-18 09:45:45.000000000 +0800
|
||||
+++ qemu-0.13.0/Makefile 2011-01-18 09:45:45.000000000 +0800
|
||||
@@ -107,7 +107,7 @@
|
||||
######################################################################
|
||||
|
||||
qemu-img.o: qemu-img-cmds.h
|
||||
-qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o: $(GENERATED_HEADERS)
|
||||
+qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o cmd.o: $(GENERATED_HEADERS)
|
||||
|
||||
qemu-img$(EXESUF): qemu-img.o qemu-tool.o qemu-error.o $(block-obj-y) $(qobject-obj-y)
|
||||
|
|
@ -1,196 +0,0 @@
|
|||
With qemu 0.13.0, poky failed to start on ppc arch because both ppc_prep_init
|
||||
and i8042_initfn try to register to port 0x92 then cause conflict. Introduce
|
||||
this patch from upstream to fix it.
|
||||
|
||||
Could remove it in future if necessary.
|
||||
|
||||
Signed-off-by: Zhai, Edwin <edwin.zhai@intel.com>
|
||||
|
||||
commit 4b78a802ffaabb325a0f7b773031da92d173bde1
|
||||
Author: Blue Swirl <blauwirbel@gmail.com>
|
||||
Date: Thu Jan 6 18:24:35 2011 +0000
|
||||
|
||||
pc: move port 92 stuff back to pc.c from pckbd.c
|
||||
|
||||
956a3e6bb7386de48b642d4fee11f7f86a2fcf9a introduced a bug concerning
|
||||
reset bit for port 92.
|
||||
|
||||
Since the keyboard output port and port 92 are not compatible anyway,
|
||||
let's separate them.
|
||||
|
||||
Reported-by: Peter Lieven <pl@dlh.net>
|
||||
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
|
||||
--
|
||||
v2: added reset handler and VMState
|
||||
|
||||
Index: qemu-0.13.0/hw/pc.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/pc.c 2010-10-16 04:56:09.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/pc.c 2011-01-20 20:37:37.000000000 +0800
|
||||
@@ -409,11 +409,91 @@
|
||||
qemu_register_reset(pc_cmos_init_late, &arg);
|
||||
}
|
||||
|
||||
+/* port 92 stuff: could be split off */
|
||||
+typedef struct Port92State {
|
||||
+ ISADevice dev;
|
||||
+ uint8_t outport;
|
||||
+ qemu_irq *a20_out;
|
||||
+} Port92State;
|
||||
+
|
||||
+static void port92_write(void *opaque, uint32_t addr, uint32_t val)
|
||||
+{
|
||||
+ Port92State *s = opaque;
|
||||
+
|
||||
+ DPRINTF("port92: write 0x%02x\n", val);
|
||||
+ s->outport = val;
|
||||
+ qemu_set_irq(*s->a20_out, (val >> 1) & 1);
|
||||
+ if (val & 1) {
|
||||
+ qemu_system_reset_request();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static uint32_t port92_read(void *opaque, uint32_t addr)
|
||||
+{
|
||||
+ Port92State *s = opaque;
|
||||
+ uint32_t ret;
|
||||
+
|
||||
+ ret = s->outport;
|
||||
+ DPRINTF("port92: read 0x%02x\n", ret);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void port92_init(ISADevice *dev, qemu_irq *a20_out)
|
||||
+{
|
||||
+ Port92State *s = DO_UPCAST(Port92State, dev, dev);
|
||||
+
|
||||
+ s->a20_out = a20_out;
|
||||
+}
|
||||
+
|
||||
+static const VMStateDescription vmstate_port92_isa = {
|
||||
+ .name = "port92",
|
||||
+ .version_id = 1,
|
||||
+ .minimum_version_id = 1,
|
||||
+ .minimum_version_id_old = 1,
|
||||
+ .fields = (VMStateField []) {
|
||||
+ VMSTATE_UINT8(outport, Port92State),
|
||||
+ VMSTATE_END_OF_LIST()
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+static void port92_reset(DeviceState *d)
|
||||
+{
|
||||
+ Port92State *s = container_of(d, Port92State, dev.qdev);
|
||||
+
|
||||
+ s->outport &= ~1;
|
||||
+}
|
||||
+
|
||||
+static int port92_initfn(ISADevice *dev)
|
||||
+{
|
||||
+ Port92State *s = DO_UPCAST(Port92State, dev, dev);
|
||||
+
|
||||
+ register_ioport_read(0x92, 1, 1, port92_read, s);
|
||||
+ register_ioport_write(0x92, 1, 1, port92_write, s);
|
||||
+ s->outport = 0;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static ISADeviceInfo port92_info = {
|
||||
+ .qdev.name = "port92",
|
||||
+ .qdev.size = sizeof(Port92State),
|
||||
+ .qdev.vmsd = &vmstate_port92_isa,
|
||||
+ .qdev.no_user = 1,
|
||||
+ .qdev.reset = port92_reset,
|
||||
+ .init = port92_initfn,
|
||||
+};
|
||||
+
|
||||
+static void port92_register(void)
|
||||
+{
|
||||
+ isa_qdev_register(&port92_info);
|
||||
+}
|
||||
+device_init(port92_register)
|
||||
+
|
||||
static void handle_a20_line_change(void *opaque, int irq, int level)
|
||||
{
|
||||
CPUState *cpu = opaque;
|
||||
|
||||
/* XXX: send to all CPUs ? */
|
||||
+ /* XXX: add logic to handle multiple A20 line sources */
|
||||
cpu_x86_set_a20(cpu, level);
|
||||
}
|
||||
|
||||
@@ -1017,7 +1097,7 @@
|
||||
PITState *pit;
|
||||
qemu_irq rtc_irq = NULL;
|
||||
qemu_irq *a20_line;
|
||||
- ISADevice *i8042;
|
||||
+ ISADevice *i8042, *port92;
|
||||
qemu_irq *cpu_exit_irq;
|
||||
|
||||
register_ioport_write(0x80, 1, 1, ioport80_write, NULL);
|
||||
@@ -1051,10 +1131,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
- a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 1);
|
||||
+ a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2);
|
||||
i8042 = isa_create_simple("i8042");
|
||||
- i8042_setup_a20_line(i8042, a20_line);
|
||||
+ i8042_setup_a20_line(i8042, &a20_line[0]);
|
||||
vmmouse_init(i8042);
|
||||
+ port92 = isa_create_simple("port92");
|
||||
+ port92_init(port92, &a20_line[1]);
|
||||
|
||||
cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1);
|
||||
DMA_init(0, cpu_exit_irq);
|
||||
Index: qemu-0.13.0/hw/pckbd.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/pckbd.c 2010-10-16 04:56:09.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/pckbd.c 2011-01-20 20:33:44.000000000 +0800
|
||||
@@ -209,10 +209,8 @@
|
||||
ps2_queue(s->kbd, b);
|
||||
}
|
||||
|
||||
-static void ioport92_write(void *opaque, uint32_t addr, uint32_t val)
|
||||
+static void outport_write(KBDState *s, uint32_t val)
|
||||
{
|
||||
- KBDState *s = opaque;
|
||||
-
|
||||
DPRINTF("kbd: write outport=0x%02x\n", val);
|
||||
s->outport = val;
|
||||
if (s->a20_out) {
|
||||
@@ -223,16 +221,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
-static uint32_t ioport92_read(void *opaque, uint32_t addr)
|
||||
-{
|
||||
- KBDState *s = opaque;
|
||||
- uint32_t ret;
|
||||
-
|
||||
- ret = s->outport;
|
||||
- DPRINTF("kbd: read outport=0x%02x\n", ret);
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
static void kbd_write_command(void *opaque, uint32_t addr, uint32_t val)
|
||||
{
|
||||
KBDState *s = opaque;
|
||||
@@ -340,7 +328,7 @@
|
||||
kbd_queue(s, val, 1);
|
||||
break;
|
||||
case KBD_CCMD_WRITE_OUTPORT:
|
||||
- ioport92_write(s, 0, val);
|
||||
+ outport_write(s, val);
|
||||
break;
|
||||
case KBD_CCMD_WRITE_MOUSE:
|
||||
ps2_write_mouse(s->mouse, val);
|
||||
@@ -469,8 +457,6 @@
|
||||
register_ioport_write(0x60, 1, 1, kbd_write_data, s);
|
||||
register_ioport_read(0x64, 1, 1, kbd_read_status, s);
|
||||
register_ioport_write(0x64, 1, 1, kbd_write_command, s);
|
||||
- register_ioport_read(0x92, 1, 1, ioport92_read, s);
|
||||
- register_ioport_write(0x92, 1, 1, ioport92_write, s);
|
||||
|
||||
s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
|
||||
s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
|
|
@ -1,108 +0,0 @@
|
|||
Quick fixes to get the ppc system model to boot a 603e based
|
||||
kernel.
|
||||
|
||||
Index: qemu-0.13.0/hw/m48t59.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/m48t59.c 2010-10-16 04:56:09.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/m48t59.c 2011-01-17 16:40:09.000000000 +0800
|
||||
@@ -50,6 +50,7 @@
|
||||
*/
|
||||
|
||||
struct M48t59State {
|
||||
+ SysBusDevice busdev;
|
||||
/* Model parameters */
|
||||
uint32_t type; // 2 = m48t02, 8 = m48t08, 59 = m48t59
|
||||
/* Hardware parameters */
|
||||
@@ -74,11 +75,6 @@
|
||||
M48t59State state;
|
||||
} M48t59ISAState;
|
||||
|
||||
-typedef struct M48t59SysBusState {
|
||||
- SysBusDevice busdev;
|
||||
- M48t59State state;
|
||||
-} M48t59SysBusState;
|
||||
-
|
||||
/* Fake timer functions */
|
||||
|
||||
/* Alarm management */
|
||||
@@ -629,8 +625,7 @@
|
||||
|
||||
static void m48t59_reset_sysbus(DeviceState *d)
|
||||
{
|
||||
- M48t59SysBusState *sys = container_of(d, M48t59SysBusState, busdev.qdev);
|
||||
- M48t59State *NVRAM = &sys->state;
|
||||
+ M48t59State *NVRAM = container_of(d, M48t59State, busdev.qdev);
|
||||
|
||||
m48t59_reset_common(NVRAM);
|
||||
}
|
||||
@@ -641,7 +636,7 @@
|
||||
{
|
||||
DeviceState *dev;
|
||||
SysBusDevice *s;
|
||||
- M48t59SysBusState *d;
|
||||
+ M48t59State *d;
|
||||
|
||||
dev = qdev_create(NULL, "m48t59");
|
||||
qdev_prop_set_uint32(dev, "type", type);
|
||||
@@ -658,9 +653,9 @@
|
||||
sysbus_mmio_map(s, 0, mem_base);
|
||||
}
|
||||
|
||||
- d = FROM_SYSBUS(M48t59SysBusState, s);
|
||||
+ d = FROM_SYSBUS(M48t59State, s);
|
||||
|
||||
- return &d->state;
|
||||
+ return d;
|
||||
}
|
||||
|
||||
M48t59State *m48t59_init_isa(uint32_t io_base, uint16_t size, int type)
|
||||
@@ -710,8 +705,7 @@
|
||||
|
||||
static int m48t59_init1(SysBusDevice *dev)
|
||||
{
|
||||
- M48t59SysBusState *d = FROM_SYSBUS(M48t59SysBusState, dev);
|
||||
- M48t59State *s = &d->state;
|
||||
+ M48t59State *s = FROM_SYSBUS(M48t59State, dev);
|
||||
int mem_index;
|
||||
|
||||
sysbus_init_irq(dev, &s->IRQ);
|
||||
@@ -740,12 +734,12 @@
|
||||
static SysBusDeviceInfo m48t59_info = {
|
||||
.init = m48t59_init1,
|
||||
.qdev.name = "m48t59",
|
||||
- .qdev.size = sizeof(M48t59SysBusState),
|
||||
+ .qdev.size = sizeof(M48t59State),
|
||||
.qdev.reset = m48t59_reset_sysbus,
|
||||
.qdev.props = (Property[]) {
|
||||
- DEFINE_PROP_UINT32("size", M48t59SysBusState, state.size, -1),
|
||||
- DEFINE_PROP_UINT32("type", M48t59SysBusState, state.type, -1),
|
||||
- DEFINE_PROP_HEX32( "io_base", M48t59SysBusState, state.io_base, 0),
|
||||
+ DEFINE_PROP_UINT32("size", M48t59State, size, -1),
|
||||
+ DEFINE_PROP_UINT32("type", M48t59State, type, -1),
|
||||
+ DEFINE_PROP_HEX32( "io_base", M48t59State, io_base, 0),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
}
|
||||
};
|
||||
Index: qemu-0.13.0/hw/ppc_prep.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/ppc_prep.c 2010-10-16 04:56:09.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/ppc_prep.c 2011-01-15 18:29:25.000000000 +0800
|
||||
@@ -74,7 +74,7 @@
|
||||
/* Constants for devices init */
|
||||
static const int ide_iobase[2] = { 0x1f0, 0x170 };
|
||||
static const int ide_iobase2[2] = { 0x3f6, 0x376 };
|
||||
-static const int ide_irq[2] = { 13, 13 };
|
||||
+static const int ide_irq[2] = { 13, 14 };
|
||||
|
||||
#define NE2000_NB_MAX 6
|
||||
|
||||
@@ -631,9 +631,6 @@
|
||||
if (filename) {
|
||||
qemu_free(filename);
|
||||
}
|
||||
- if (env->nip < 0xFFF80000 && bios_size < 0x00100000) {
|
||||
- hw_error("PowerPC 601 / 620 / 970 need a 1MB BIOS\n");
|
||||
- }
|
||||
|
||||
if (linux_boot) {
|
||||
kernel_base = KERNEL_LOAD_ADDR;
|
|
@ -1,198 +0,0 @@
|
|||
commit 4dedc07ffbbc66002e0fd2b97d5516fe6aca5eea
|
||||
Author: Andrzej Zaborowski <balrog@zabor.org>
|
||||
Date: Fri Sep 10 02:23:31 2010 +0200
|
||||
|
||||
vmware_vga: Add checks to deal with non-atomic fifo writes.
|
||||
|
||||
Janne Huttunen noticed that the FIFO end pointer is updated by the
|
||||
guest after writing each word to the FIFO, at least the X.org driver
|
||||
which is open does this. This means that there's no way for the
|
||||
host to know if the guest is in the middle a write operation. Qemu
|
||||
thus needs to read the beginning of the command up to when it's able
|
||||
to tell how many words are expected for the given command. It will
|
||||
abort reading and rewind the FIFO if there aren't enough words yet,
|
||||
this should be relatively rare but it is suspected to have been the
|
||||
cause of the occasional FIFO overrun that killed the display.
|
||||
|
||||
Index: qemu-0.13.0/hw/vmware_vga.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-15 18:06:06.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/vmware_vga.c 2011-01-15 18:17:04.000000000 +0800
|
||||
@@ -521,27 +521,37 @@
|
||||
|
||||
static uint32_t last_cmd;
|
||||
|
||||
-static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s)
|
||||
+static inline int vmsvga_fifo_length(struct vmsvga_state_s *s)
|
||||
{
|
||||
+ int num;
|
||||
if (!s->config || !s->enable)
|
||||
- return 1;
|
||||
- return (s->cmd->next_cmd == s->cmd->stop);
|
||||
+ return 0;
|
||||
+ num = CMD(next_cmd) - CMD(stop);
|
||||
+ if (num < 0)
|
||||
+ num += CMD(max) - CMD(min);
|
||||
+ return num >> 2;
|
||||
}
|
||||
|
||||
static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s)
|
||||
{
|
||||
- int offset = CMD(stop);
|
||||
+ uint32_t cmd = s->fifo[CMD(stop) >> 2];
|
||||
|
||||
+ /* If parameter is not available in FIFO, return 0 rather than random
|
||||
+ * value. Also update the stop as missing parameter will be inserted
|
||||
+ * soonly, else it will be treated as new command next time.
|
||||
+ * With rewinding in vmsvga_fifo_run, this unlikely happen.
|
||||
+ */
|
||||
if (unlikely(s->cmd->next_cmd == s->cmd->stop)) {
|
||||
fprintf(stderr, "%s: FIFO empty during CMD %i\n",
|
||||
__FUNCTION__, last_cmd);
|
||||
- return 0x00000000;
|
||||
+ cmd = 0;
|
||||
}
|
||||
|
||||
- s->cmd->stop = cpu_to_le32(offset + 4);
|
||||
- if (offset + 4 >= CMD(max))
|
||||
+ s->cmd->stop = cpu_to_le32(CMD(stop) + 4);
|
||||
+ if (CMD(stop) >= CMD(max))
|
||||
s->cmd->stop = s->cmd->min;
|
||||
- return s->fifo[offset >> 2];
|
||||
+
|
||||
+ return cmd;
|
||||
}
|
||||
|
||||
static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s)
|
||||
@@ -552,13 +562,23 @@
|
||||
static void vmsvga_fifo_run(struct vmsvga_state_s *s)
|
||||
{
|
||||
uint32_t colour;
|
||||
- int args = 0;
|
||||
+ int args, len;
|
||||
int x, y, dx, dy, width, height;
|
||||
struct vmsvga_cursor_definition_s cursor;
|
||||
- while (!vmsvga_fifo_empty(s))
|
||||
+ uint32_t cmd_start;
|
||||
+
|
||||
+ len = vmsvga_fifo_length(s);
|
||||
+ while (len > 0) {
|
||||
+ /* May need to go back to the start of the command if incomplete */
|
||||
+ cmd_start = s->cmd->stop;
|
||||
+
|
||||
switch (last_cmd = vmsvga_fifo_read(s)) {
|
||||
case SVGA_CMD_UPDATE:
|
||||
case SVGA_CMD_UPDATE_VERBOSE:
|
||||
+ len -= 5;
|
||||
+ if (len <0)
|
||||
+ goto rewind;
|
||||
+
|
||||
x = vmsvga_fifo_read(s);
|
||||
y = vmsvga_fifo_read(s);
|
||||
width = vmsvga_fifo_read(s);
|
||||
@@ -567,6 +587,10 @@
|
||||
break;
|
||||
|
||||
case SVGA_CMD_RECT_FILL:
|
||||
+ len -= 6;
|
||||
+ if (len < 0)
|
||||
+ goto rewind;
|
||||
+
|
||||
colour = vmsvga_fifo_read(s);
|
||||
x = vmsvga_fifo_read(s);
|
||||
y = vmsvga_fifo_read(s);
|
||||
@@ -576,10 +600,15 @@
|
||||
vmsvga_fill_rect(s, colour, x, y, width, height);
|
||||
break;
|
||||
#else
|
||||
+ args = 0;
|
||||
goto badcmd;
|
||||
#endif
|
||||
|
||||
case SVGA_CMD_RECT_COPY:
|
||||
+ len -= 7;
|
||||
+ if (len < 0)
|
||||
+ goto rewind;
|
||||
+
|
||||
x = vmsvga_fifo_read(s);
|
||||
y = vmsvga_fifo_read(s);
|
||||
dx = vmsvga_fifo_read(s);
|
||||
@@ -590,10 +619,15 @@
|
||||
vmsvga_copy_rect(s, x, y, dx, dy, width, height);
|
||||
break;
|
||||
#else
|
||||
+ args = 0;
|
||||
goto badcmd;
|
||||
#endif
|
||||
|
||||
case SVGA_CMD_DEFINE_CURSOR:
|
||||
+ len -= 8;
|
||||
+ if (len < 0)
|
||||
+ goto rewind;
|
||||
+
|
||||
cursor.id = vmsvga_fifo_read(s);
|
||||
cursor.hot_x = vmsvga_fifo_read(s);
|
||||
cursor.hot_y = vmsvga_fifo_read(s);
|
||||
@@ -602,11 +636,14 @@
|
||||
vmsvga_fifo_read(s);
|
||||
cursor.bpp = vmsvga_fifo_read(s);
|
||||
|
||||
+ args = SVGA_BITMAP_SIZE(x, y) + SVGA_PIXMAP_SIZE(x, y, cursor.bpp);
|
||||
if (SVGA_BITMAP_SIZE(x, y) > sizeof cursor.mask ||
|
||||
- SVGA_PIXMAP_SIZE(x, y, cursor.bpp) > sizeof cursor.image) {
|
||||
- args = SVGA_BITMAP_SIZE(x, y) + SVGA_PIXMAP_SIZE(x, y, cursor.bpp);
|
||||
+ SVGA_PIXMAP_SIZE(x, y, cursor.bpp) > sizeof cursor.image)
|
||||
goto badcmd;
|
||||
- }
|
||||
+
|
||||
+ len -= args;
|
||||
+ if (len < 0)
|
||||
+ goto rewind;
|
||||
|
||||
for (args = 0; args < SVGA_BITMAP_SIZE(x, y); args ++)
|
||||
cursor.mask[args] = vmsvga_fifo_read_raw(s);
|
||||
@@ -625,6 +662,10 @@
|
||||
* for so we can avoid FIFO desync if driver uses them illegally.
|
||||
*/
|
||||
case SVGA_CMD_DEFINE_ALPHA_CURSOR:
|
||||
+ len -= 6;
|
||||
+ if (len < 0)
|
||||
+ goto rewind;
|
||||
+
|
||||
vmsvga_fifo_read(s);
|
||||
vmsvga_fifo_read(s);
|
||||
vmsvga_fifo_read(s);
|
||||
@@ -639,6 +680,10 @@
|
||||
args = 7;
|
||||
goto badcmd;
|
||||
case SVGA_CMD_DRAW_GLYPH_CLIPPED:
|
||||
+ len -= 4;
|
||||
+ if (len < 0)
|
||||
+ goto rewind;
|
||||
+
|
||||
vmsvga_fifo_read(s);
|
||||
vmsvga_fifo_read(s);
|
||||
args = 7 + (vmsvga_fifo_read(s) >> 2);
|
||||
@@ -659,14 +704,22 @@
|
||||
break; /* Nop */
|
||||
|
||||
default:
|
||||
+ args = 0;
|
||||
badcmd:
|
||||
+ len -= args;
|
||||
+ if (len < 0)
|
||||
+ goto rewind;
|
||||
while (args --)
|
||||
vmsvga_fifo_read(s);
|
||||
printf("%s: Unknown command 0x%02x in SVGA command FIFO\n",
|
||||
__FUNCTION__, last_cmd);
|
||||
break;
|
||||
+ rewind:
|
||||
+ s->cmd->stop = cmd_start;
|
||||
+ break;
|
||||
}
|
||||
|
||||
+ }
|
||||
s->syncing = 0;
|
||||
}
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
qemu 0.13.0 cause seg fault in qemu_remove_mouse_event_handler, this patch from
|
||||
upstream can fix it.
|
||||
|
||||
Should remove it in next upgrade if necessary.
|
||||
|
||||
Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
|
||||
|
||||
commit b2d4d8329963b13c5cebe5944dcc99f0e9d1b5c7
|
||||
Author: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Date: Fri Oct 8 12:30:14 2010 +0200
|
||||
|
||||
wacom tablet: activate event handlers.
|
||||
|
||||
Add qemu_activate_mouse_event_handler() calls to the usb wavom tablet so
|
||||
it actually receives events. Also make sure we only remove the handler
|
||||
if we registered it before.
|
||||
|
||||
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
||||
|
||||
Index: qemu-0.13.0/hw/usb-wacom.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/usb-wacom.c 2010-10-16 04:56:09.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/usb-wacom.c 2011-01-18 16:58:44.000000000 +0800
|
||||
@@ -160,6 +160,7 @@
|
||||
if (!s->mouse_grabbed) {
|
||||
s->eh_entry = qemu_add_mouse_event_handler(usb_mouse_event, s, 0,
|
||||
"QEMU PenPartner tablet");
|
||||
+ qemu_activate_mouse_event_handler(s->eh_entry);
|
||||
s->mouse_grabbed = 1;
|
||||
}
|
||||
|
||||
@@ -197,6 +198,7 @@
|
||||
if (!s->mouse_grabbed) {
|
||||
s->eh_entry = qemu_add_mouse_event_handler(usb_wacom_event, s, 1,
|
||||
"QEMU PenPartner tablet");
|
||||
+ qemu_activate_mouse_event_handler(s->eh_entry);
|
||||
s->mouse_grabbed = 1;
|
||||
}
|
||||
|
||||
@@ -334,8 +336,10 @@
|
||||
ret = 0;
|
||||
break;
|
||||
case WACOM_SET_REPORT:
|
||||
- qemu_remove_mouse_event_handler(s->eh_entry);
|
||||
- s->mouse_grabbed = 0;
|
||||
+ if (s->mouse_grabbed) {
|
||||
+ qemu_remove_mouse_event_handler(s->eh_entry);
|
||||
+ s->mouse_grabbed = 0;
|
||||
+ }
|
||||
s->mode = data[0];
|
||||
ret = 0;
|
||||
break;
|
||||
@@ -397,7 +401,10 @@
|
||||
{
|
||||
USBWacomState *s = (USBWacomState *) dev;
|
||||
|
||||
- qemu_remove_mouse_event_handler(s->eh_entry);
|
||||
+ if (s->mouse_grabbed) {
|
||||
+ qemu_remove_mouse_event_handler(s->eh_entry);
|
||||
+ s->mouse_grabbed = 0;
|
||||
+ }
|
||||
}
|
||||
|
||||
static int usb_wacom_initfn(USBDevice *dev)
|
|
@ -1,24 +0,0 @@
|
|||
---
|
||||
linux-user/syscall.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: qemu-0.13.0/linux-user/syscall.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/linux-user/syscall.c 2011-01-17 16:52:18.000000000 +0800
|
||||
+++ qemu-0.13.0/linux-user/syscall.c 2011-01-17 16:52:20.000000000 +0800
|
||||
@@ -99,6 +99,15 @@
|
||||
#define CLONE_NPTL_FLAGS2 0
|
||||
#endif
|
||||
|
||||
+#define FUTEX_WAIT 0
|
||||
+#define FUTEX_WAKE 1
|
||||
+#define FUTEX_FD 2
|
||||
+#define FUTEX_REQUEUE 3
|
||||
+#define FUTEX_CMP_REQUEUE 4
|
||||
+#define FUTEX_WAKE_OP 5
|
||||
+#define FUTEX_LOCK_PI 6
|
||||
+#define FUTEX_UNLOCK_PI 7
|
||||
+
|
||||
//#define DEBUG
|
||||
|
||||
//#include <linux/msdos_fs.h>
|
|
@ -0,0 +1,84 @@
|
|||
From de01f17a2cb88dc5ff53cc321342b888c33b120a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Lo=C3=AFc=20Minier?= <lool@dooz.org>
|
||||
Date: Thu, 11 Feb 2010 17:42:33 +0100
|
||||
Subject: [PATCH] Detect and use GCC atomic builtins for locking
|
||||
|
||||
---
|
||||
configure | 17 +++++++++++++++++
|
||||
qemu-lock.h | 13 +++++++++++++
|
||||
2 files changed, 30 insertions(+), 0 deletions(-)
|
||||
|
||||
Index: qemu-0.14.0/configure
|
||||
===================================================================
|
||||
--- qemu-0.14.0.orig/configure
|
||||
+++ qemu-0.14.0/configure
|
||||
@@ -2243,6 +2243,20 @@ fi
|
||||
##########################################
|
||||
|
||||
##########################################
|
||||
+# check if we have gcc atomic built-ins
|
||||
+gcc_atomic_builtins=no
|
||||
+cat > $TMPC << EOF
|
||||
+int main(void) {
|
||||
+ int i;
|
||||
+ __sync_lock_test_and_set(&i, 1);
|
||||
+ __sync_lock_release(&i);
|
||||
+}
|
||||
+EOF
|
||||
+if compile_prog "" ""; then
|
||||
+ gcc_atomic_builtins=yes
|
||||
+fi
|
||||
+
|
||||
+##########################################
|
||||
# check if we have fdatasync
|
||||
|
||||
fdatasync=no
|
||||
@@ -2731,6 +2745,9 @@ fi
|
||||
if test "$gcc_attribute_warn_unused_result" = "yes" ; then
|
||||
echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
|
||||
fi
|
||||
+if test "$gcc_atomic_builtins" = "yes" ; then
|
||||
+ echo "CONFIG_GCC_ATOMIC_BUILTINS=y" >> $config_host_mak
|
||||
+fi
|
||||
if test "$fdatasync" = "yes" ; then
|
||||
echo "CONFIG_FDATASYNC=y" >> $config_host_mak
|
||||
fi
|
||||
Index: qemu-0.14.0/qemu-lock.h
|
||||
===================================================================
|
||||
--- qemu-0.14.0.orig/qemu-lock.h
|
||||
+++ qemu-0.14.0/qemu-lock.h
|
||||
@@ -33,6 +33,14 @@
|
||||
|
||||
#else
|
||||
|
||||
+#ifdef CONFIG_GCC_ATOMIC_BUILTINS
|
||||
+typedef int spinlock_t;
|
||||
+
|
||||
+#define SPIN_LOCK_UNLOCKED 0
|
||||
+
|
||||
+#define resetlock(p) __sync_lock_release((p))
|
||||
+#else /* CONFIG_GCC_ATOMIC_BUILTINS */
|
||||
+
|
||||
#if defined(__hppa__)
|
||||
|
||||
typedef int spinlock_t[4];
|
||||
@@ -56,7 +64,11 @@ static inline void resetlock (spinlock_t
|
||||
}
|
||||
|
||||
#endif
|
||||
+#endif /* !CONFIG_GCC_ATOMIC_BUILTINS */
|
||||
|
||||
+#ifdef CONFIG_GCC_ATOMIC_BUILTINS
|
||||
+#define testandset(p) __sync_lock_test_and_set((p), 1)
|
||||
+#else /* CONFIG_GCC_ATOMIC_BUILTINS */
|
||||
#if defined(_ARCH_PPC)
|
||||
static inline int testandset (int *p)
|
||||
{
|
||||
@@ -213,6 +225,7 @@ static inline int testandset (int *p)
|
||||
#else
|
||||
#error unimplemented CPU support
|
||||
#endif
|
||||
+#endif /* !CONFIG_GCC_ATOMIC_BUILTINS */
|
||||
|
||||
#if defined(CONFIG_USER_ONLY)
|
||||
static inline void spin_lock(spinlock_t *lock)
|
|
@ -2,11 +2,11 @@ Enable i386-linux-user
|
|||
|
||||
Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
|
||||
|
||||
Index: qemu-0.13.0/Makefile.target
|
||||
Index: qemu-0.14.0/Makefile.target
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:50:39.000000000 +0800
|
||||
+++ qemu-0.13.0/Makefile.target 2011-01-17 16:50:41.000000000 +0800
|
||||
@@ -54,8 +54,13 @@
|
||||
--- qemu-0.14.0.orig/Makefile.target
|
||||
+++ qemu-0.14.0/Makefile.target
|
||||
@@ -78,8 +78,13 @@ ifeq ($(TARGET_BASE_ARCH), i386)
|
||||
libobj-y += cpuid.o
|
||||
endif
|
||||
libobj-$(CONFIG_NEED_MMU) += mmu.o
|
||||
|
@ -20,10 +20,10 @@ Index: qemu-0.13.0/Makefile.target
|
|||
libobj-$(TARGET_ARM) += dummygl.o
|
||||
libobj-$(TARGET_MIPS) += dummygl.o
|
||||
libobj-$(TARGET_PPC) += dummygl.o
|
||||
Index: qemu-0.13.0/target-i386/dummygl.c
|
||||
Index: qemu-0.14.0/target-i386/dummygl.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/dummygl.c 2011-01-17 16:50:41.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/dummygl.c
|
||||
@@ -0,0 +1,26 @@
|
||||
+#include <string.h>
|
||||
+#include <stdlib.h>
|
|
@ -8,10 +8,10 @@ Subject: [PATCH] linux-user: use default mmap_min_addr 65536 when /proc/sys/vm/m
|
|||
linux-user/main.c | 5 +++++
|
||||
1 files changed, 5 insertions(+), 0 deletions(-)
|
||||
|
||||
Index: qemu-0.13.0/linux-user/main.c
|
||||
Index: qemu-0.14.0/linux-user/main.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/linux-user/main.c
|
||||
+++ qemu-0.13.0/linux-user/main.c
|
||||
--- qemu-0.14.0.orig/linux-user/main.c
|
||||
+++ qemu-0.14.0/linux-user/main.c
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "envlist.h"
|
||||
|
||||
|
@ -20,7 +20,7 @@ Index: qemu-0.13.0/linux-user/main.c
|
|||
|
||||
char *exec_path;
|
||||
|
||||
@@ -2973,8 +2974,14 @@ int main(int argc, char **argv, char **e
|
||||
@@ -3010,8 +3011,14 @@ int main(int argc, char **argv, char **e
|
||||
if (fscanf(fp, "%lu", &tmp) == 1) {
|
||||
mmap_min_addr = tmp;
|
||||
qemu_log("host mmap_min_addr=0x%lx\n", mmap_min_addr);
|
|
@ -6,15 +6,15 @@ added and files in the sysroot can be found.
|
|||
|
||||
Patch from Paul Eggleton, Comments by RP 28/11/10
|
||||
|
||||
Index: qemu-0.13.0/configure
|
||||
Index: qemu-0.14.0/configure
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/configure 2010-10-16 04:56:09.000000000 +0800
|
||||
+++ qemu-0.13.0/configure 2011-01-15 18:19:41.000000000 +0800
|
||||
@@ -134,6 +134,7 @@
|
||||
--- qemu-0.14.0.orig/configure
|
||||
+++ qemu-0.14.0/configure
|
||||
@@ -229,6 +229,7 @@ QEMU_CFLAGS="-Wstrict-prototypes -Wredun
|
||||
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
|
||||
QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
|
||||
QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
|
||||
QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
|
||||
+QEMU_CFLAGS="$QEMU_CFLAGS $CFLAGS"
|
||||
LDFLAGS="-g $LDFLAGS"
|
||||
|
||||
gcc_flags="-Wold-style-declaration -Wold-style-definition -fstack-protector-all"
|
||||
# make source path absolute
|
|
@ -1,22 +1,24 @@
|
|||
Index: qemu-0.13.0/Makefile.target
|
||||
Index: qemu-0.14.0/Makefile.target
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:53:08.000000000 +0800
|
||||
+++ qemu-0.13.0/Makefile.target 2011-01-17 16:53:11.000000000 +0800
|
||||
@@ -55,6 +55,10 @@
|
||||
--- qemu-0.14.0.orig/Makefile.target
|
||||
+++ qemu-0.14.0/Makefile.target
|
||||
@@ -79,6 +79,12 @@ libobj-y += cpuid.o
|
||||
endif
|
||||
libobj-$(CONFIG_NEED_MMU) += mmu.o
|
||||
libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
|
||||
+libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
|
||||
+libobj-$(TARGET_ARM) += dummygl.o
|
||||
+libobj-$(TARGET_MIPS) += dummygl.o
|
||||
+libobj-$(TARGET_MIPS64) += dummygl.o
|
||||
+libobj-$(TARGET_PPC) += dummygl.o
|
||||
+libobj-$(TARGET_SH4) += dummygl.o
|
||||
libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
|
||||
|
||||
libobj-y += disas.o
|
||||
Index: qemu-0.13.0/target-arm/dummygl.c
|
||||
Index: qemu-0.14.0/target-arm/dummygl.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-arm/dummygl.c 2011-01-17 16:53:11.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-arm/dummygl.c
|
||||
@@ -0,0 +1,22 @@
|
||||
+#include <string.h>
|
||||
+#include <stdlib.h>
|
||||
|
@ -40,10 +42,10 @@ Index: qemu-0.13.0/target-arm/dummygl.c
|
|||
+{
|
||||
+
|
||||
+}
|
||||
Index: qemu-0.13.0/target-mips/dummygl.c
|
||||
Index: qemu-0.14.0/target-mips/dummygl.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-mips/dummygl.c 2011-01-17 16:53:11.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-mips/dummygl.c
|
||||
@@ -0,0 +1,22 @@
|
||||
+#include <string.h>
|
||||
+#include <stdlib.h>
|
||||
|
@ -67,10 +69,37 @@ Index: qemu-0.13.0/target-mips/dummygl.c
|
|||
+{
|
||||
+
|
||||
+}
|
||||
Index: qemu-0.13.0/target-ppc/dummygl.c
|
||||
Index: qemu-0.14.0/target-ppc/dummygl.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-ppc/dummygl.c 2011-01-17 16:53:11.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-ppc/dummygl.c
|
||||
@@ -0,0 +1,22 @@
|
||||
+#include <string.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <assert.h>
|
||||
+#include <stdint.h>
|
||||
+#include <X11/Xlib.h>
|
||||
+#include <X11/Xutil.h>
|
||||
+
|
||||
+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window)
|
||||
+{
|
||||
+
|
||||
+}
|
||||
+
|
||||
+void opengl_process_enable(void)
|
||||
+{
|
||||
+
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void mem_opengl(uint64_t ptr)
|
||||
+{
|
||||
+
|
||||
+}
|
||||
Index: qemu-0.14.0/target-sh4/dummygl.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-sh4/dummygl.c
|
||||
@@ -0,0 +1,22 @@
|
||||
+#include <string.h>
|
||||
+#include <stdlib.h>
|
|
@ -2,11 +2,11 @@
|
|||
# makes info.info.x11.display zero and avoids the calls to
|
||||
# opengl_exec_set_parent_window, one of which is crashing.
|
||||
|
||||
Index: qemu-0.13.0/ui/sdl.c
|
||||
Index: qemu-0.14.0/ui/sdl.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/ui/sdl.c 2011-01-15 17:40:59.000000000 +0800
|
||||
+++ qemu-0.13.0/ui/sdl.c 2011-01-15 17:41:04.000000000 +0800
|
||||
@@ -857,6 +857,7 @@
|
||||
--- qemu-0.14.0.orig/ui/sdl.c
|
||||
+++ qemu-0.14.0/ui/sdl.c
|
||||
@@ -863,6 +863,7 @@ void sdl_display_init(DisplayState *ds,
|
||||
vi = SDL_GetVideoInfo();
|
||||
host_format = *(vi->vfmt);
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
This patch is taken from debian. 128M is too less sometimes if distro
|
||||
with lot of packages is booted so this patch raises the default to 384M
|
||||
|
||||
It has not been applied to upstream qemu
|
||||
|
||||
Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Index: qemu-0.14.0/vl.c
|
||||
===================================================================
|
||||
--- qemu-0.14.0.orig/vl.c
|
||||
+++ qemu-0.14.0/vl.c
|
||||
@@ -168,7 +168,7 @@ int main(int argc, char **argv)
|
||||
//#define DEBUG_NET
|
||||
//#define DEBUG_SLIRP
|
||||
|
||||
-#define DEFAULT_RAM_SIZE 128
|
||||
+#define DEFAULT_RAM_SIZE 384
|
||||
|
||||
#define MAX_VIRTIO_CONSOLES 1
|
||||
|
|
@ -7,11 +7,11 @@ More information is available on the Fedora Wiki:
|
|||
https://fedoraproject.org/wiki/UnderstandingDSOLinkChange
|
||||
|
||||
JL - 15/06/10
|
||||
Index: qemu-0.13.0/Makefile.target
|
||||
Index: qemu-0.14.0/Makefile.target
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/Makefile.target 2011-01-15 17:30:45.000000000 +0800
|
||||
+++ qemu-0.13.0/Makefile.target 2011-01-15 17:33:22.000000000 +0800
|
||||
@@ -193,7 +193,7 @@
|
||||
--- qemu-0.14.0.orig/Makefile.target
|
||||
+++ qemu-0.14.0/Makefile.target
|
||||
@@ -218,7 +218,7 @@ obj-$(CONFIG_REALLY_VIRTFS) += virtio-9p
|
||||
obj-y += rwhandler.o
|
||||
obj-$(CONFIG_KVM) += kvm.o kvm-all.o
|
||||
obj-$(CONFIG_NO_KVM) += kvm-stub.o
|
|
@ -0,0 +1,13 @@
|
|||
Index: qemu-0.14.0/Makefile
|
||||
===================================================================
|
||||
--- qemu-0.14.0.orig/Makefile
|
||||
+++ qemu-0.14.0/Makefile
|
||||
@@ -235,7 +235,7 @@ install-sysconfig:
|
||||
install: all $(if $(BUILD_DOCS),install-doc) install-sysconfig
|
||||
$(INSTALL_DIR) "$(DESTDIR)$(bindir)"
|
||||
ifneq ($(TOOLS),)
|
||||
- $(INSTALL_PROG) $(STRIP_OPT) $(TOOLS) "$(DESTDIR)$(bindir)"
|
||||
+ $(INSTALL_PROG) $(TOOLS) "$(DESTDIR)$(bindir)"
|
||||
endif
|
||||
ifneq ($(BLOBS),)
|
||||
$(INSTALL_DIR) "$(DESTDIR)$(datadir)"
|
|
@ -1,8 +1,8 @@
|
|||
Index: qemu-0.13.0/Makefile.target
|
||||
Index: qemu-0.14.0/Makefile.target
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/Makefile.target 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/Makefile.target 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -54,6 +54,7 @@
|
||||
--- qemu-0.14.0.orig/Makefile.target
|
||||
+++ qemu-0.14.0/Makefile.target
|
||||
@@ -78,6 +78,7 @@ ifeq ($(TARGET_BASE_ARCH), i386)
|
||||
libobj-y += cpuid.o
|
||||
endif
|
||||
libobj-$(CONFIG_NEED_MMU) += mmu.o
|
||||
|
@ -10,7 +10,7 @@ Index: qemu-0.13.0/Makefile.target
|
|||
libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o
|
||||
|
||||
libobj-y += disas.o
|
||||
@@ -76,6 +77,21 @@
|
||||
@@ -100,6 +101,21 @@ op_helper.o cpu-exec.o: QEMU_CFLAGS += $
|
||||
# cpu_signal_handler() in cpu-exec.c.
|
||||
signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
|
||||
|
||||
|
@ -32,9 +32,9 @@ Index: qemu-0.13.0/Makefile.target
|
|||
#########################################################
|
||||
# Linux user emulator target
|
||||
|
||||
@@ -202,6 +218,10 @@
|
||||
obj-i386-y += debugcon.o multiboot.o
|
||||
@@ -221,6 +237,10 @@ obj-i386-y += debugcon.o multiboot.o
|
||||
obj-i386-y += pc_piix.o
|
||||
obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
|
||||
|
||||
+ifeq ($(TARGET_BASE_ARCH), i386)
|
||||
+QEMU_CFLAGS += -DTARGET_OPENGL_OK
|
||||
|
@ -43,20 +43,20 @@ Index: qemu-0.13.0/Makefile.target
|
|||
# shared objects
|
||||
obj-ppc-y = ppc.o
|
||||
obj-ppc-y += vga.o
|
||||
@@ -301,6 +321,8 @@
|
||||
@@ -331,6 +351,8 @@ main.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
|
||||
|
||||
monitor.o: qemu-monitor.h
|
||||
monitor.o: hmp-commands.h qmp-commands.h
|
||||
|
||||
+LIBS += -lGL -lGLU
|
||||
+
|
||||
$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)
|
||||
|
||||
obj-y += $(addprefix ../, $(common-obj-y))
|
||||
Index: qemu-0.13.0/hw/pixel_ops.h
|
||||
Index: qemu-0.14.0/hw/pixel_ops.h
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/pixel_ops.h 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/pixel_ops.h 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -4,6 +4,12 @@
|
||||
--- qemu-0.14.0.orig/hw/pixel_ops.h
|
||||
+++ qemu-0.14.0/hw/pixel_ops.h
|
||||
@@ -4,6 +4,12 @@ static inline unsigned int rgb_to_pixel8
|
||||
return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6);
|
||||
}
|
||||
|
||||
|
@ -69,20 +69,20 @@ Index: qemu-0.13.0/hw/pixel_ops.h
|
|||
static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g,
|
||||
unsigned int b)
|
||||
{
|
||||
Index: qemu-0.13.0/hw/vmware_vga.c
|
||||
Index: qemu-0.14.0/hw/vmware_vga.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/vmware_vga.c 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -519,6 +519,8 @@
|
||||
--- qemu-0.14.0.orig/hw/vmware_vga.c
|
||||
+++ qemu-0.14.0/hw/vmware_vga.c
|
||||
@@ -517,6 +517,8 @@ static inline void vmsvga_cursor_define(
|
||||
|
||||
#define CMD(f) le32_to_cpu(s->cmd->f)
|
||||
|
||||
+static uint32_t last_cmd;
|
||||
+
|
||||
static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s)
|
||||
static inline int vmsvga_fifo_length(struct vmsvga_state_s *s)
|
||||
{
|
||||
if (!s->config || !s->enable)
|
||||
@@ -528,11 +530,18 @@
|
||||
int num;
|
||||
@@ -530,11 +532,18 @@ static inline int vmsvga_fifo_length(str
|
||||
|
||||
static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s)
|
||||
{
|
||||
|
@ -105,49 +105,51 @@ Index: qemu-0.13.0/hw/vmware_vga.c
|
|||
}
|
||||
|
||||
static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s)
|
||||
@@ -542,12 +551,12 @@
|
||||
@@ -544,7 +553,7 @@ static inline uint32_t vmsvga_fifo_read(
|
||||
|
||||
static void vmsvga_fifo_run(struct vmsvga_state_s *s)
|
||||
{
|
||||
- uint32_t cmd, colour;
|
||||
+ uint32_t colour;
|
||||
int args = 0;
|
||||
int args, len;
|
||||
int x, y, dx, dy, width, height;
|
||||
struct vmsvga_cursor_definition_s cursor;
|
||||
while (!vmsvga_fifo_empty(s))
|
||||
@@ -555,7 +564,7 @@ static void vmsvga_fifo_run(struct vmsvg
|
||||
/* May need to go back to the start of the command if incomplete */
|
||||
cmd_start = s->cmd->stop;
|
||||
|
||||
- switch (cmd = vmsvga_fifo_read(s)) {
|
||||
+ switch (last_cmd = vmsvga_fifo_read(s)) {
|
||||
case SVGA_CMD_UPDATE:
|
||||
case SVGA_CMD_UPDATE_VERBOSE:
|
||||
x = vmsvga_fifo_read(s);
|
||||
@@ -654,7 +663,7 @@
|
||||
len -= 5;
|
||||
@@ -695,7 +704,7 @@ static void vmsvga_fifo_run(struct vmsvg
|
||||
while (args --)
|
||||
vmsvga_fifo_read(s);
|
||||
printf("%s: Unknown command 0x%02x in SVGA command FIFO\n",
|
||||
- __FUNCTION__, cmd);
|
||||
+ __FUNCTION__, last_cmd);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1173,6 +1182,12 @@
|
||||
|
||||
vga_init_vbe(&s->vga);
|
||||
|
||||
rewind:
|
||||
@@ -1216,6 +1225,11 @@ static void vmsvga_init(struct vmsvga_st
|
||||
vga_common_init(&s->vga, vga_ram_size);
|
||||
vga_init(&s->vga);
|
||||
vmstate_register(NULL, 0, &vmstate_vga_common, &s->vga);
|
||||
+#ifdef EMBED_STDVGA
|
||||
+ s->vga.map_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS;
|
||||
+ s->vga.map_end = VBE_DISPI_LFB_PHYSICAL_ADDRESS + vga_ram_size;
|
||||
+ vga_dirty_log_start(s);
|
||||
+#endif
|
||||
+
|
||||
rom_add_vga(VGABIOS_FILENAME);
|
||||
|
||||
vmsvga_reset(s);
|
||||
Index: qemu-0.13.0/qemu-char.c
|
||||
}
|
||||
Index: qemu-0.14.0/qemu-char.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/qemu-char.c 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/qemu-char.c 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -2278,6 +2278,69 @@
|
||||
return NULL;
|
||||
--- qemu-0.14.0.orig/qemu-char.c
|
||||
+++ qemu-0.14.0/qemu-char.c
|
||||
@@ -2334,6 +2334,69 @@ size_t qemu_chr_mem_osize(const CharDriv
|
||||
return d->outbuf_size;
|
||||
}
|
||||
|
||||
+#define TARGET_OPENGL_OK
|
||||
|
@ -216,7 +218,7 @@ Index: qemu-0.13.0/qemu-char.c
|
|||
QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
|
||||
{
|
||||
char host[65], port[33], width[8], height[8];
|
||||
@@ -2396,6 +2459,10 @@
|
||||
@@ -2452,6 +2515,10 @@ QemuOpts *qemu_chr_parse_compat(const ch
|
||||
qemu_opt_set(opts, "path", filename);
|
||||
return opts;
|
||||
}
|
||||
|
@ -227,7 +229,7 @@ Index: qemu-0.13.0/qemu-char.c
|
|||
|
||||
fail:
|
||||
qemu_opts_del(opts);
|
||||
@@ -2411,6 +2478,7 @@
|
||||
@@ -2467,6 +2534,7 @@ static const struct {
|
||||
{ .name = "udp", .open = qemu_chr_open_udp },
|
||||
{ .name = "msmouse", .open = qemu_chr_open_msmouse },
|
||||
{ .name = "vc", .open = text_console_init },
|
||||
|
@ -235,10 +237,10 @@ Index: qemu-0.13.0/qemu-char.c
|
|||
#ifdef _WIN32
|
||||
{ .name = "file", .open = qemu_chr_open_win_file_out },
|
||||
{ .name = "pipe", .open = qemu_chr_open_win_pipe },
|
||||
Index: qemu-0.13.0/slirp/udp.c
|
||||
Index: qemu-0.14.0/slirp/udp.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/slirp/udp.c 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/slirp/udp.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- qemu-0.14.0.orig/slirp/udp.c
|
||||
+++ qemu-0.14.0/slirp/udp.c
|
||||
@@ -40,6 +40,7 @@
|
||||
|
||||
#include <slirp.h>
|
||||
|
@ -247,7 +249,7 @@ Index: qemu-0.13.0/slirp/udp.c
|
|||
|
||||
static uint8_t udp_tos(struct socket *so);
|
||||
|
||||
@@ -125,6 +126,11 @@
|
||||
@@ -125,6 +126,11 @@ udp_input(register struct mbuf *m, int i
|
||||
goto bad;
|
||||
}
|
||||
|
||||
|
@ -259,11 +261,11 @@ Index: qemu-0.13.0/slirp/udp.c
|
|||
if (slirp->restricted) {
|
||||
goto bad;
|
||||
}
|
||||
Index: qemu-0.13.0/sysemu.h
|
||||
Index: qemu-0.14.0/sysemu.h
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/sysemu.h 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/sysemu.h 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -133,6 +133,7 @@
|
||||
--- qemu-0.14.0.orig/sysemu.h
|
||||
+++ qemu-0.14.0/sysemu.h
|
||||
@@ -136,6 +136,7 @@ extern int semihosting_enabled;
|
||||
extern int old_param;
|
||||
extern int boot_menu;
|
||||
extern QEMUClock *rtc_clock;
|
||||
|
@ -271,10 +273,10 @@ Index: qemu-0.13.0/sysemu.h
|
|||
|
||||
#define MAX_NODES 64
|
||||
extern int nb_numa_nodes;
|
||||
Index: qemu-0.13.0/target-i386/beginend_funcs.sh
|
||||
Index: qemu-0.14.0/target-i386/beginend_funcs.sh
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/beginend_funcs.sh 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/beginend_funcs.sh
|
||||
@@ -0,0 +1,23 @@
|
||||
+#! /bin/sh
|
||||
+# Copyright 2008 (C) Intel Corporation
|
||||
|
@ -299,10 +301,10 @@ Index: qemu-0.13.0/target-i386/beginend_funcs.sh
|
|||
+echo -e MAGIC_MACRO\(glCallList\)\\n
|
||||
+echo -e MAGIC_MACRO\(glCallLists\)\\n
|
||||
+echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n
|
||||
Index: qemu-0.13.0/target-i386/ghash.c
|
||||
Index: qemu-0.14.0/target-i386/ghash.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/ghash.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/ghash.c
|
||||
@@ -0,0 +1,347 @@
|
||||
+/* This is a modified and simplified version of original ghash.c */
|
||||
+
|
||||
|
@ -651,10 +653,10 @@ Index: qemu-0.13.0/target-i386/ghash.c
|
|||
+ hash_node = next;
|
||||
+ }
|
||||
+}
|
||||
Index: qemu-0.13.0/target-i386/ghash.h
|
||||
Index: qemu-0.14.0/target-i386/ghash.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/ghash.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/ghash.h
|
||||
@@ -0,0 +1,59 @@
|
||||
+/* This is a modified and simplified version of original ghash.h */
|
||||
+
|
||||
|
@ -715,10 +717,10 @@ Index: qemu-0.13.0/target-i386/ghash.h
|
|||
+
|
||||
+#endif /* __SIMPLE_HASH_H__ */
|
||||
+
|
||||
Index: qemu-0.13.0/target-i386/gl_func_perso.h
|
||||
Index: qemu-0.14.0/target-i386/gl_func_perso.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/gl_func_perso.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/gl_func_perso.h
|
||||
@@ -0,0 +1,135 @@
|
||||
+/*
|
||||
+ * Hand-implemented GL/GLX API
|
||||
|
@ -855,11 +857,11 @@ Index: qemu-0.13.0/target-i386/gl_func_perso.h
|
|||
+MAGIC_MACRO(_glGetSelectBuffer_fake),
|
||||
+MAGIC_MACRO(_glFeedbackBuffer_fake),
|
||||
+MAGIC_MACRO(_glGetFeedbackBuffer_fake),
|
||||
Index: qemu-0.13.0/target-i386/helper.c
|
||||
Index: qemu-0.14.0/target-i386/helper.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/target-i386/helper.c 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/target-i386/helper.c 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -914,7 +914,7 @@
|
||||
--- qemu-0.14.0.orig/target-i386/helper.c
|
||||
+++ qemu-0.14.0/target-i386/helper.c
|
||||
@@ -962,7 +962,7 @@ target_phys_addr_t cpu_get_phys_page_deb
|
||||
}
|
||||
|
||||
page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1);
|
||||
|
@ -868,21 +870,21 @@ Index: qemu-0.13.0/target-i386/helper.c
|
|||
return paddr;
|
||||
}
|
||||
|
||||
Index: qemu-0.13.0/target-i386/helper.h
|
||||
Index: qemu-0.14.0/target-i386/helper.h
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/target-i386/helper.h 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/target-i386/helper.h 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -217,4 +217,6 @@
|
||||
--- qemu-0.14.0.orig/target-i386/helper.h
|
||||
+++ qemu-0.14.0/target-i386/helper.h
|
||||
@@ -217,4 +217,6 @@ DEF_HELPER_2(rclq, tl, tl, tl)
|
||||
DEF_HELPER_2(rcrq, tl, tl, tl)
|
||||
#endif
|
||||
|
||||
+DEF_HELPER_0(opengl, void)
|
||||
+
|
||||
#include "def-helper.h"
|
||||
Index: qemu-0.13.0/target-i386/helper_opengl.c
|
||||
Index: qemu-0.14.0/target-i386/helper_opengl.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/helper_opengl.c 2011-01-17 16:44:27.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/helper_opengl.c
|
||||
@@ -0,0 +1,1207 @@
|
||||
+/*
|
||||
+ * Host-side implementation of GL/GLX API
|
||||
|
@ -1300,7 +1302,7 @@ Index: qemu-0.13.0/target-i386/helper_opengl.c
|
|||
+
|
||||
+ printf("oops\n");
|
||||
+
|
||||
+ /* if (show_stack_from_signal_handler && counter == 1) { struct ucontext*
|
||||
+ /* if (show_stack_from_signal_handler && counter == 1) { struct ucontext*
|
||||
+ * ctxt = (struct ucontext*)ptr; show_stack_from_signal_handler(10,
|
||||
+ * ctxt->uc_mcontext.gregs[REG_EBP], ctxt->uc_mcontext.gregs[REG_ESP]); } */
|
||||
+ anticrash_handler(ptr);
|
||||
|
@ -2091,11 +2093,11 @@ Index: qemu-0.13.0/target-i386/helper_opengl.c
|
|||
+ io_register();
|
||||
+}
|
||||
+#endif
|
||||
Index: qemu-0.13.0/target-i386/kvm.c
|
||||
Index: qemu-0.14.0/target-i386/kvm.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/target-i386/kvm.c 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/target-i386/kvm.c 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -746,7 +746,7 @@
|
||||
--- qemu-0.14.0.orig/target-i386/kvm.c
|
||||
+++ qemu-0.14.0/target-i386/kvm.c
|
||||
@@ -957,7 +957,7 @@ static int kvm_get_xcrs(CPUState *env)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -2104,10 +2106,10 @@ Index: qemu-0.13.0/target-i386/kvm.c
|
|||
{
|
||||
struct kvm_sregs sregs;
|
||||
uint32_t hflags;
|
||||
Index: qemu-0.13.0/target-i386/mesa_enums.c
|
||||
Index: qemu-0.14.0/target-i386/mesa_enums.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/mesa_enums.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/mesa_enums.c
|
||||
@@ -0,0 +1,4890 @@
|
||||
+/* DO NOT EDIT - This file generated automatically by gl_enums.py (from Mesa) script */
|
||||
+
|
||||
|
@ -6999,10 +7001,10 @@ Index: qemu-0.13.0/target-i386/mesa_enums.c
|
|||
+}
|
||||
+
|
||||
+
|
||||
Index: qemu-0.13.0/target-i386/mesa_get.c
|
||||
Index: qemu-0.14.0/target-i386/mesa_get.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/mesa_get.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/mesa_get.c
|
||||
@@ -0,0 +1,5563 @@
|
||||
+
|
||||
+/***
|
||||
|
@ -12567,10 +12569,10 @@ Index: qemu-0.13.0/target-i386/mesa_get.c
|
|||
+ params[i] = (GLdouble) values[i];
|
||||
+}
|
||||
+
|
||||
Index: qemu-0.13.0/target-i386/mesa_gl.h
|
||||
Index: qemu-0.14.0/target-i386/mesa_gl.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/mesa_gl.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/mesa_gl.h
|
||||
@@ -0,0 +1,2251 @@
|
||||
+/*
|
||||
+ * Mesa 3-D graphics library
|
||||
|
@ -14823,10 +14825,10 @@ Index: qemu-0.13.0/target-i386/mesa_gl.h
|
|||
+#endif
|
||||
+
|
||||
+#endif /* __gl_h_ */
|
||||
Index: qemu-0.13.0/target-i386/mesa_glext.h
|
||||
Index: qemu-0.14.0/target-i386/mesa_glext.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/mesa_glext.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/mesa_glext.h
|
||||
@@ -0,0 +1,7279 @@
|
||||
+#ifndef __glext_h_
|
||||
+#define __glext_h_
|
||||
|
@ -22107,10 +22109,10 @@ Index: qemu-0.13.0/target-i386/mesa_glext.h
|
|||
+
|
||||
+/* ERO */
|
||||
+GLAPI void GLAPIENTRY fake_gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data);
|
||||
Index: qemu-0.13.0/target-i386/mesa_glu.h
|
||||
Index: qemu-0.14.0/target-i386/mesa_glu.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/mesa_glu.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/mesa_glu.h
|
||||
@@ -0,0 +1,354 @@
|
||||
+/*
|
||||
+** License Applicability. Except to the extent portions of this file are
|
||||
|
@ -22466,10 +22468,10 @@ Index: qemu-0.13.0/target-i386/mesa_glu.h
|
|||
+#endif
|
||||
+
|
||||
+#endif /* __glu_h__ */
|
||||
Index: qemu-0.13.0/target-i386/mesa_glx.h
|
||||
Index: qemu-0.14.0/target-i386/mesa_glx.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/mesa_glx.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/mesa_glx.h
|
||||
@@ -0,0 +1,510 @@
|
||||
+/*
|
||||
+ * Mesa 3-D graphics library
|
||||
|
@ -22981,10 +22983,10 @@ Index: qemu-0.13.0/target-i386/mesa_glx.h
|
|||
+#endif
|
||||
+
|
||||
+#endif
|
||||
Index: qemu-0.13.0/target-i386/mesa_glxext.h
|
||||
Index: qemu-0.14.0/target-i386/mesa_glxext.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/mesa_glxext.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/mesa_glxext.h
|
||||
@@ -0,0 +1,785 @@
|
||||
+#ifndef __glxext_h_
|
||||
+#define __glxext_h_
|
||||
|
@ -22995,7 +22997,7 @@ Index: qemu-0.13.0/target-i386/mesa_glxext.h
|
|||
+
|
||||
+/*
|
||||
+** Copyright (c) 2007 The Khronos Group Inc.
|
||||
+**
|
||||
+**
|
||||
+** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
+** copy of this software and/or associated documentation files (the
|
||||
+** "Materials"), to deal in the Materials without restriction, including
|
||||
|
@ -23003,10 +23005,10 @@ Index: qemu-0.13.0/target-i386/mesa_glxext.h
|
|||
+** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
+** permit persons to whom the Materials are furnished to do so, subject to
|
||||
+** the following conditions:
|
||||
+**
|
||||
+**
|
||||
+** The above copyright notice and this permission notice shall be included
|
||||
+** in all copies or substantial portions of the Materials.
|
||||
+**
|
||||
+**
|
||||
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
|
@ -23771,10 +23773,10 @@ Index: qemu-0.13.0/target-i386/mesa_glxext.h
|
|||
+#endif
|
||||
+
|
||||
+#endif
|
||||
Index: qemu-0.13.0/target-i386/mesa_mipmap.c
|
||||
Index: qemu-0.14.0/target-i386/mesa_mipmap.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/mesa_mipmap.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/mesa_mipmap.c
|
||||
@@ -0,0 +1,824 @@
|
||||
+
|
||||
+/*
|
||||
|
@ -24600,10 +24602,10 @@ Index: qemu-0.13.0/target-i386/mesa_mipmap.c
|
|||
+
|
||||
+ return retval;
|
||||
+}
|
||||
Index: qemu-0.13.0/target-i386/opengl_exec.c
|
||||
Index: qemu-0.14.0/target-i386/opengl_exec.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/opengl_exec.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/opengl_exec.c
|
||||
@@ -0,0 +1,3931 @@
|
||||
+/*
|
||||
+ * Host-side implementation of GL/GLX API
|
||||
|
@ -24820,7 +24822,7 @@ Index: qemu-0.13.0/target-i386/opengl_exec.c
|
|||
+
|
||||
+ XSync(dpy, 0);
|
||||
+
|
||||
+ /*
|
||||
+ /*
|
||||
+ * int loop = 1; while (loop) { while (XPending(dpy) > 0) { XEvent event;
|
||||
+ * XNextEvent(dpy, &event); switch (event.type) { case CreateNotify: { if
|
||||
+ * (((XCreateWindowEvent*)&event)->window == win) { loop = 0; } break; } }
|
||||
|
@ -27323,7 +27325,7 @@ Index: qemu-0.13.0/target-i386/opengl_exec.c
|
|||
+ process->current_state->normalPointerSize);
|
||||
+ memcpy(process->current_state->normalPointer + offset,
|
||||
+ (void *) args[4], bytes_size);
|
||||
+ // fprintf(stderr, "glNormalPointer_fake_func type=%d, stride=%d,
|
||||
+ // fprintf(stderr, "glNormalPointer_fake_func type=%d, stride=%d,
|
||||
+ // byte_size=%d\n", type, stride, bytes_size);
|
||||
+ glNormalPointer(type, stride,
|
||||
+ process->current_state->normalPointer);
|
||||
|
@ -27547,7 +27549,7 @@ Index: qemu-0.13.0/target-i386/opengl_exec.c
|
|||
+ process->current_state->texCoordPointerSize[index]);
|
||||
+ memcpy(process->current_state->texCoordPointer[index] + offset,
|
||||
+ (void *) args[6], bytes_size);
|
||||
+ /* fprintf(stderr, "glTexCoordPointer_fake_func size=%d, type=%d,
|
||||
+ /* fprintf(stderr, "glTexCoordPointer_fake_func size=%d, type=%d,
|
||||
+ * stride=%d, byte_size=%d\n", size, type, stride, bytes_size); */
|
||||
+ do_glClientActiveTextureARB(GL_TEXTURE0_ARB + index);
|
||||
+ glTexCoordPointer(size, type, stride,
|
||||
|
@ -28423,36 +28425,36 @@ Index: qemu-0.13.0/target-i386/opengl_exec.c
|
|||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ /*
|
||||
+ * case glEnableClientState_func: { if (display_function_call)
|
||||
+ * fprintf(stderr, "cap : %s\n", nameArrays[args[0] -
|
||||
+ * GL_VERTEX_ARRAY]); glEnableClientState(args[0]); break; }
|
||||
+ *
|
||||
+ *
|
||||
+ * case glDisableClientState_func: { if (display_function_call)
|
||||
+ * fprintf(stderr, "cap : %s\n", nameArrays[args[0] -
|
||||
+ * GL_VERTEX_ARRAY]); glDisableClientState(args[0]); break; }
|
||||
+ *
|
||||
+ *
|
||||
+ * case glClientActiveTexture_func: case
|
||||
+ * glClientActiveTextureARB_func: { if (display_function_call)
|
||||
+ * fprintf(stderr, "client activeTexture %d\n", args[0] -
|
||||
+ * GL_TEXTURE0_ARB); glClientActiveTextureARB(args[0]); break; }
|
||||
+ *
|
||||
+ *
|
||||
+ * case glActiveTextureARB_func: { if (display_function_call)
|
||||
+ * fprintf(stderr, "server activeTexture %d\n", args[0] -
|
||||
+ * GL_TEXTURE0_ARB); glActiveTextureARB(args[0]); break; }
|
||||
+ *
|
||||
+ *
|
||||
+ * case glLockArraysEXT_func: break;
|
||||
+ *
|
||||
+ *
|
||||
+ * case glUnlockArraysEXT_func: break;
|
||||
+ *
|
||||
+ *
|
||||
+ * case glArrayElement_func: { glArrayElement(args[0]); break; }
|
||||
+ *
|
||||
+ *
|
||||
+ * case glDrawArrays_func: { glDrawArrays(args[0],args[1],args[2]);
|
||||
+ * break; }
|
||||
+ *
|
||||
+ *
|
||||
+ * case glDrawElements_func: {
|
||||
+ * glDrawElements(args[0],args[1],args[2],(void*)args[3]); break; }
|
||||
+ *
|
||||
+ *
|
||||
+ * case glDrawRangeElements_func: {
|
||||
+ * glDrawRangeElements(args[0],args[1],args[2],args[3],args[4],(void*)args[5]);
|
||||
+ * break; } */
|
||||
|
@ -28536,10 +28538,10 @@ Index: qemu-0.13.0/target-i386/opengl_exec.c
|
|||
+
|
||||
+ return ret_int;
|
||||
+}
|
||||
Index: qemu-0.13.0/target-i386/opengl_func.h
|
||||
Index: qemu-0.14.0/target-i386/opengl_func.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/opengl_func.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/opengl_func.h
|
||||
@@ -0,0 +1,1108 @@
|
||||
+/*
|
||||
+ * Main header for both host and guest sides
|
||||
|
@ -29649,10 +29651,10 @@ Index: qemu-0.13.0/target-i386/opengl_func.h
|
|||
+#error Unsupported ABI
|
||||
+#endif
|
||||
+#endif
|
||||
Index: qemu-0.13.0/target-i386/opengl_player.c
|
||||
Index: qemu-0.14.0/target-i386/opengl_player.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/opengl_player.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/opengl_player.c
|
||||
@@ -0,0 +1,1461 @@
|
||||
+/*
|
||||
+ * Plays a sequence of OpenGL calls recorded either under qemu or with opengl_server
|
||||
|
@ -30109,13 +30111,13 @@ Index: qemu-0.13.0/target-i386/opengl_player.c
|
|||
+ }
|
||||
+ // fwrite(&func_number, sizeof(short), 1, fopcodes);
|
||||
+
|
||||
+ /*
|
||||
+ /*
|
||||
+ * instrWindow[instrWindowPtr] = func_number; instrWindowPtr++; if
|
||||
+ * (instrWindowPtr == INSTR_WINDOW_SIZE) instrWindowPtr = 0;
|
||||
+ * instrWindowCount++; if (instrWindowCount >= INSTR_WINDOW_SIZE) {
|
||||
+ * if ((instrWindowCount % (INSTR_WINDOW_SIZE / 2)) == 0)
|
||||
+ * find_repeated_seq(instrWindow, instrWindowBeginPtr,
|
||||
+ * INSTR_WINDOW_SIZE); instrWindowBeginPtr++; if (instrWindowBeginPtr
|
||||
+ * INSTR_WINDOW_SIZE); instrWindowBeginPtr++; if (instrWindowBeginPtr
|
||||
+ * == INSTR_WINDOW_SIZE) instrWindowBeginPtr = 0; } */
|
||||
+
|
||||
+ /* -1 is special code that indicates time synchro */
|
||||
|
@ -31115,10 +31117,10 @@ Index: qemu-0.13.0/target-i386/opengl_player.c
|
|||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
Index: qemu-0.13.0/target-i386/opengl_server.c
|
||||
Index: qemu-0.14.0/target-i386/opengl_server.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/opengl_server.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/opengl_server.c
|
||||
@@ -0,0 +1,826 @@
|
||||
+/*
|
||||
+ * TCP/IP OpenGL server
|
||||
|
@ -31946,10 +31948,10 @@ Index: qemu-0.13.0/target-i386/opengl_server.c
|
|||
+
|
||||
+ return 0;
|
||||
+}
|
||||
Index: qemu-0.13.0/target-i386/opengl_utils.h
|
||||
Index: qemu-0.14.0/target-i386/opengl_utils.h
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/opengl_utils.h 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/opengl_utils.h
|
||||
@@ -0,0 +1,453 @@
|
||||
+/*
|
||||
+ * Functions used by host & client sides
|
||||
|
@ -32404,10 +32406,10 @@ Index: qemu-0.13.0/target-i386/opengl_utils.h
|
|||
+}
|
||||
+
|
||||
+#endif
|
||||
Index: qemu-0.13.0/target-i386/parse_gl_h.c
|
||||
Index: qemu-0.14.0/target-i386/parse_gl_h.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/parse_gl_h.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/parse_gl_h.c
|
||||
@@ -0,0 +1,1496 @@
|
||||
+/*
|
||||
+ * Parse gl.h et glx.h to auto-generate source code
|
||||
|
@ -33905,10 +33907,10 @@ Index: qemu-0.13.0/target-i386/parse_gl_h.c
|
|||
+
|
||||
+ return 0;
|
||||
+}
|
||||
Index: qemu-0.13.0/target-i386/parse_mesa_get_c.c
|
||||
Index: qemu-0.14.0/target-i386/parse_mesa_get_c.c
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ qemu-0.13.0/target-i386/parse_mesa_get_c.c 2011-01-17 16:42:36.000000000 +0800
|
||||
--- /dev/null
|
||||
+++ qemu-0.14.0/target-i386/parse_mesa_get_c.c
|
||||
@@ -0,0 +1,225 @@
|
||||
+/*
|
||||
+ * Parse the "get.c" from mesa source tree to generate "glgetv_cst.h"
|
||||
|
@ -34135,11 +34137,11 @@ Index: qemu-0.13.0/target-i386/parse_mesa_get_c.c
|
|||
+ fclose(outf);
|
||||
+ return 0;
|
||||
+}
|
||||
Index: qemu-0.13.0/target-i386/translate.c
|
||||
Index: qemu-0.14.0/target-i386/translate.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/target-i386/translate.c 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/target-i386/translate.c 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -745,6 +745,8 @@
|
||||
--- qemu-0.14.0.orig/target-i386/translate.c
|
||||
+++ qemu-0.14.0/target-i386/translate.c
|
||||
@@ -723,6 +723,8 @@ static void gen_check_io(DisasContext *s
|
||||
int state_saved;
|
||||
target_ulong next_eip;
|
||||
|
||||
|
@ -34148,7 +34150,7 @@ Index: qemu-0.13.0/target-i386/translate.c
|
|||
state_saved = 0;
|
||||
if (s->pe && (s->cpl > s->iopl || s->vm86)) {
|
||||
if (s->cc_op != CC_OP_DYNAMIC)
|
||||
@@ -2672,11 +2674,18 @@
|
||||
@@ -2650,11 +2652,18 @@ static void gen_exception(DisasContext *
|
||||
s->is_jmp = DISAS_TB_JUMP;
|
||||
}
|
||||
|
||||
|
@ -34167,11 +34169,11 @@ Index: qemu-0.13.0/target-i386/translate.c
|
|||
if (s->cc_op != CC_OP_DYNAMIC)
|
||||
gen_op_set_cc_op(s->cc_op);
|
||||
gen_jmp_im(cur_eip);
|
||||
Index: qemu-0.13.0/vl.c
|
||||
Index: qemu-0.14.0/vl.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/vl.c 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/vl.c 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -217,12 +217,14 @@
|
||||
--- qemu-0.14.0.orig/vl.c
|
||||
+++ qemu-0.14.0/vl.c
|
||||
@@ -222,12 +222,14 @@ QEMUOptionRom option_rom[MAX_OPTION_ROMS
|
||||
int nb_option_roms;
|
||||
int semihosting_enabled = 0;
|
||||
int old_param = 0;
|
||||
|
@ -34184,18 +34186,18 @@ Index: qemu-0.13.0/vl.c
|
|||
int boot_menu;
|
||||
+extern int enable_gl;
|
||||
|
||||
int nb_numa_nodes;
|
||||
uint64_t node_mem[MAX_NODES];
|
||||
@@ -1433,6 +1435,8 @@
|
||||
} else if (strstart(p, "xenfb", &opts)) {
|
||||
vga_interface_type = VGA_XENFB;
|
||||
typedef struct FWBootEntry FWBootEntry;
|
||||
|
||||
@@ -1525,6 +1527,8 @@ static void select_vgahw (const char *p)
|
||||
} else if (strstart(p, "qxl", &opts)) {
|
||||
vga_interface_type = VGA_QXL;
|
||||
} else if (!strstart(p, "none", &opts)) {
|
||||
+ }
|
||||
+ else {
|
||||
invalid_vga:
|
||||
fprintf(stderr, "Unknown vga type: %s\n", p);
|
||||
exit(1);
|
||||
@@ -2535,6 +2539,9 @@
|
||||
@@ -2648,6 +2652,9 @@ int main(int argc, char **argv, char **e
|
||||
case QEMU_OPTION_old_param:
|
||||
old_param = 1;
|
||||
break;
|
||||
|
@ -34205,7 +34207,7 @@ Index: qemu-0.13.0/vl.c
|
|||
case QEMU_OPTION_clock:
|
||||
configure_alarms(optarg);
|
||||
break;
|
||||
@@ -2548,6 +2555,12 @@
|
||||
@@ -2661,6 +2668,12 @@ int main(int argc, char **argv, char **e
|
||||
}
|
||||
configure_rtc(opts);
|
||||
break;
|
||||
|
@ -34218,7 +34220,7 @@ Index: qemu-0.13.0/vl.c
|
|||
case QEMU_OPTION_tb_size:
|
||||
tb_size = strtol(optarg, NULL, 0);
|
||||
if (tb_size < 0)
|
||||
@@ -2887,6 +2900,14 @@
|
||||
@@ -3018,6 +3031,14 @@ int main(int argc, char **argv, char **e
|
||||
if (foreach_device_config(DEV_USB, usb_parse) < 0)
|
||||
exit(1);
|
||||
}
|
||||
|
@ -34232,12 +34234,12 @@ Index: qemu-0.13.0/vl.c
|
|||
+#endif
|
||||
|
||||
/* init generic devices */
|
||||
if (qemu_opts_foreach(&qemu_device_opts, device_init_func, NULL, 1) != 0)
|
||||
Index: qemu-0.13.0/qemu-options.hx
|
||||
if (qemu_opts_foreach(qemu_find_opts("device"), device_init_func, NULL, 1) != 0)
|
||||
Index: qemu-0.14.0/qemu-options.hx
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/qemu-options.hx 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/qemu-options.hx 2011-01-17 16:44:27.000000000 +0800
|
||||
@@ -2024,6 +2024,18 @@
|
||||
--- qemu-0.14.0.orig/qemu-options.hx
|
||||
+++ qemu-0.14.0/qemu-options.hx
|
||||
@@ -2118,6 +2118,18 @@ many timer interrupts were not processed
|
||||
re-inject them.
|
||||
ETEXI
|
||||
|
||||
|
@ -34256,11 +34258,11 @@ Index: qemu-0.13.0/qemu-options.hx
|
|||
DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
|
||||
"-icount [N|auto]\n" \
|
||||
" enable virtual instruction counter with 2^N clock ticks per\n" \
|
||||
Index: qemu-0.13.0/ui/sdl.c
|
||||
Index: qemu-0.14.0/ui/sdl.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/ui/sdl.c 2011-01-17 16:41:59.000000000 +0800
|
||||
+++ qemu-0.13.0/ui/sdl.c 2011-01-17 16:42:36.000000000 +0800
|
||||
@@ -59,6 +59,8 @@
|
||||
--- qemu-0.14.0.orig/ui/sdl.c
|
||||
+++ qemu-0.14.0/ui/sdl.c
|
||||
@@ -63,6 +63,8 @@ static SDL_PixelFormat host_format;
|
||||
static int scaling_active = 0;
|
||||
static Notifier mouse_mode_notifier;
|
||||
|
||||
|
@ -34269,7 +34271,7 @@ Index: qemu-0.13.0/ui/sdl.c
|
|||
static void sdl_update(DisplayState *ds, int x, int y, int w, int h)
|
||||
{
|
||||
// printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h);
|
||||
@@ -121,12 +123,22 @@
|
||||
@@ -119,12 +121,22 @@ static void do_sdl_resize(int new_width,
|
||||
|
||||
static void sdl_resize(DisplayState *ds)
|
||||
{
|
||||
|
@ -34293,7 +34295,7 @@ Index: qemu-0.13.0/ui/sdl.c
|
|||
} else {
|
||||
if (guest_screen != NULL) {
|
||||
SDL_FreeSurface(guest_screen);
|
||||
@@ -455,7 +467,7 @@
|
||||
@@ -457,7 +469,7 @@ static void sdl_show_cursor(void)
|
||||
|
||||
if (!kbd_mouse_is_absolute()) {
|
||||
SDL_ShowCursor(1);
|
||||
|
@ -34302,7 +34304,7 @@ Index: qemu-0.13.0/ui/sdl.c
|
|||
(gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
|
||||
SDL_SetCursor(guest_sprite);
|
||||
else
|
||||
@@ -466,7 +478,8 @@
|
||||
@@ -468,7 +480,8 @@ static void sdl_show_cursor(void)
|
||||
static void sdl_grab_start(void)
|
||||
{
|
||||
if (guest_cursor) {
|
||||
|
@ -34312,7 +34314,7 @@ Index: qemu-0.13.0/ui/sdl.c
|
|||
if (!kbd_mouse_is_absolute() && !absolute_enabled)
|
||||
SDL_WarpMouse(guest_x, guest_y);
|
||||
} else
|
||||
@@ -768,7 +781,8 @@
|
||||
@@ -770,7 +783,8 @@ static void sdl_mouse_warp(int x, int y,
|
||||
if (!guest_cursor)
|
||||
sdl_show_cursor();
|
||||
if (gui_grab || kbd_mouse_is_absolute() || absolute_enabled) {
|
||||
|
@ -34322,7 +34324,7 @@ Index: qemu-0.13.0/ui/sdl.c
|
|||
if (!kbd_mouse_is_absolute() && !absolute_enabled)
|
||||
SDL_WarpMouse(x, y);
|
||||
}
|
||||
@@ -796,7 +810,7 @@
|
||||
@@ -798,7 +812,7 @@ static void sdl_mouse_define(QEMUCursor
|
||||
qemu_free(image);
|
||||
qemu_free(mask);
|
||||
|
||||
|
@ -34331,7 +34333,7 @@ Index: qemu-0.13.0/ui/sdl.c
|
|||
(gui_grab || kbd_mouse_is_absolute() || absolute_enabled))
|
||||
SDL_SetCursor(guest_sprite);
|
||||
}
|
||||
@@ -813,6 +827,7 @@
|
||||
@@ -815,6 +829,7 @@ void sdl_display_init(DisplayState *ds,
|
||||
int flags;
|
||||
uint8_t data = 0;
|
||||
DisplayAllocator *da;
|
||||
|
@ -34339,7 +34341,7 @@ Index: qemu-0.13.0/ui/sdl.c
|
|||
const SDL_VideoInfo *vi;
|
||||
|
||||
#if defined(__APPLE__)
|
||||
@@ -842,6 +857,12 @@
|
||||
@@ -848,6 +863,12 @@ void sdl_display_init(DisplayState *ds,
|
||||
vi = SDL_GetVideoInfo();
|
||||
host_format = *(vi->vfmt);
|
||||
|
||||
|
@ -34352,7 +34354,7 @@ Index: qemu-0.13.0/ui/sdl.c
|
|||
dcl = qemu_mallocz(sizeof(DisplayChangeListener));
|
||||
dcl->dpy_update = sdl_update;
|
||||
dcl->dpy_resize = sdl_resize;
|
||||
@@ -876,4 +897,9 @@
|
||||
@@ -882,4 +903,9 @@ void sdl_display_init(DisplayState *ds,
|
||||
gui_fullscreen_initial_grab = 1;
|
||||
sdl_grab_start();
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
# fix VMware VGA driver depth calculation error, which may cause segmentation fault
|
||||
#
|
||||
# ktian1, 06/29/2010
|
||||
Index: qemu-0.13.0/console.h
|
||||
Index: qemu-0.14.0/console.h
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/console.h 2011-01-17 16:41:58.000000000 +0800
|
||||
+++ qemu-0.13.0/console.h 2011-01-17 16:48:00.000000000 +0800
|
||||
@@ -171,6 +171,12 @@
|
||||
--- qemu-0.14.0.orig/console.h
|
||||
+++ qemu-0.14.0/console.h
|
||||
@@ -171,6 +171,12 @@ struct DisplayAllocator {
|
||||
void (*free_displaysurface)(DisplaySurface *surface);
|
||||
};
|
||||
|
||||
|
@ -18,7 +18,7 @@ Index: qemu-0.13.0/console.h
|
|||
struct DisplayState {
|
||||
struct DisplaySurface *surface;
|
||||
void *opaque;
|
||||
@@ -178,6 +184,7 @@
|
||||
@@ -178,6 +184,7 @@ struct DisplayState {
|
||||
|
||||
struct DisplayAllocator* allocator;
|
||||
struct DisplayChangeListener* listeners;
|
||||
|
@ -26,7 +26,7 @@ Index: qemu-0.13.0/console.h
|
|||
|
||||
void (*mouse_set)(int x, int y, int on);
|
||||
void (*cursor_define)(QEMUCursor *cursor);
|
||||
@@ -229,6 +236,12 @@
|
||||
@@ -229,6 +236,12 @@ static inline void register_displaychang
|
||||
ds->listeners = dcl;
|
||||
}
|
||||
|
||||
|
@ -39,11 +39,11 @@ Index: qemu-0.13.0/console.h
|
|||
static inline void dpy_update(DisplayState *s, int x, int y, int w, int h)
|
||||
{
|
||||
struct DisplayChangeListener *dcl = s->listeners;
|
||||
Index: qemu-0.13.0/hw/vmware_vga.c
|
||||
Index: qemu-0.14.0/hw/vmware_vga.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/hw/vmware_vga.c 2011-01-17 16:42:36.000000000 +0800
|
||||
+++ qemu-0.13.0/hw/vmware_vga.c 2011-01-17 16:48:00.000000000 +0800
|
||||
@@ -957,8 +957,9 @@
|
||||
--- qemu-0.14.0.orig/hw/vmware_vga.c
|
||||
+++ qemu-0.14.0/hw/vmware_vga.c
|
||||
@@ -1001,8 +1001,9 @@ static void vmsvga_update_display(void *
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,7 @@ Index: qemu-0.13.0/hw/vmware_vga.c
|
|||
s->index = 0;
|
||||
s->enable = 0;
|
||||
s->config = 0;
|
||||
@@ -1163,6 +1164,8 @@
|
||||
@@ -1207,6 +1208,8 @@ static const VMStateDescription vmstate_
|
||||
|
||||
static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size)
|
||||
{
|
||||
|
@ -63,9 +63,9 @@ Index: qemu-0.13.0/hw/vmware_vga.c
|
|||
s->scratch_size = SVGA_SCRATCH_SIZE;
|
||||
s->scratch = qemu_malloc(s->scratch_size * 4);
|
||||
|
||||
@@ -1190,7 +1193,10 @@
|
||||
|
||||
rom_add_vga(VGABIOS_FILENAME);
|
||||
@@ -1224,7 +1227,10 @@ static void vmsvga_init(struct vmsvga_st
|
||||
vga_init(&s->vga);
|
||||
vmstate_register(NULL, 0, &vmstate_vga_common, &s->vga);
|
||||
|
||||
- vmsvga_reset(s);
|
||||
+ dpc = qemu_mallocz(sizeof(DisplayPostCallback));
|
||||
|
@ -75,11 +75,11 @@ Index: qemu-0.13.0/hw/vmware_vga.c
|
|||
}
|
||||
|
||||
static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num,
|
||||
Index: qemu-0.13.0/qemu-common.h
|
||||
Index: qemu-0.14.0/qemu-common.h
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/qemu-common.h 2011-01-17 16:41:58.000000000 +0800
|
||||
+++ qemu-0.13.0/qemu-common.h 2011-01-17 16:48:00.000000000 +0800
|
||||
@@ -205,6 +205,7 @@
|
||||
--- qemu-0.14.0.orig/qemu-common.h
|
||||
+++ qemu-0.14.0/qemu-common.h
|
||||
@@ -241,6 +241,7 @@ typedef struct DisplayState DisplayState
|
||||
typedef struct DisplayChangeListener DisplayChangeListener;
|
||||
typedef struct DisplaySurface DisplaySurface;
|
||||
typedef struct DisplayAllocator DisplayAllocator;
|
||||
|
@ -87,22 +87,22 @@ Index: qemu-0.13.0/qemu-common.h
|
|||
typedef struct PixelFormat PixelFormat;
|
||||
typedef struct TextConsole TextConsole;
|
||||
typedef TextConsole QEMUConsole;
|
||||
Index: qemu-0.13.0/vl.c
|
||||
Index: qemu-0.14.0/vl.c
|
||||
===================================================================
|
||||
--- qemu-0.13.0.orig/vl.c 2011-01-17 16:42:36.000000000 +0800
|
||||
+++ qemu-0.13.0/vl.c 2011-01-17 16:48:00.000000000 +0800
|
||||
@@ -1814,6 +1814,7 @@
|
||||
--- qemu-0.14.0.orig/vl.c
|
||||
+++ qemu-0.14.0/vl.c
|
||||
@@ -1920,6 +1920,7 @@ int main(int argc, char **argv, char **e
|
||||
char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */
|
||||
DisplayState *ds;
|
||||
DisplayChangeListener *dcl;
|
||||
+ DisplayPostCallback *dpc;
|
||||
int cyls, heads, secs, translation;
|
||||
QemuOpts *hda_opts = NULL, *opts;
|
||||
int optind;
|
||||
@@ -2960,6 +2961,13 @@
|
||||
}
|
||||
dpy_resize(ds);
|
||||
QemuOptsList *olist;
|
||||
@@ -3101,6 +3102,13 @@ int main(int argc, char **argv, char **e
|
||||
|
||||
/* display setup */
|
||||
dpy_resize(ds);
|
||||
+ dpc = ds->postcalls;
|
||||
+ while (dpc != NULL) {
|
||||
+ if (dpc->postcall != NULL)
|
|
@ -10,10 +10,10 @@ committer Andrzej Zaborowski <andrew.zaborowski@intel.com> Tue, 16 Jun 2009 22:2
|
|||
target-i386/opengl_exec.c | 31 ++++++++++++++++---------------
|
||||
1 files changed, 16 insertions(+), 15 deletions(-)
|
||||
|
||||
Index: qemu/target-i386/opengl_exec.c
|
||||
Index: qemu-0.14.0/target-i386/opengl_exec.c
|
||||
===================================================================
|
||||
--- qemu.orig/target-i386/opengl_exec.c 2010-05-10 18:46:43.175394992 -0400
|
||||
+++ qemu/target-i386/opengl_exec.c 2010-05-10 18:46:43.218419933 -0400
|
||||
--- qemu-0.14.0.orig/target-i386/opengl_exec.c
|
||||
+++ qemu-0.14.0/target-i386/opengl_exec.c
|
||||
@@ -1600,10 +1600,9 @@ int do_function_call(int func_number, ar
|
||||
fprintf(stderr, "client_drawable=%p fake_ctx=%d\n",
|
||||
(void *) client_drawable, fake_ctxt);
|
|
@ -0,0 +1,150 @@
|
|||
Description: spice/qxl: locking fix for qemu-kvm
|
||||
Author: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Source: upstream, http://patchwork.ozlabs.org/patch/84704/
|
||||
Forwarding: not-needed
|
||||
|
||||
Index: qemu-0.14.0/hw/qxl.c
|
||||
===================================================================
|
||||
--- qemu-0.14.0.orig/hw/qxl.c
|
||||
+++ qemu-0.14.0/hw/qxl.c
|
||||
@@ -125,6 +125,27 @@ static void qxl_reset_memslots(PCIQXLDev
|
||||
static void qxl_reset_surfaces(PCIQXLDevice *d);
|
||||
static void qxl_ring_set_dirty(PCIQXLDevice *qxl);
|
||||
|
||||
+/* qemu-kvm locking ... */
|
||||
+void qxl_unlock_iothread(SimpleSpiceDisplay *ssd)
|
||||
+{
|
||||
+ if (cpu_single_env) {
|
||||
+ assert(ssd->env == NULL);
|
||||
+ ssd->env = cpu_single_env;
|
||||
+ cpu_single_env = NULL;
|
||||
+ }
|
||||
+ qemu_mutex_unlock_iothread();
|
||||
+}
|
||||
+
|
||||
+void qxl_lock_iothread(SimpleSpiceDisplay *ssd)
|
||||
+{
|
||||
+ qemu_mutex_lock_iothread();
|
||||
+ if (ssd->env) {
|
||||
+ assert(cpu_single_env == NULL);
|
||||
+ cpu_single_env = ssd->env;
|
||||
+ ssd->env = NULL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static inline uint32_t msb_mask(uint32_t val)
|
||||
{
|
||||
uint32_t mask;
|
||||
@@ -662,10 +683,10 @@ static void qxl_hard_reset(PCIQXLDevice
|
||||
dprint(d, 1, "%s: start%s\n", __FUNCTION__,
|
||||
loadvm ? " (loadvm)" : "");
|
||||
|
||||
- qemu_mutex_unlock_iothread();
|
||||
+ qxl_unlock_iothread(&d->ssd);
|
||||
d->ssd.worker->reset_cursor(d->ssd.worker);
|
||||
d->ssd.worker->reset_image_cache(d->ssd.worker);
|
||||
- qemu_mutex_lock_iothread();
|
||||
+ qxl_lock_iothread(&d->ssd);
|
||||
qxl_reset_surfaces(d);
|
||||
qxl_reset_memslots(d);
|
||||
|
||||
@@ -795,9 +816,9 @@ static void qxl_reset_surfaces(PCIQXLDev
|
||||
{
|
||||
dprint(d, 1, "%s:\n", __FUNCTION__);
|
||||
d->mode = QXL_MODE_UNDEFINED;
|
||||
- qemu_mutex_unlock_iothread();
|
||||
+ qxl_unlock_iothread(&d->ssd);
|
||||
d->ssd.worker->destroy_surfaces(d->ssd.worker);
|
||||
- qemu_mutex_lock_iothread();
|
||||
+ qxl_lock_iothread(&d->ssd);
|
||||
memset(&d->guest_surfaces.cmds, 0, sizeof(d->guest_surfaces.cmds));
|
||||
}
|
||||
|
||||
@@ -866,9 +887,9 @@ static void qxl_destroy_primary(PCIQXLDe
|
||||
dprint(d, 1, "%s\n", __FUNCTION__);
|
||||
|
||||
d->mode = QXL_MODE_UNDEFINED;
|
||||
- qemu_mutex_unlock_iothread();
|
||||
+ qxl_unlock_iothread(&d->ssd);
|
||||
d->ssd.worker->destroy_primary_surface(d->ssd.worker, 0);
|
||||
- qemu_mutex_lock_iothread();
|
||||
+ qxl_lock_iothread(&d->ssd);
|
||||
}
|
||||
|
||||
static void qxl_set_mode(PCIQXLDevice *d, int modenr, int loadvm)
|
||||
@@ -938,10 +959,10 @@ static void ioport_write(void *opaque, u
|
||||
case QXL_IO_UPDATE_AREA:
|
||||
{
|
||||
QXLRect update = d->ram->update_area;
|
||||
- qemu_mutex_unlock_iothread();
|
||||
+ qxl_unlock_iothread(&d->ssd);
|
||||
d->ssd.worker->update_area(d->ssd.worker, d->ram->update_surface,
|
||||
&update, NULL, 0, 0);
|
||||
- qemu_mutex_lock_iothread();
|
||||
+ qxl_lock_iothread(&d->ssd);
|
||||
break;
|
||||
}
|
||||
case QXL_IO_NOTIFY_CMD:
|
||||
Index: qemu-0.14.0/ui/spice-display.c
|
||||
===================================================================
|
||||
--- qemu-0.14.0.orig/ui/spice-display.c
|
||||
+++ qemu-0.14.0/ui/spice-display.c
|
||||
@@ -186,18 +186,18 @@ void qemu_spice_create_host_primary(Simp
|
||||
surface.mem = (intptr_t)ssd->buf;
|
||||
surface.group_id = MEMSLOT_GROUP_HOST;
|
||||
|
||||
- qemu_mutex_unlock_iothread();
|
||||
+ qxl_unlock_iothread(ssd);
|
||||
ssd->worker->create_primary_surface(ssd->worker, 0, &surface);
|
||||
- qemu_mutex_lock_iothread();
|
||||
+ qxl_lock_iothread(ssd);
|
||||
}
|
||||
|
||||
void qemu_spice_destroy_host_primary(SimpleSpiceDisplay *ssd)
|
||||
{
|
||||
dprint(1, "%s:\n", __FUNCTION__);
|
||||
|
||||
- qemu_mutex_unlock_iothread();
|
||||
+ qxl_unlock_iothread(ssd);
|
||||
ssd->worker->destroy_primary_surface(ssd->worker, 0);
|
||||
- qemu_mutex_lock_iothread();
|
||||
+ qxl_lock_iothread(ssd);
|
||||
}
|
||||
|
||||
void qemu_spice_vm_change_state_handler(void *opaque, int running, int reason)
|
||||
@@ -207,9 +207,9 @@ void qemu_spice_vm_change_state_handler(
|
||||
if (running) {
|
||||
ssd->worker->start(ssd->worker);
|
||||
} else {
|
||||
- qemu_mutex_unlock_iothread();
|
||||
+ qxl_unlock_iothread(ssd);
|
||||
ssd->worker->stop(ssd->worker);
|
||||
- qemu_mutex_lock_iothread();
|
||||
+ qxl_lock_iothread(ssd);
|
||||
}
|
||||
ssd->running = running;
|
||||
}
|
||||
Index: qemu-0.14.0/ui/spice-display.h
|
||||
===================================================================
|
||||
--- qemu-0.14.0.orig/ui/spice-display.h
|
||||
+++ qemu-0.14.0/ui/spice-display.h
|
||||
@@ -43,6 +43,9 @@ typedef struct SimpleSpiceDisplay {
|
||||
QXLRect dirty;
|
||||
int notify;
|
||||
int running;
|
||||
+
|
||||
+ /* qemu-kvm locking ... */
|
||||
+ void *env;
|
||||
} SimpleSpiceDisplay;
|
||||
|
||||
typedef struct SimpleSpiceUpdate {
|
||||
@@ -52,6 +55,9 @@ typedef struct SimpleSpiceUpdate {
|
||||
uint8_t *bitmap;
|
||||
} SimpleSpiceUpdate;
|
||||
|
||||
+void qxl_unlock_iothread(SimpleSpiceDisplay *ssd);
|
||||
+void qxl_lock_iothread(SimpleSpiceDisplay *ssd);
|
||||
+
|
||||
int qemu_spice_rect_is_empty(const QXLRect* r);
|
||||
void qemu_spice_rect_union(QXLRect *dest, const QXLRect *r);
|
||||
|
|
@ -3,35 +3,30 @@ require qemu.inc
|
|||
LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
|
||||
file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913"
|
||||
|
||||
PR = "r1"
|
||||
PR = "r0"
|
||||
|
||||
FILESPATH = "${FILE_DIRNAME}/qemu-${PV}"
|
||||
FILESDIR = "${WORKDIR}"
|
||||
|
||||
SRC_URI = "\
|
||||
http://download.savannah.gnu.org/releases/qemu/qemu-${PV}.tar.gz \
|
||||
file://workaround_bad_futex_headers.patch \
|
||||
file://powerpc_rom.bin \
|
||||
file://qemu-git-qemugl-host.patch \
|
||||
file://no-strip.patch \
|
||||
file://fix-dirent.patch \
|
||||
file://fix-nogl.patch \
|
||||
file://qemugl-allow-glxcontext-release.patch \
|
||||
file://linker-flags.patch \
|
||||
file://init-info.patch \
|
||||
file://qemu-vmware-vga-depth.patch \
|
||||
file://qemu-ppc-hack.patch \
|
||||
file://enable-i386-linux-user.patch \
|
||||
file://vmware-vga-fifo-rewind.patch \
|
||||
file://fix-configure-checks.patch \
|
||||
file://parallel_make.patch \
|
||||
file://wacom-tablet-fix.patch \
|
||||
file://port92_fix.patch \
|
||||
file://powerpc_rom.bin \
|
||||
file://fallback-to-safe-mmap_min_addr.patch \
|
||||
file://spice-qxl-locking-fix-for-qemu-kvm.patch \
|
||||
file://Detect-and-use-GCC-atomic-builtins-for-locking.patch \
|
||||
file://larger_default_ram_size.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "397a0d665da8ba9d3b9583629f3d6421"
|
||||
SRC_URI[sha256sum] = "1e6f5851b05cea6e377c835f4668408d4124cfb845f9948d922808743c5fd877"
|
||||
SRC_URI[md5sum] = "f9d145d5c09de9f0984ffe9bd1229970"
|
||||
SRC_URI[sha256sum] = "ba21e84d7853217830e167dae9999cdbff481189c6a0bb600ac7fb7201453108"
|
||||
|
||||
do_install_append () {
|
||||
install -d ${D}${datadir}/qemu
|
Loading…
Reference in New Issue