From b6dd5ac167a5ec03263ca0f85a5101e3692c0b38 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Aug 06 2012 23:15:48 +0000 Subject: Rebase to upstream qemu-kvm checkout in time for F18 feature freeze --- diff --git a/0001-Replace-struct-siginfo-with-siginfo_t.patch b/0001-Replace-struct-siginfo-with-siginfo_t.patch deleted file mode 100644 index 08948fe..0000000 --- a/0001-Replace-struct-siginfo-with-siginfo_t.patch +++ /dev/null @@ -1,70 +0,0 @@ -From baf954154e7c0acda038c01a5c28aea4db7eec67 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Thu, 5 Jul 2012 14:28:03 +0100 -Subject: [PATCH] Replace 'struct siginfo' with 'siginfo_t'. - -glibc 2.16 will remove the undocumented definition of 'struct siginfo' -from . - -This change is already present in glibc 2.15.90, so qemu compilation -of certain targets (eg. cris-user) breaks. - -This struct was always typedef'd to be the same as 'siginfo_t' which -is what POSIX documents, so use that instead. - -Signed-off-by: Richard W.M. Jones ---- - linux-user/signal.c | 8 ++++---- - user-exec.c | 2 +- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/linux-user/signal.c b/linux-user/signal.c -index 43346dc..108dff9 100644 ---- a/linux-user/signal.c -+++ b/linux-user/signal.c -@@ -2849,7 +2849,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka, - * Arguments to signal handler: - * - * a0 = signal number -- * a1 = pointer to struct siginfo -+ * a1 = pointer to siginfo_t - * a2 = pointer to struct ucontext - * - * $25 and PC point to the signal handler, $29 points to the -@@ -3255,7 +3255,7 @@ struct target_signal_frame { - }; - - struct rt_signal_frame { -- struct siginfo info; -+ siginfo_t info; - struct ucontext uc; - uint32_t tramp[2]; - }; -@@ -3474,9 +3474,9 @@ struct target_signal_frame { - }; - - struct rt_signal_frame { -- struct siginfo *pinfo; -+ siginfo_t *pinfo; - void *puc; -- struct siginfo info; -+ siginfo_t info; - struct ucontext uc; - uint8_t retcode[8]; /* Trampoline code. */ - }; -diff --git a/user-exec.c b/user-exec.c -index b2a4261..1a9c276 100644 ---- a/user-exec.c -+++ b/user-exec.c -@@ -588,7 +588,7 @@ int cpu_signal_handler(int host_signum, void *pinfo, - int cpu_signal_handler(int host_signum, void *pinfo, - void *puc) - { -- struct siginfo *info = pinfo; -+ siginfo_t *info = pinfo; - struct ucontext *uc = puc; - unsigned long pc = uc->uc_mcontext.sc_iaoq[0]; - uint32_t insn = *(uint32_t *)pc; --- -1.7.10.4 - diff --git a/0001-kvm-Enable-use-of-kvm_irqchip_in_kernel-in-hwlib-cod.patch b/0001-kvm-Enable-use-of-kvm_irqchip_in_kernel-in-hwlib-cod.patch deleted file mode 100644 index fa3f4d5..0000000 --- a/0001-kvm-Enable-use-of-kvm_irqchip_in_kernel-in-hwlib-cod.patch +++ /dev/null @@ -1,29 +0,0 @@ -From bbf3b80401d55ac3339160cefa17f0015317f512 Mon Sep 17 00:00:00 2001 -From: Jan Kiszka -Date: Thu, 17 May 2012 10:32:37 -0300 -Subject: [PATCH] kvm: Enable use of kvm_irqchip_in_kernel in hwlib code - -Provide a dummy kvm_kernel_irqchip so that kvm_irqchip_in_kernel can be -used by code that is not under CONFIG_KVM protection. - -Signed-off-by: Jan Kiszka -Signed-off-by: Avi Kivity ---- - kvm-stub.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/kvm-stub.c b/kvm-stub.c -index b4cf03f..ec9a364 100644 ---- a/kvm-stub.c -+++ b/kvm-stub.c -@@ -18,6 +18,7 @@ - #include "kvm.h" - - KVMState *kvm_state; -+bool kvm_kernel_irqchip; - - int kvm_init_vcpu(CPUArchState *env) - { --- -1.7.10.4 - diff --git a/0001-mips-Fix-link-error-with-piix4_pm_init.patch b/0001-mips-Fix-link-error-with-piix4_pm_init.patch new file mode 100644 index 0000000..03c79c8 --- /dev/null +++ b/0001-mips-Fix-link-error-with-piix4_pm_init.patch @@ -0,0 +1,28 @@ +From 2852820d9d765141c9bae0f586c9b782258fb07d Mon Sep 17 00:00:00 2001 +From: Cole Robinson +Date: Mon, 6 Aug 2012 17:12:40 -0400 +Subject: [PATCH] mips: Fix link error with 'piix4_pm_init' + + LINK mips-softmmu/qemu-system-mips + LINK m68k-softmmu/qemu-system-m68k +hw/mips/../mips_malta.o: In function `mips_malta_init': +/home/crobinso/qemu-kvm/hw/mips/../mips_malta.c:961: undefined reference to `piix4_pm_init' +--- + hw/mips/Makefile.objs | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/hw/mips/Makefile.objs b/hw/mips/Makefile.objs +index 29a5d0d..89af0e9 100644 +--- a/hw/mips/Makefile.objs ++++ b/hw/mips/Makefile.objs +@@ -1,6 +1,7 @@ + obj-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o + obj-y += mips_addr.o mips_timer.o mips_int.o + obj-y += gt64xxx.o mc146818rtc.o ++obj-y += acpi.o acpi_piix4.o + obj-$(CONFIG_FULONG) += bonito.o vt82c686.o mips_fulong2e.o + + obj-y := $(addprefix ../,$(obj-y)) +-- +1.7.11.2 + diff --git a/0001-qemu-kvm-Fix-default-machine-options.patch b/0001-qemu-kvm-Fix-default-machine-options.patch deleted file mode 100644 index 8c6cde7..0000000 --- a/0001-qemu-kvm-Fix-default-machine-options.patch +++ /dev/null @@ -1,111 +0,0 @@ -From ad47ffe7134fc7cd6a74fd3cdc0470723b883b93 Mon Sep 17 00:00:00 2001 -From: "Daniel P. Berrange" -Date: Tue, 10 Jul 2012 10:54:55 +0100 -Subject: [PATCH] qemu-kvm: Fix default machine options - -qemu-kvm-specific machine defaults were missing for pc-0.15 to pc-1.1. -Then Daniel noted that --disable-kvm caused problems as the generated -binaries would be unable to run. As we are at it, we can drop the -kernel_irqchip=on that is now enable by default in upstream. ---- - hw/pc_piix.c | 23 ++++++++++++++++------- - 1 file changed, 16 insertions(+), 7 deletions(-) - -diff --git a/hw/pc_piix.c b/hw/pc_piix.c -index 4e8a280..50e108a 100644 ---- a/hw/pc_piix.c -+++ b/hw/pc_piix.c -@@ -355,6 +355,12 @@ static void pc_xen_hvm_init(ram_addr_t ram_size, - } - #endif - -+#ifdef CONFIG_KVM_OPTIONS -+#define KVM_MACHINE_OPTIONS "accel=kvm" -+#else -+#define KVM_MACHINE_OPTIONS "" -+#endif -+ - static QEMUMachine pc_machine_v1_1 = { - .name = "pc-1.1", - .alias = "pc", -@@ -362,7 +368,7 @@ static QEMUMachine pc_machine_v1_1 = { - .init = pc_init_pci, - .max_cpus = 255, - .is_default = 1, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - }; - - #define PC_COMPAT_1_0 \ -@@ -393,7 +399,7 @@ static QEMUMachine pc_machine_v1_0 = { - .desc = "Standard PC", - .init = pc_init_pci, - .max_cpus = 255, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - .compat_props = (GlobalProperty[]) { - PC_COMPAT_1_0, - { /* end of list */ } -@@ -408,7 +414,7 @@ static QEMUMachine pc_machine_v0_15 = { - .desc = "Standard PC", - .init = pc_init_pci, - .max_cpus = 255, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - .compat_props = (GlobalProperty[]) { - PC_COMPAT_0_15, - { /* end of list */ } -@@ -440,7 +446,7 @@ static QEMUMachine pc_machine_v0_14 = { - .desc = "Standard PC", - .init = pc_init_pci, - .max_cpus = 255, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - .compat_props = (GlobalProperty[]) { - PC_COMPAT_0_14, - { -@@ -473,7 +479,7 @@ static QEMUMachine pc_machine_v0_13 = { - .desc = "Standard PC", - .init = pc_init_pci_no_kvmclock, - .max_cpus = 255, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - .compat_props = (GlobalProperty[]) { - PC_COMPAT_0_13, - { -@@ -510,7 +516,7 @@ static QEMUMachine pc_machine_v0_12 = { - .desc = "Standard PC", - .init = pc_init_pci_no_kvmclock, - .max_cpus = 255, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - .compat_props = (GlobalProperty[]) { - PC_COMPAT_0_12, - { -@@ -543,7 +549,7 @@ static QEMUMachine pc_machine_v0_11 = { - .desc = "Standard PC, qemu 0.11", - .init = pc_init_pci_no_kvmclock, - .max_cpus = 255, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - .compat_props = (GlobalProperty[]) { - PC_COMPAT_0_11, - { -@@ -564,7 +570,7 @@ static QEMUMachine pc_machine_v0_10 = { - .desc = "Standard PC, qemu 0.10", - .init = pc_init_pci_no_kvmclock, - .max_cpus = 255, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - .compat_props = (GlobalProperty[]) { - PC_COMPAT_0_11, - { -@@ -597,7 +603,7 @@ static QEMUMachine isapc_machine = { - .desc = "ISA-only PC", - .init = pc_init_isa, - .max_cpus = 1, -- .default_machine_opts = "accel=kvm,kernel_irqchip=on", -+ .default_machine_opts = KVM_MACHINE_OPTIONS, - .compat_props = (GlobalProperty[]) { - { - .driver = "pc-sysfw", diff --git a/0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch b/0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch index 8f5a24b..f8d08fe 100644 --- a/0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch +++ b/0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch @@ -1,16 +1,15 @@ -From 5b79aa329a378537ec939cee75df10ca073b367f Mon Sep 17 00:00:00 2001 +From 618a5f8a10c69813dddd86d966ff1778f22ab456 Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 21 Mar 2011 21:57:47 +0100 -Subject: [PATCH 101/114] char: Split out tcp socket close code in a separate - function +Subject: [PATCH] char: Split out tcp socket close code in a separate function Signed-off-by: Amit Shah --- - qemu-char.c | 25 ++++++++++++++++--------- + qemu-char.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/qemu-char.c b/qemu-char.c -index fe1126f..78d2a69 100644 +index c2aaaee..132ac08 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -2141,6 +2141,21 @@ typedef struct { @@ -53,5 +52,5 @@ index fe1126f..78d2a69 100644 if (s->do_telnetopt) tcp_chr_process_IAC_bytes(chr, s, buf, &size); -- -1.7.10.4 +1.7.11.2 diff --git a/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch b/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch index 5c6b719..113d521 100644 --- a/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch +++ b/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch @@ -1,51 +1,52 @@ -From 0e725325a4f3d1eb0eaa243cc059df2774c9c098 Mon Sep 17 00:00:00 2001 +From 58011a6f6c7c284f6532486f819b5895be9b76c7 Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 21 Mar 2011 20:31:45 +0100 -Subject: [PATCH 102/114] char: Add a QemuChrHandlers struct to initialise - chardev handlers +Subject: [PATCH] char: Add a QemuChrHandlers struct to initialise chardev + handlers Instead of passing each handler in the qemu_add_handlers() function, create a struct of handlers that can be passed to the function instead. Signed-off-by: Amit Shah --- - gdbstub.c | 9 +++++++-- - hw/cadence_uart.c | 9 +++++++-- - hw/ccid-card-passthru.c | 11 +++++++---- - hw/debugcon.c | 2 +- - hw/escc.c | 9 +++++++-- - hw/etraxfs_ser.c | 13 +++++++++---- - hw/exynos4210_uart.c | 9 +++++++-- - hw/grlib_apbuart.c | 12 +++++++----- - hw/ivshmem.c | 28 ++++++++++++++++++++++------ - hw/lm32_juart.c | 8 +++++++- - hw/lm32_uart.c | 8 +++++++- - hw/mcf_uart.c | 9 +++++++-- - hw/milkymist-uart.c | 8 +++++++- - hw/pl011.c | 9 +++++++-- - hw/pxa2xx.c | 13 +++++++++---- - hw/qdev-properties.c | 2 +- - hw/serial.c | 9 +++++++-- - hw/sh_serial.c | 12 +++++++++--- - hw/spapr_vty.c | 8 ++++++-- - hw/strongarm.c | 12 +++++++----- - hw/usb/dev-serial.c | 9 +++++++-- - hw/usb/redirect.c | 9 +++++++-- - hw/virtio-console.c | 9 +++++++-- - hw/xen_console.c | 16 +++++++++++----- - hw/xilinx_uartlite.c | 11 +++++++++-- - monitor.c | 18 ++++++++++++++---- - net/slirp.c | 8 ++++++-- - qemu-char.c | 32 ++++++++++++++++++++++---------- - qemu-char.h | 13 +++++++++---- - qtest.c | 9 ++++++++- - 30 files changed, 248 insertions(+), 86 deletions(-) + gdbstub.c | 9 +++++++-- + hw/cadence_uart.c | 9 +++++++-- + hw/ccid-card-passthru.c | 11 +++++++---- + hw/debugcon.c | 2 +- + hw/escc.c | 9 +++++++-- + hw/etraxfs_ser.c | 13 +++++++++---- + hw/exynos4210_uart.c | 9 +++++++-- + hw/grlib_apbuart.c | 12 +++++++----- + hw/imx_serial.c | 9 +++++++-- + hw/ivshmem.c | 28 ++++++++++++++++++++++------ + hw/lm32_juart.c | 8 +++++++- + hw/lm32_uart.c | 8 +++++++- + hw/mcf_uart.c | 9 +++++++-- + hw/milkymist-uart.c | 8 +++++++- + hw/pl011.c | 9 +++++++-- + hw/pxa2xx.c | 13 +++++++++---- + hw/qdev-properties.c | 2 +- + hw/serial.c | 9 +++++++-- + hw/sh_serial.c | 12 +++++++++--- + hw/spapr_vty.c | 8 ++++++-- + hw/strongarm.c | 12 +++++++----- + hw/usb/dev-serial.c | 9 +++++++-- + hw/usb/redirect.c | 9 +++++++-- + hw/virtio-console.c | 9 +++++++-- + hw/xen_console.c | 16 +++++++++++----- + hw/xilinx_uartlite.c | 11 +++++++++-- + monitor.c | 18 ++++++++++++++---- + net/slirp.c | 8 ++++++-- + qemu-char.c | 32 ++++++++++++++++++++++---------- + qemu-char.h | 13 +++++++++---- + qtest.c | 9 ++++++++- + 31 files changed, 255 insertions(+), 88 deletions(-) diff --git a/gdbstub.c b/gdbstub.c -index 6a77a66..9e099b0 100644 +index 5d37dd9..7f6b1cb 100644 --- a/gdbstub.c +++ b/gdbstub.c -@@ -2874,6 +2874,12 @@ static void gdb_sigterm_handler(int signal) +@@ -2929,6 +2929,12 @@ static void gdb_sigterm_handler(int signal) } #endif @@ -58,7 +59,7 @@ index 6a77a66..9e099b0 100644 int gdbserver_start(const char *device) { GDBState *s; -@@ -2903,8 +2909,7 @@ int gdbserver_start(const char *device) +@@ -2958,8 +2964,7 @@ int gdbserver_start(const char *device) if (!chr) return -1; @@ -138,7 +139,7 @@ index 14ab326..7887fd2 100644 static int debugcon_isa_initfn(ISADevice *dev) diff --git a/hw/escc.c b/hw/escc.c -index 4d8a8e8..689f275 100644 +index e1f5e73..ff9d8b1 100644 --- a/hw/escc.c +++ b/hw/escc.c @@ -867,6 +867,12 @@ void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq, @@ -249,11 +250,38 @@ index 73fc989..fd77d52 100644 sysbus_init_irq(dev, &uart->irq); +diff --git a/hw/imx_serial.c b/hw/imx_serial.c +index d4eae43..f2304d2 100644 +--- a/hw/imx_serial.c ++++ b/hw/imx_serial.c +@@ -381,6 +381,12 @@ static const struct MemoryRegionOps imx_serial_ops = { + .endianness = DEVICE_NATIVE_ENDIAN, + }; + ++static const QemuChrHandlers imx_handlers = { ++ .fd_can_read = imx_can_receive, ++ .fd_read = imx_receive, ++ .fd_event = imx_event, ++}; ++ + static int imx_serial_init(SysBusDevice *dev) + { + IMXSerialState *s = FROM_SYSBUS(IMXSerialState, dev); +@@ -391,8 +397,7 @@ static int imx_serial_init(SysBusDevice *dev) + sysbus_init_irq(dev, &s->irq); + + if (s->chr) { +- qemu_chr_add_handlers(s->chr, imx_can_receive, imx_receive, +- imx_event, s); ++ qemu_chr_add_handlers(s->chr, &imx_handlers, s); + } else { + DPRINTF("No char dev for uart at 0x%lx\n", + (unsigned long)s->iomem.ram_addr); diff --git a/hw/ivshmem.c b/hw/ivshmem.c -index d48e5f9..2dbf86e 100644 +index 0c58161..f9a7fe8 100644 --- a/hw/ivshmem.c +++ b/hw/ivshmem.c -@@ -279,6 +279,18 @@ static void fake_irqfd(void *opaque, const uint8_t *buf, int size) { +@@ -273,6 +273,18 @@ static void fake_irqfd(void *opaque, const uint8_t *buf, int size) { msix_notify(pdev, entry->vector); } @@ -269,10 +297,10 @@ index d48e5f9..2dbf86e 100644 + .fd_event = ivshmem_event, +}; + - static CharDriverState* create_eventfd_chr_device(void * opaque, int eventfd, - int vector) + static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier *n, + int vector) { -@@ -298,11 +310,10 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, int eventfd, +@@ -293,11 +305,10 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier * s->eventfd_table[vector].pdev = &s->dev; s->eventfd_table[vector].vector = vector; @@ -287,7 +315,7 @@ index d48e5f9..2dbf86e 100644 } return chr; -@@ -635,6 +646,12 @@ static void ivshmem_write_config(PCIDevice *pci_dev, uint32_t address, +@@ -641,6 +652,12 @@ static void ivshmem_write_config(PCIDevice *pci_dev, uint32_t address, msix_write_config(pci_dev, address, val, len); } @@ -300,7 +328,7 @@ index d48e5f9..2dbf86e 100644 static int pci_ivshmem_init(PCIDevice *dev) { IVShmemState *s = DO_UPCAST(IVShmemState, dev, dev); -@@ -724,8 +741,7 @@ static int pci_ivshmem_init(PCIDevice *dev) +@@ -730,8 +747,7 @@ static int pci_ivshmem_init(PCIDevice *dev) s->eventfd_chr = g_malloc0(s->vectors * sizeof(CharDriverState *)); @@ -415,10 +443,10 @@ index 291fe3c..2dcb41c 100644 return 0; diff --git a/hw/pl011.c b/hw/pl011.c -index 8a5a8f5..b125c40 100644 +index 3245702..0d620f8 100644 --- a/hw/pl011.c +++ b/hw/pl011.c -@@ -256,6 +256,12 @@ static const VMStateDescription vmstate_pl011 = { +@@ -258,6 +258,12 @@ static const VMStateDescription vmstate_pl011 = { } }; @@ -431,7 +459,7 @@ index 8a5a8f5..b125c40 100644 static int pl011_init(SysBusDevice *dev, const unsigned char *id) { pl011_state *s = FROM_SYSBUS(pl011_state, dev); -@@ -271,8 +277,7 @@ static int pl011_init(SysBusDevice *dev, const unsigned char *id) +@@ -273,8 +279,7 @@ static int pl011_init(SysBusDevice *dev, const unsigned char *id) s->cr = 0x300; s->flags = 0x90; if (s->chr) { @@ -442,10 +470,10 @@ index 8a5a8f5..b125c40 100644 vmstate_register(&dev->qdev, -1, &vmstate_pl011, s); return 0; diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c -index ddaa846..81827a4 100644 +index d5f1420..0b308cf 100644 --- a/hw/pxa2xx.c +++ b/hw/pxa2xx.c -@@ -2011,6 +2011,12 @@ static int pxa2xx_fir_load(QEMUFile *f, void *opaque, int version_id) +@@ -1962,6 +1962,12 @@ static int pxa2xx_fir_load(QEMUFile *f, void *opaque, int version_id) return 0; } @@ -458,7 +486,7 @@ index ddaa846..81827a4 100644 static PXA2xxFIrState *pxa2xx_fir_init(MemoryRegion *sysmem, target_phys_addr_t base, qemu_irq irq, qemu_irq rx_dma, qemu_irq tx_dma, -@@ -2029,10 +2035,9 @@ static PXA2xxFIrState *pxa2xx_fir_init(MemoryRegion *sysmem, +@@ -1980,10 +1986,9 @@ static PXA2xxFIrState *pxa2xx_fir_init(MemoryRegion *sysmem, memory_region_init_io(&s->iomem, &pxa2xx_fir_ops, s, "pxa2xx-fir", 0x1000); memory_region_add_subregion(sysmem, base, &s->iomem); @@ -473,10 +501,10 @@ index ddaa846..81827a4 100644 pxa2xx_fir_load, s); diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c -index b7b5597..e3c1b40 100644 +index 8aca0d4..677c665 100644 --- a/hw/qdev-properties.c +++ b/hw/qdev-properties.c -@@ -551,7 +551,7 @@ static void release_chr(Object *obj, const char *name, void *opaque) +@@ -549,7 +549,7 @@ static void release_chr(Object *obj, const char *name, void *opaque) CharDriverState **ptr = qdev_get_prop_ptr(dev, prop); if (*ptr) { @@ -513,10 +541,10 @@ index a421d1e..056d823 100644 /* Change the main reference oscillator frequency. */ diff --git a/hw/sh_serial.c b/hw/sh_serial.c -index 43b0eb1..c322784 100644 +index 1d1883d..ce1c765 100644 --- a/hw/sh_serial.c +++ b/hw/sh_serial.c -@@ -350,6 +350,12 @@ static const MemoryRegionOps sh_serial_ops = { +@@ -352,6 +352,12 @@ static const MemoryRegionOps sh_serial_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; @@ -529,7 +557,7 @@ index 43b0eb1..c322784 100644 void sh_serial_init(MemoryRegion *sysmem, target_phys_addr_t base, int feat, uint32_t freq, CharDriverState *chr, -@@ -394,9 +400,9 @@ void sh_serial_init(MemoryRegion *sysmem, +@@ -396,9 +402,9 @@ void sh_serial_init(MemoryRegion *sysmem, s->chr = chr; @@ -543,7 +571,7 @@ index 43b0eb1..c322784 100644 s->eri = eri_source; s->rxi = rxi_source; diff --git a/hw/spapr_vty.c b/hw/spapr_vty.c -index c9674f3..15f61c3 100644 +index 99e52cc..e7cb84f 100644 --- a/hw/spapr_vty.c +++ b/hw/spapr_vty.c @@ -54,6 +54,11 @@ void vty_putchars(VIOsPAPRDevice *sdev, uint8_t *buf, int len) @@ -569,7 +597,7 @@ index c9674f3..15f61c3 100644 return 0; } diff --git a/hw/strongarm.c b/hw/strongarm.c -index 1b15f39..2ae2f7e 100644 +index 7150eeb..594cf31 100644 --- a/hw/strongarm.c +++ b/hw/strongarm.c @@ -1199,6 +1199,12 @@ static const MemoryRegionOps strongarm_uart_ops = { @@ -599,7 +627,7 @@ index 1b15f39..2ae2f7e 100644 return 0; diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c -index 56743ee..af670cc 100644 +index 8aa6552..8fc9bdd 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -475,6 +475,12 @@ static void usb_serial_event(void *opaque, int event) @@ -626,10 +654,10 @@ index 56743ee..af670cc 100644 return 0; } diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c -index 51c27b4..6e8180e 100644 +index 10b4fbb..ecb2cd4 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c -@@ -890,6 +890,12 @@ static void usbredir_chardev_event(void *opaque, int event) +@@ -892,6 +892,12 @@ static void usbredir_chardev_event(void *opaque, int event) } } @@ -642,7 +670,7 @@ index 51c27b4..6e8180e 100644 /* * init + destroy */ -@@ -928,8 +934,7 @@ static int usbredir_initfn(USBDevice *udev) +@@ -930,8 +936,7 @@ static int usbredir_initfn(USBDevice *udev) /* Let the backend know we are ready */ qemu_chr_fe_open(dev->cs); @@ -680,10 +708,10 @@ index cffee3d..066590c 100644 return 0; diff --git a/hw/xen_console.c b/hw/xen_console.c -index 3794b19..ee872c3 100644 +index 9426d73..e9fcadc 100644 --- a/hw/xen_console.c +++ b/hw/xen_console.c -@@ -212,6 +212,11 @@ out: +@@ -211,6 +211,11 @@ out: return ret; } @@ -695,7 +723,7 @@ index 3794b19..ee872c3 100644 static int con_initialise(struct XenDevice *xendev) { struct XenConsole *con = container_of(xendev, struct XenConsole, xendev); -@@ -232,9 +237,9 @@ static int con_initialise(struct XenDevice *xendev) +@@ -231,9 +236,9 @@ static int con_initialise(struct XenDevice *xendev) return -1; xen_be_bind_evtchn(&con->xendev); @@ -708,7 +736,7 @@ index 3794b19..ee872c3 100644 xen_be_printf(xendev, 1, "ring mfn %d, remote port %d, local port %d, limit %zd\n", con->ring_ref, -@@ -251,8 +256,9 @@ static void con_disconnect(struct XenDevice *xendev) +@@ -250,8 +255,9 @@ static void con_disconnect(struct XenDevice *xendev) if (!xendev->dev) { return; } @@ -721,7 +749,7 @@ index 3794b19..ee872c3 100644 if (con->sring) { diff --git a/hw/xilinx_uartlite.c b/hw/xilinx_uartlite.c -index aa0170d..6ca45dc 100644 +index d0f32db..33f0cd5 100644 --- a/hw/xilinx_uartlite.c +++ b/hw/xilinx_uartlite.c @@ -195,6 +195,12 @@ static void uart_event(void *opaque, int event) @@ -737,7 +765,7 @@ index aa0170d..6ca45dc 100644 static int xilinx_uartlite_init(SysBusDevice *dev) { struct xlx_uartlite *s = FROM_SYSBUS(typeof (*s), dev); -@@ -206,8 +212,9 @@ static int xilinx_uartlite_init(SysBusDevice *dev) +@@ -207,8 +213,9 @@ static int xilinx_uartlite_init(SysBusDevice *dev) sysbus_init_mmio(dev, &s->mmio); s->chr = qemu_char_get_next_serial(); @@ -750,10 +778,10 @@ index aa0170d..6ca45dc 100644 } diff --git a/monitor.c b/monitor.c -index 71f4392..116accb 100644 +index 99618a0..c020089 100644 --- a/monitor.c +++ b/monitor.c -@@ -4601,6 +4601,18 @@ static void sortcmdlist(void) +@@ -4689,6 +4689,18 @@ static void sortcmdlist(void) * End: */ @@ -772,7 +800,7 @@ index 71f4392..116accb 100644 void monitor_init(CharDriverState *chr, int flags) { static int is_first_init = 1; -@@ -4623,12 +4635,10 @@ void monitor_init(CharDriverState *chr, int flags) +@@ -4712,12 +4724,10 @@ void monitor_init(CharDriverState *chr, int flags) if (monitor_ctrl_mode(mon)) { mon->mc = g_malloc0(sizeof(MonitorControl)); /* Control mode requires special handlers */ @@ -788,10 +816,10 @@ index 71f4392..116accb 100644 QLIST_INSERT_HEAD(&mon_list, mon, entry); diff --git a/net/slirp.c b/net/slirp.c -index 96f5032..aa8ed08 100644 +index 08adb97..f5ba440 100644 --- a/net/slirp.c +++ b/net/slirp.c -@@ -577,6 +577,11 @@ static void guestfwd_read(void *opaque, const uint8_t *buf, int size) +@@ -593,6 +593,11 @@ static void guestfwd_read(void *opaque, const uint8_t *buf, int size) slirp_socket_recv(fwd->slirp, fwd->server, fwd->port, buf, size); } @@ -803,18 +831,18 @@ index 96f5032..aa8ed08 100644 static int slirp_guestfwd(SlirpState *s, const char *config_str, int legacy_format) { -@@ -633,8 +638,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str, - fwd->port = port; - fwd->slirp = s->slirp; +@@ -658,8 +663,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str, + fwd->port = port; + fwd->slirp = s->slirp; -- qemu_chr_add_handlers(fwd->hd, guestfwd_can_read, guestfwd_read, -- NULL, fwd); -+ qemu_chr_add_handlers(fwd->hd, &guestfwd_handlers, fwd); +- qemu_chr_add_handlers(fwd->hd, guestfwd_can_read, guestfwd_read, +- NULL, fwd); ++ qemu_chr_add_handlers(fwd->hd, &guestfwd_handlers, fwd); + } return 0; - fail_syntax: diff --git a/qemu-char.c b/qemu-char.c -index 78d2a69..86bdabf 100644 +index 132ac08..5c5ae1e 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -192,19 +192,26 @@ void qemu_chr_fe_printf(CharDriverState *s, const char *fmt, ...) @@ -927,5 +955,5 @@ index fbfab4e..4ab5b69 100644 inbuf = g_string_new(""); -- -1.7.10.4 +1.7.11.2 diff --git a/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch b/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch index 7b70e2a..4dcf709 100644 --- a/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch +++ b/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch @@ -1,15 +1,14 @@ -From 32876859aeee3722398d98abfb6b6307e701091f Mon Sep 17 00:00:00 2001 +From 4ab66ef979faf3ad59fbf2bb8406117b657f966b Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 21 Mar 2011 20:32:58 +0100 -Subject: [PATCH 103/114] iohandlers: Add enable/disable_write_fd_handler() - functions +Subject: [PATCH] iohandlers: Add enable/disable_write_fd_handler() functions These will be used to provide a cleaner API for the nonblocking case. Signed-off-by: Amit Shah --- - iohandler.c | 35 +++++++++++++++++++++++++++++++++++ - main-loop.h | 3 +++ + iohandler.c | 35 +++++++++++++++++++++++++++++++++++ + main-loop.h | 3 +++ 2 files changed, 38 insertions(+) diff --git a/iohandler.c b/iohandler.c @@ -73,5 +72,5 @@ index dce1cd9..eb31273 100644 * qemu_set_fd_handler2: Register a file descriptor with the main loop * -- -1.7.10.4 +1.7.11.2 diff --git a/0104-char-Add-framework-for-a-write-unblocked-callback.patch b/0104-char-Add-framework-for-a-write-unblocked-callback.patch index bea0d67..fbba8a3 100644 --- a/0104-char-Add-framework-for-a-write-unblocked-callback.patch +++ b/0104-char-Add-framework-for-a-write-unblocked-callback.patch @@ -1,7 +1,7 @@ -From 3def2c629b31cfc6dfe54a1a5464bb35359c3b10 Mon Sep 17 00:00:00 2001 +From 73426a9cec4f1a32553b122c78d083a297412cf4 Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 21 Mar 2011 21:41:42 +0100 -Subject: [PATCH 104/114] char: Add framework for a 'write unblocked' callback +Subject: [PATCH] char: Add framework for a 'write unblocked' callback The char layer can let users know that the driver will block on further input. For users interested in not blocking, they can assign a function @@ -11,12 +11,12 @@ future patches will enable the nonblocking and callback functionality. Signed-off-by: Amit Shah --- - qemu-char.c | 3 +++ - qemu-char.h | 4 ++++ + qemu-char.c | 3 +++ + qemu-char.h | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/qemu-char.c b/qemu-char.c -index 86bdabf..88cbbd0 100644 +index 5c5ae1e..1b70447 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -211,11 +211,14 @@ void qemu_chr_add_handlers(CharDriverState *s, @@ -57,5 +57,5 @@ index dfa8c2d..b5e23a4 100644 }; -- -1.7.10.4 +1.7.11.2 diff --git a/0105-char-Update-send_all-to-handle-nonblocking-chardev-w.patch b/0105-char-Update-send_all-to-handle-nonblocking-chardev-w.patch index 1b954ef..7e91a22 100644 --- a/0105-char-Update-send_all-to-handle-nonblocking-chardev-w.patch +++ b/0105-char-Update-send_all-to-handle-nonblocking-chardev-w.patch @@ -1,8 +1,8 @@ -From 6a36990b303dc64709931e16783e2f2e0a54b9d6 Mon Sep 17 00:00:00 2001 +From 8d1503b20a6a8f011b292c0f543acd98b4fc922e Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 21 Mar 2011 22:00:27 +0100 -Subject: [PATCH 105/114] char: Update send_all() to handle nonblocking - chardev write requests +Subject: [PATCH] char: Update send_all() to handle nonblocking chardev write + requests The send_all function is modified to return to the caller in case the driver cannot handle any more data. It returns -EAGAIN or @@ -16,16 +16,16 @@ commits will add such capability. Signed-off-by: Amit Shah --- - net/socket.c | 4 ++-- - qemu-char.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- - qemu_socket.h | 2 +- + net/socket.c | 4 ++-- + qemu-char.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ + qemu_socket.h | 2 +- 3 files changed, 66 insertions(+), 9 deletions(-) diff --git a/net/socket.c b/net/socket.c -index 0bcf229..c21bb60 100644 +index c172c24..aa7c99e 100644 --- a/net/socket.c +++ b/net/socket.c -@@ -56,8 +56,8 @@ static ssize_t net_socket_receive(VLANClientState *nc, const uint8_t *buf, size_ +@@ -53,8 +53,8 @@ static ssize_t net_socket_receive(NetClientState *nc, const uint8_t *buf, size_t uint32_t len; len = htonl(size); @@ -35,9 +35,9 @@ index 0bcf229..c21bb60 100644 + return send_all(NULL, s->fd, buf, size); } - static ssize_t net_socket_receive_dgram(VLANClientState *nc, const uint8_t *buf, size_t size) + static ssize_t net_socket_receive_dgram(NetClientState *nc, const uint8_t *buf, size_t size) diff --git a/qemu-char.c b/qemu-char.c -index 88cbbd0..d8059ff 100644 +index 1b70447..fbb6f5f 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -508,7 +508,7 @@ static CharDriverState *qemu_chr_open_mux(CharDriverState *drv) @@ -184,5 +184,5 @@ index 4689ff3..3d780ce 100644 /* New, ipv6-ready socket helper functions, see qemu-sockets.c */ int inet_listen_opts(QemuOpts *opts, int port_offset, Error **errp); -- -1.7.10.4 +1.7.11.2 diff --git a/0106-char-Equip-the-unix-tcp-backend-to-handle-nonblockin.patch b/0106-char-Equip-the-unix-tcp-backend-to-handle-nonblockin.patch index c6a3987..56a7f64 100644 --- a/0106-char-Equip-the-unix-tcp-backend-to-handle-nonblockin.patch +++ b/0106-char-Equip-the-unix-tcp-backend-to-handle-nonblockin.patch @@ -1,8 +1,8 @@ -From bccdec085744256038f35b243853d7142b85cddb Mon Sep 17 00:00:00 2001 +From 7eab128ea16406bf450e0e53d9d629c290b317d7 Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 21 Mar 2011 22:02:47 +0100 -Subject: [PATCH 106/114] char: Equip the unix/tcp backend to handle - nonblocking writes# +Subject: [PATCH] char: Equip the unix/tcp backend to handle nonblocking + writes# Now that the infrastructure is in place to return -EAGAIN to callers, individual char drivers can set their update_fd_handlers() function to @@ -14,11 +14,11 @@ users of chardevs know that a driver became writable again. Signed-off-by: Amit Shah --- - qemu-char.c | 34 ++++++++++++++++++++++++++++++++++ + qemu-char.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/qemu-char.c b/qemu-char.c -index d8059ff..ed306e5 100644 +index fbb6f5f..cdc7f5c 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -106,6 +106,19 @@ @@ -77,5 +77,5 @@ index d8059ff..ed306e5 100644 if (is_listen) { s->listen_fd = fd; -- -1.7.10.4 +1.7.11.2 diff --git a/0107-char-Throttle-when-host-connection-is-down.patch b/0107-char-Throttle-when-host-connection-is-down.patch index 26755a5..8f7cf00 100644 --- a/0107-char-Throttle-when-host-connection-is-down.patch +++ b/0107-char-Throttle-when-host-connection-is-down.patch @@ -1,7 +1,7 @@ -From 52aef47122bcbdd556f9fd3510a2047b8f920064 Mon Sep 17 00:00:00 2001 +From a8803b2972223fea435b519272c347f164e05512 Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 21 Mar 2011 22:05:10 +0100 -Subject: [PATCH 107/114] char: Throttle when host connection is down# +Subject: [PATCH] char: Throttle when host connection is down# When the host-side connection goes down, throttle the virtio-serial bus and later unthrottle when a connection gets established. This helps @@ -16,11 +16,11 @@ worst case (host d/c, guest write, host connect). Signed-off-by: Amit Shah --- - qemu-char.c | 14 ++++++++++++++ + qemu-char.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/qemu-char.c b/qemu-char.c -index ed306e5..c263328 100644 +index cdc7f5c..caa2efb 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -140,6 +140,9 @@ static void qemu_chr_generic_open_bh(void *opaque) @@ -52,5 +52,5 @@ index ed306e5..c263328 100644 return ret; } else { -- -1.7.10.4 +1.7.11.2 diff --git a/0108-virtio-console-Enable-port-throttling-when-chardev-i.patch b/0108-virtio-console-Enable-port-throttling-when-chardev-i.patch index d3e4afc..564c730 100644 --- a/0108-virtio-console-Enable-port-throttling-when-chardev-i.patch +++ b/0108-virtio-console-Enable-port-throttling-when-chardev-i.patch @@ -1,8 +1,8 @@ -From 738da364d19bd99b70c79cb1174eef0e19f8e368 Mon Sep 17 00:00:00 2001 +From 596c901c52b211425afe4d40e361d3ee1e5ec4bc Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 21 Mar 2011 22:06:41 +0100 -Subject: [PATCH 108/114] virtio-console: Enable port throttling when chardev - is slow to consume data +Subject: [PATCH] virtio-console: Enable port throttling when chardev is slow + to consume data When a chardev indicates it can't accept more data, we tell the virtio-serial code to stop sending us any more data till we tell @@ -12,7 +12,7 @@ As soon as the chardev indicates it can accept more data, start pushing! Signed-off-by: Amit Shah --- - hw/virtio-console.c | 11 +++++++++++ + hw/virtio-console.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hw/virtio-console.c b/hw/virtio-console.c @@ -45,5 +45,5 @@ index 066590c..2b5e515 100644 static int virtconsole_initfn(VirtIOSerialPort *port) -- -1.7.10.4 +1.7.11.2 diff --git a/0109-spice-qemu-char.c-add-throttling.patch b/0109-spice-qemu-char.c-add-throttling.patch index b64243e..ba22a44 100644 --- a/0109-spice-qemu-char.c-add-throttling.patch +++ b/0109-spice-qemu-char.c-add-throttling.patch @@ -1,7 +1,7 @@ -From 484eac58fb0cf9b0ba6d31db868a549ee8799437 Mon Sep 17 00:00:00 2001 +From 3229d4b7de0d2611db5d4282b5d720861e63a085 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Tue, 22 Mar 2011 12:27:59 +0200 -Subject: [PATCH 109/114] spice-qemu-char.c: add throttling +Subject: [PATCH] spice-qemu-char.c: add throttling BZ: 672191 @@ -35,7 +35,7 @@ This patch relies on Amit's series to expose throttling to chardev's, which was not accepted upstream, and will not be accepted upstream until the mainloop is reworked to use glib. --- - spice-qemu-char.c | 39 +++++++++++++++++++++++++++++++++++---- + spice-qemu-char.c | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/spice-qemu-char.c b/spice-qemu-char.c @@ -129,5 +129,5 @@ index 09aa22d..fba2bfb 100644 #if SPICE_SERVER_VERSION < 0x000901 /* See comment in vmc_state() */ -- -1.7.10.4 +1.7.11.2 diff --git a/0110-spice-qemu-char.c-remove-intermediate-buffer.patch b/0110-spice-qemu-char.c-remove-intermediate-buffer.patch index 7a49e1d..2ae877d 100644 --- a/0110-spice-qemu-char.c-remove-intermediate-buffer.patch +++ b/0110-spice-qemu-char.c-remove-intermediate-buffer.patch @@ -1,7 +1,7 @@ -From 606c5ed5369c862c70fa527892b808f189a2b482 Mon Sep 17 00:00:00 2001 +From 5b6e021bc56ffa305bfd68a23d7709df6856ec08 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Tue, 22 Mar 2011 12:28:00 +0200 -Subject: [PATCH 110/114] spice-qemu-char.c: remove intermediate buffer +Subject: [PATCH] spice-qemu-char.c: remove intermediate buffer BZ: 672191 upstream: not submitted (explained below) @@ -16,7 +16,7 @@ Also make datalen int and not ssize_t (to fit spice_chr_write signature). This relied on the previous patch that introduces throttling, which can't go upstream right now as explained in that patch. --- - spice-qemu-char.c | 18 ++++++------------ + spice-qemu-char.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/spice-qemu-char.c b/spice-qemu-char.c @@ -67,5 +67,5 @@ index fba2bfb..ef44bc0 100644 /* We'll get passed in the unconsumed data with the next call */ s->datalen = 0; -- -1.7.10.4 +1.7.11.2 diff --git a/0111-usb-redir-Add-flow-control-support.patch b/0111-usb-redir-Add-flow-control-support.patch index 8cd4d88..39d42a6 100644 --- a/0111-usb-redir-Add-flow-control-support.patch +++ b/0111-usb-redir-Add-flow-control-support.patch @@ -1,18 +1,18 @@ -From 2f61a7bed440164c35c739fcef10d19edef3f8ea Mon Sep 17 00:00:00 2001 +From 76cccf228dca6c73afabd7a82a576993bd15b3f1 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Tue, 19 Jul 2011 10:56:19 +0200 -Subject: [PATCH 111/114] usb-redir: Add flow control support +Subject: [PATCH] usb-redir: Add flow control support Signed-off-by: Hans de Goede --- - hw/usb/redirect.c | 26 ++++++++++++++++++++++++-- + hw/usb/redirect.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c -index 6e8180e..5f55d78 100644 +index ecb2cd4..1460515 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c -@@ -238,12 +238,22 @@ static int usbredir_read(void *priv, uint8_t *data, int count) +@@ -236,12 +236,22 @@ static int usbredir_read(void *priv, uint8_t *data, int count) static int usbredir_write(void *priv, uint8_t *data, int count) { USBRedirDevice *dev = priv; @@ -37,7 +37,7 @@ index 6e8180e..5f55d78 100644 } /* -@@ -890,10 +900,22 @@ static void usbredir_chardev_event(void *opaque, int event) +@@ -892,10 +902,22 @@ static void usbredir_chardev_event(void *opaque, int event) } } @@ -61,5 +61,5 @@ index 6e8180e..5f55d78 100644 /* -- -1.7.10.4 +1.7.11.2 diff --git a/0112-virtio-serial-bus-replay-guest_open-on-migration.patch b/0112-virtio-serial-bus-replay-guest_open-on-migration.patch index e6464bd..9484195 100644 --- a/0112-virtio-serial-bus-replay-guest_open-on-migration.patch +++ b/0112-virtio-serial-bus-replay-guest_open-on-migration.patch @@ -1,7 +1,7 @@ -From be9fad02180478f6c9435257e6a7c29b9e4c9841 Mon Sep 17 00:00:00 2001 +From 6ed4b7c0b0ed061925036744f60e376194cd67a3 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Thu, 28 Jul 2011 15:08:48 +0300 -Subject: [PATCH 112/114] virtio-serial-bus: replay guest_open on migration +Subject: [PATCH] virtio-serial-bus: replay guest_open on migration When migrating a host with with a spice agent running the mouse becomes non operational after the migration. This is rhbz #725965. @@ -18,11 +18,11 @@ chardev. Signed-off-by: Alon Levy --- - hw/virtio-serial-bus.c | 6 ++++++ + hw/virtio-serial-bus.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c -index 72287d1..7ea5bbf 100644 +index 82073f5..18c2ed3 100644 --- a/hw/virtio-serial-bus.c +++ b/hw/virtio-serial-bus.c @@ -682,6 +682,7 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id) @@ -46,5 +46,5 @@ index 72287d1..7ea5bbf 100644 if (host_connected != port->host_connected) { /* -- -1.7.10.4 +1.7.11.2 diff --git a/0113-char-Disable-write-callback-if-throttled-chardev-is-.patch b/0113-char-Disable-write-callback-if-throttled-chardev-is-.patch index 16c547a..c246b51 100644 --- a/0113-char-Disable-write-callback-if-throttled-chardev-is-.patch +++ b/0113-char-Disable-write-callback-if-throttled-chardev-is-.patch @@ -1,7 +1,7 @@ -From 303a46e3877f6d9600151fdf9719fdb2009db7ff Mon Sep 17 00:00:00 2001 +From 131729b07be897a363d8d769ecc056dabe2ed7da Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Fri, 2 Dec 2011 15:42:55 +0530 -Subject: [PATCH 113/114] char: Disable write callback if throttled chardev is +Subject: [PATCH] char: Disable write callback if throttled chardev is detached If a throttled chardev is detached from the frontend device, all future @@ -12,11 +12,11 @@ Upstream: Not applicable, since throttling is a RHEL6-only feature. Signed-off-by: Amit Shah --- - qemu-char.c | 5 +++++ + qemu-char.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/qemu-char.c b/qemu-char.c -index c263328..622c388 100644 +index caa2efb..7f24878 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -223,6 +223,11 @@ void qemu_chr_add_handlers(CharDriverState *s, @@ -32,5 +32,5 @@ index c263328..622c388 100644 } s->chr_can_read = handlers->fd_can_read; -- -1.7.10.4 +1.7.11.2 diff --git a/0201-usb-redir-Correctly-handle-the-usb_redir_babble-usbr.patch b/0201-usb-redir-Correctly-handle-the-usb_redir_babble-usbr.patch deleted file mode 100644 index 7273c25..0000000 --- a/0201-usb-redir-Correctly-handle-the-usb_redir_babble-usbr.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 1271c4b3437a8bcf9b35ae8ed03be3dc758fe756 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Fri, 22 Jun 2012 09:43:08 +0200 -Subject: [PATCH] usb-redir: Correctly handle the usb_redir_babble usbredir - status - -Signed-off-by: Hans de Goede ---- - hw/usb/redirect.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c -index 5f55d78..c6358c0 100644 ---- a/hw/usb/redirect.c -+++ b/hw/usb/redirect.c -@@ -1058,6 +1058,8 @@ static int usbredir_handle_status(USBRedirDevice *dev, - case usb_redir_inval: - WARNING("got invalid param error from usb-host?\n"); - return USB_RET_NAK; -+ case usb_redir_babble: -+ return USB_RET_BABBLE; - case usb_redir_ioerror: - case usb_redir_timeout: - default: --- -1.7.10.4 - diff --git a/0202-usb-ehci-Fix-an-assert-whenever-isoc-transfers-are-u.patch b/0202-usb-ehci-Fix-an-assert-whenever-isoc-transfers-are-u.patch deleted file mode 100644 index 0a62435..0000000 --- a/0202-usb-ehci-Fix-an-assert-whenever-isoc-transfers-are-u.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 050146c8b005683cbc36a837844d2d637b27100c Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Fri, 6 Jul 2012 12:04:15 +0200 -Subject: [PATCH] usb-ehci: Fix an assert whenever isoc transfers are used - -hcd-ehci.c is missing an usb_packet_init() call for the ipacket UsbPacket -it uses for isoc transfers, triggering an assert (taking the entire vm down) -in usb_packet_setup as soon as any isoc transfers are done by a high speed -USB device. - -Signed-off-by: Hans de Goede ---- - hw/usb/hcd-ehci.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c -index e759c99..eaa3ddd 100644 ---- a/hw/usb/hcd-ehci.c -+++ b/hw/usb/hcd-ehci.c -@@ -2300,6 +2300,7 @@ static int usb_ehci_initfn(PCIDevice *dev) - s->frame_timer = qemu_new_timer_ns(vm_clock, ehci_frame_timer, s); - QTAILQ_INIT(&s->aqueues); - QTAILQ_INIT(&s->pqueues); -+ usb_packet_init(&s->ipacket); - - qemu_register_reset(ehci_reset, s); - --- -1.7.10.4 - diff --git a/qemu-fix-systemtap.patch b/qemu-fix-systemtap.patch deleted file mode 100644 index bc8d9a4..0000000 --- a/qemu-fix-systemtap.patch +++ /dev/null @@ -1,41 +0,0 @@ -commit 256a721d46a112d8807a488ec0176985c09bbbf1 -Author: Stefan Hajnoczi -Date: Mon Apr 16 12:47:58 2012 +0100 - - tracetool: handle DTrace keywords 'in', 'next', 'self' - - Language keywords cannot be used as argument names. The DTrace backend - appends an underscore to the argument name in order to make the argument - name legal. - - This patch adds 'in', 'next', and 'self' keywords to dtrace.py. - - Also drop the unnecessary argument name lstrip() call. The - Arguments.build() method already ensures there is no space around - argument names. Furthermore it is misleading to do the lstrip() *after* - checking against keywords because the keyword check would not match if - spaces were in the name. - - Signed-off-by: Stefan Hajnoczi - Reviewed-by: Alon Levy - Reviewed-by: LluĂ­s Vilanova - -diff --git a/scripts/tracetool/backend/dtrace.py b/scripts/tracetool/backend/dtrace.py -index cebbd57..9cab75c 100644 ---- a/scripts/tracetool/backend/dtrace.py -+++ b/scripts/tracetool/backend/dtrace.py -@@ -86,10 +86,10 @@ def stap(events): - i = 1 - if len(e.args) > 0: - for name in e.args.names(): -- # 'limit' is a reserved keyword -- if name == 'limit': -- name = '_limit' -- out(' %s = $arg%d;' % (name.lstrip(), i)) -+ # Append underscore to reserved keywords -+ if name in ('limit', 'in', 'next', 'self'): -+ name += '_' -+ out(' %s = $arg%d;' % (name, i)) - i += 1 - - out('}') diff --git a/qemu-fix-vnc-audio.patch b/qemu-fix-vnc-audio.patch deleted file mode 100644 index f7bc464..0000000 --- a/qemu-fix-vnc-audio.patch +++ /dev/null @@ -1,20 +0,0 @@ -commit 83617103984eb4d81cf46c94435f3da2c6f33b55 -Author: malc -Date: Mon Jul 16 18:08:36 2012 +0400 - - audio: Unbreak capturing in mixemu case - - Signed-off-by: malc - -diff --git a/audio/audio.c b/audio/audio.c -index 583ee51..1c77389 100644 ---- a/audio/audio.c -+++ b/audio/audio.c -@@ -818,6 +818,7 @@ static int audio_attach_capture (HWVoiceOut *hw) - sw->active = hw->enabled; - sw->conv = noop_conv; - sw->ratio = ((int64_t) hw_cap->info.freq << 32) / sw->info.freq; -+ sw->vol = nominal_volume; - sw->rate = st_rate_start (sw->info.freq, hw_cap->info.freq); - if (!sw->rate) { - dolog ("Could not start rate conversion for `%s'\n", SW_NAME (sw)); diff --git a/qemu.spec b/qemu.spec index 334db42..4647a9f 100644 --- a/qemu.spec +++ b/qemu.spec @@ -34,11 +34,13 @@ %bcond_without fdt # enabled %endif +%global gitdate 20120806 +%global gitcommit 3e430569 Summary: QEMU is a FAST! processor emulator Name: qemu -Version: 1.1.1 -Release: 1%{?dist} +Version: 1.2 +Release: 0.1.%{gitdate}git%{gitcommit}%{?dist} # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped Epoch: 2 License: GPLv2+ and LGPLv2+ and BSD @@ -54,7 +56,14 @@ ExclusiveArch: x86_64 %define _smp_mflags %{nil} %endif -Source0: http://downloads.sourceforge.net/sourceforge/kvm/qemu-kvm-%{version}.tar.gz +# There aren't any 1.2 releases yet, so we have to pull from git: +# +# git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git +# cd qemu-kvm +# git archive -o ../qemu-kvm-%{version}-%{gitcommit}.tar.gz \ +# --prefix=qemu-kvm-%{version}/ %{gitcommit} +Source0: qemu-kvm-%{version}-%{gitcommit}.tar.gz +#Source0: http://downloads.sourceforge.net/sourceforge/kvm/qemu-kvm-%{version}.tar.gz Source1: qemu.binfmt @@ -75,17 +84,8 @@ Source9: ksmtuned.conf Source10: qemu-guest-agent.service Source11: 99-qemu-guest-agent.rules -# Upstream patch to fix build of msi/virtio-pci. -Patch3: 0001-kvm-Enable-use-of-kvm_irqchip_in_kernel-in-hwlib-cod.patch - -# Use siginfo_t instead of struct siginfo, for glibc in Rawhide. -# Sent upstream 2012-07-05. -Patch4: 0001-Replace-struct-siginfo-with-siginfo_t.patch - -# Patch to fix default machine options. -# http://www.spinics.net/lists/kvm/msg75509.html -# Sent upstream by danpb on 2012-07-06. -Patch5: 0001-qemu-kvm-Fix-default-machine-options.patch +# Non upstream build fix +Patch1: 0001-mips-Fix-link-error-with-piix4_pm_init.patch # The infamous chardev flow control patches Patch101: 0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch @@ -102,14 +102,13 @@ Patch111: 0111-usb-redir-Add-flow-control-support.patch Patch112: 0112-virtio-serial-bus-replay-guest_open-on-migration.patch Patch113: 0113-char-Disable-write-callback-if-throttled-chardev-is-.patch -# USB-redir bugfixes -Patch201: 0201-usb-redir-Correctly-handle-the-usb_redir_babble-usbr.patch -Patch202: 0202-usb-ehci-Fix-an-assert-whenever-isoc-transfers-are-u.patch - -# Fix VNC audio tunnelling (bz 840653) -Patch203: %{name}-fix-vnc-audio.patch - -BuildRequires: SDL-devel zlib-devel which texi2html gnutls-devel cyrus-sasl-devel +BuildRequires: SDL-devel +BuildRequires: zlib-devel +BuildRequires: which +BuildRequires: texi2html +BuildRequires: gnutls-devel +BuildRequires: cyrus-sasl-devel +BuildRequires: libtool BuildRequires: libaio-devel BuildRequires: rsync BuildRequires: pciutils-devel @@ -362,9 +361,8 @@ such as kvm_stat. %prep %setup -q -n qemu-kvm-%{version} -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 + +%patch1 -p1 %patch101 -p1 %patch102 -p1 @@ -380,11 +378,6 @@ such as kvm_stat. %patch112 -p1 %patch113 -p1 -%patch201 -p1 -%patch202 -p1 - -%patch203 -p1 - %build # By default we build everything, but allow x86 to build a minimal version @@ -754,7 +747,6 @@ fi %{_datadir}/%{name}/sgabios.bin %{_datadir}/%{name}/linuxboot.bin %{_datadir}/%{name}/multiboot.bin -%{_datadir}/%{name}/mpc8544ds.dtb %{_datadir}/%{name}/kvmvapic.bin %{_datadir}/%{name}/vgabios.bin %{_datadir}/%{name}/vgabios-cirrus.bin @@ -826,9 +818,13 @@ fi %defattr(-,root,root) %{_bindir}/qemu-img %{_bindir}/qemu-io +%{_bindir}/vscclient %{_mandir}/man1/qemu-img.1* %changelog +* Mon Aug 06 2012 Cole Robinson - 1.2-0.1.20120806git3e430569.fc18 +- Update to git snapshot + * Sun Jul 29 2012 Cole Robinson - 1.1.1-1 - Upstream stable release 1.1.1 - Fix systemtap tapsets (bz 831763)