[Spice-commits] 26 commits - VERSION audio/audio_pt_int.c audio/wavcapture.c coroutine-sigaltstack.c hw/ide hw/qdev-monitor.c hw/qxl.c hw/usb hw/virtio-rng.c hw/virtio-serial-bus.c hw/virtio.c hw/virtio.h include/qemu pc-bios/acpi-dsdt.aml pc-bios/bios.bin pc-bios/multiboot.bin pc-bios/optionrom qapi/qapi-dealloc-visitor.c qemu-doc.texi qemu-img.texi qemu-options.hx qemu-seccomp.c qemu-tech.texi roms/Makefile roms/seabios

Gerd Hoffmann kraxel at kemper.freedesktop.org
Mon Dec 3 07:31:45 PST 2012


 VERSION                       |    2 
 audio/audio_pt_int.c          |    1 
 audio/wavcapture.c            |    1 
 coroutine-sigaltstack.c       |    4 -
 hw/ide/atapi.c                |   15 ++-
 hw/ide/core.c                 |    6 -
 hw/qdev-monitor.c             |    5 -
 hw/qxl.c                      |    1 
 hw/usb/bus.c                  |    7 +
 hw/usb/hcd-ehci-pci.c         |    1 
 hw/usb/hcd-ehci-sysbus.c      |    1 
 hw/usb/hcd-ohci.c             |    1 
 hw/usb/hcd-uhci.c             |    1 
 hw/usb/hcd-xhci.c             |    1 
 hw/virtio-rng.c               |   12 ++-
 hw/virtio-serial-bus.c        |    2 
 hw/virtio.c                   |   15 ++-
 hw/virtio.h                   |    3 
 include/qemu/ratelimit.h      |    2 
 pc-bios/acpi-dsdt.aml         |binary
 pc-bios/bios.bin              |binary
 pc-bios/multiboot.bin         |binary
 pc-bios/optionrom/multiboot.S |    7 +
 qapi/qapi-dealloc-visitor.c   |    2 
 qemu-doc.texi                 |  167 ++++++++++++++++++++++++++++++++++++++++++
 qemu-img.texi                 |   84 ++++++---------------
 qemu-options.hx               |   40 +++++-----
 qemu-seccomp.c                |  156 ++++++++++++++++++++++++++++++++++-----
 qemu-tech.texi                |   10 +-
 roms/Makefile                 |    1 
 roms/seabios                  |    2 
 31 files changed, 417 insertions(+), 133 deletions(-)

New commits:
commit 01bbd8bf2caced5cb07939669f58d3a7bcc78092
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Fri Nov 30 15:04:16 2012 -0600

    Update version for 1.3.0-rc2
    
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

diff --git a/VERSION b/VERSION
index 1ec5aef..19838b2 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.91
+1.2.92
commit ee0caa8c8fe46b2b2c59604a3b2da0b2d3312d92
Merge: 90e0793... d7a51db...
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Fri Nov 30 10:24:57 2012 -0600

    Merge remote-tracking branch 'kraxel/seabios-b1c35f2' into staging
    
    * kraxel/seabios-b1c35f2:
      seabios: update binaries in pc-bios/
      roms: also copy the dsdt when updating seabios.
      seabios: update to b1c35f2b28cc0c94ebed8176ff61ac0e0b377798
    
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

commit 90e07938aa08fc179270d46c35fe9fd27c527f33
Merge: 3235f92... 2ad2210...
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Fri Nov 30 10:24:24 2012 -0600

    Merge remote-tracking branch 'kwolf/for-anthony' into staging
    
    * kwolf/for-anthony:
      coroutine-sigaltstack.c: Use stack_t, not struct sigaltstack
      stream: fix ratelimit_set_speed
      atapi: make change media detection for guests easier
      Documentation: Update image format information
      Documentation: Update block cache mode information
    
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

commit 3235f92784bcf679894b34081f4f4b04e4a358e3
Merge: 923fd98... fa98efe...
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Fri Nov 30 10:20:36 2012 -0600

    Merge remote-tracking branch 'spice/spice.v65' into staging
    
    * spice/spice.v65:
      qxl: reload memslots after migration, when qxl is in UNDEFINED mode
    
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

commit 923fd9897b0ffbcc5091181f8b0484aa2e36413b
Merge: 36520fa... 2b29f49...
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Fri Nov 30 10:20:21 2012 -0600

    Merge remote-tracking branch 'kraxel/usb.73' into staging
    
    * kraxel/usb.73:
      ehci-sysbus: Attach DMA context.
      usb: fail usbdevice_create() when there is no USB bus
      usb: tag usb host adapters as not hotpluggable.
    
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

commit 36520faa33abb91b3c8a80e935b82afec78f9bee
Merge: 46ee77b... 1d16252...
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Fri Nov 30 10:19:54 2012 -0600

    Merge remote-tracking branch 'qmp/queue/qmp' into staging
    
    * qmp/queue/qmp:
      qapi: fix qapi_dealloc_type_size parameter type
    
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

commit d7a51dbbaa70677846453f8c961590913052dd86
Author: Gerd Hoffmann <kraxel at redhat.com>
Date:   Fri Nov 30 16:24:59 2012 +0100

    seabios: update binaries in pc-bios/
    
    Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

diff --git a/pc-bios/acpi-dsdt.aml b/pc-bios/acpi-dsdt.aml
new file mode 100644
index 0000000..bb3dd83
Binary files /dev/null and b/pc-bios/acpi-dsdt.aml differ
diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin
index eac67cb..dc9b57d 100644
Binary files a/pc-bios/bios.bin and b/pc-bios/bios.bin differ
commit 7527bd85be991d91584329fcbb44af322758719e
Author: Gerd Hoffmann <kraxel at redhat.com>
Date:   Fri Nov 30 16:24:40 2012 +0100

    roms: also copy the dsdt when updating seabios.
    
    Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

diff --git a/roms/Makefile b/roms/Makefile
index feb9c2b..5e645bc 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -12,6 +12,7 @@ bios: config.seabios
 	sh configure-seabios.sh $<
 	make -C seabios out/bios.bin
 	cp seabios/out/bios.bin ../pc-bios/bios.bin
+	cp seabios/out/*dsdt.aml ../pc-bios/
 
 seavgabios: $(patsubst %,seavgabios-%,$(vgabios_variants))
 
commit 46ee77b357dde619db30d835f73a9001b9c75a03
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Fri Nov 30 09:04:47 2012 -0600

    Revert "audio/wavcapture: Clarify licensing"
    
    This reverts commit 456a84d156a7c42f18b1da176dd6219e2dffd043.
    
    This patch wasn't submitted to the list and did not get Acked by other
    copyright holders in the file.
    
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

diff --git a/audio/wavcapture.c b/audio/wavcapture.c
index f73691c..4f785f5 100644
--- a/audio/wavcapture.c
+++ b/audio/wavcapture.c
@@ -1,4 +1,3 @@
-/* public domain */
 #include "hw/hw.h"
 #include "monitor.h"
 #include "audio.h"
commit d76aa45bf1f226d2c4e28f6dacbdbbefd51a37ca
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Fri Nov 30 09:04:08 2012 -0600

    Revert "audio/audio_pt_int: Clarify licensing"
    
    This reverts commit 72bc6f1bf710e205f175af9b1fc8bbd83e8da71f.
    
    This patch wasn't submitted to the list and did not get Acked by other
    copyright holders in the file.
    
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

diff --git a/audio/audio_pt_int.c b/audio/audio_pt_int.c
index e3ccb11..9a9c306 100644
--- a/audio/audio_pt_int.c
+++ b/audio/audio_pt_int.c
@@ -1,4 +1,3 @@
-/* public domain */
 #include "qemu-common.h"
 #include "audio.h"
 
commit 1f32989d7349c31419d01a0b874f5eb3a238d913
Author: Gerd Hoffmann <kraxel at redhat.com>
Date:   Fri Nov 30 16:02:58 2012 +0100

    seabios: update to b1c35f2b28cc0c94ebed8176ff61ac0e0b377798
    
    This patch updates the seabios submodule to commit
    b1c35f2b28cc0c94ebed8176ff61ac0e0b377798.
    
    Most important change is that seabios sets the busmaster bit
    in the pci config space for the lsi and esp scsi host adapters.
    Since commit 1c380f9460522f32c8dd2577b2a53d518ec91c6d qemu
    is strict here and disallows any dma access when the bit is
    clear.
    
    Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

diff --git a/roms/seabios b/roms/seabios
index 5a02306..b1c35f2 160000
--- a/roms/seabios
+++ b/roms/seabios
@@ -1 +1 @@
-Subproject commit 5a023065388287e261ae9212452ff541f9fa9cd3
+Subproject commit b1c35f2b28cc0c94ebed8176ff61ac0e0b377798
commit c6e052f0809b56a657b2afcd728e07ffddb28f06
Author: Paolo Bonzini <pbonzini at redhat.com>
Date:   Thu Nov 29 18:11:50 2012 +0100

    multiboot: fix e801 memory map
    
    The e801 memory sizes in the multiboot structures hard-code the available
    low memory to 640.  However, the value should not include the size of the
    EBDA.  Fill the value in the option ROM, getting the size of low memory
    from the BIOS.
    
    Cc: Alexander Graf <agraf at suse.de>
    Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

diff --git a/pc-bios/multiboot.bin b/pc-bios/multiboot.bin
index f74a6e1..7b3c174 100644
Binary files a/pc-bios/multiboot.bin and b/pc-bios/multiboot.bin differ
diff --git a/pc-bios/optionrom/multiboot.S b/pc-bios/optionrom/multiboot.S
index f08222a..003bcfb 100644
--- a/pc-bios/optionrom/multiboot.S
+++ b/pc-bios/optionrom/multiboot.S
@@ -75,6 +75,13 @@ run_multiboot:
 	shr		$4, %eax
 	mov		%ax, %fs
 
+	/* Account for the EBDA in the multiboot structure's e801
+	 * map.
+	 */
+	int		$0x12
+	cwtl
+	movl		%eax, %fs:4
+
 	/* ES = mmap_addr */
 	mov 		%fs:48, %eax
 	shr		$4, %eax
commit fe512d65e0b752dfa7af6cfb374a0820d35040d0
Author: Eduardo Otubo <otubo at linux.vnet.ibm.com>
Date:   Thu Nov 29 13:56:41 2012 -0200

    seccomp: adding new syscalls (bugzilla 855162)
    
    According to the bug 855162[0] - there's the need of adding new syscalls
    to the whitelist when using Qemu with Libvirt.
    
    [0] - https://bugzilla.redhat.com/show_bug.cgi?id=855162
    
    Reported-by: Paul Moore <pmoore at redhat.com>
    Tested-by: Paul Moore <pmoore at redhat.com>
    Signed-off-by: Eduardo Otubo <otubo at linux.vnet.ibm.com>
    Signed-off-by: Corey Bryant <coreyb at linux.vnet.ibm.com>
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

diff --git a/qemu-seccomp.c b/qemu-seccomp.c
index 64329a3..2a71d6f 100644
--- a/qemu-seccomp.c
+++ b/qemu-seccomp.c
@@ -26,8 +26,12 @@ static const struct QemuSeccompSyscall seccomp_whitelist[] = {
     { SCMP_SYS(timer_gettime), 254 },
     { SCMP_SYS(futex), 253 },
     { SCMP_SYS(select), 252 },
+#if defined(__x86_64__)
     { SCMP_SYS(recvfrom), 251 },
     { SCMP_SYS(sendto), 250 },
+#elif defined(__i386__)
+    { SCMP_SYS(socketcall), 250 },
+#endif
     { SCMP_SYS(read), 249 },
     { SCMP_SYS(brk), 248 },
     { SCMP_SYS(clone), 247 },
@@ -36,15 +40,30 @@ static const struct QemuSeccompSyscall seccomp_whitelist[] = {
     { SCMP_SYS(execve), 245 },
     { SCMP_SYS(open), 245 },
     { SCMP_SYS(ioctl), 245 },
+#if defined(__x86_64__)
+    { SCMP_SYS(socket), 245 },
+    { SCMP_SYS(setsockopt), 245 },
     { SCMP_SYS(recvmsg), 245 },
     { SCMP_SYS(sendmsg), 245 },
     { SCMP_SYS(accept), 245 },
     { SCMP_SYS(connect), 245 },
+    { SCMP_SYS(socketpair), 245 },
+    { SCMP_SYS(bind), 245 },
+    { SCMP_SYS(listen), 245 },
+    { SCMP_SYS(semget), 245 },
+#elif defined(__i386__)
+    { SCMP_SYS(ipc), 245 },
+#endif
     { SCMP_SYS(gettimeofday), 245 },
     { SCMP_SYS(readlink), 245 },
     { SCMP_SYS(access), 245 },
     { SCMP_SYS(prctl), 245 },
     { SCMP_SYS(signalfd), 245 },
+    { SCMP_SYS(getrlimit), 245 },
+    { SCMP_SYS(set_tid_address), 245 },
+    { SCMP_SYS(statfs), 245 },
+    { SCMP_SYS(unlink), 245 },
+    { SCMP_SYS(wait4), 245 },
 #if defined(__i386__)
     { SCMP_SYS(fcntl64), 245 },
     { SCMP_SYS(fstat64), 245 },
@@ -56,30 +75,33 @@ static const struct QemuSeccompSyscall seccomp_whitelist[] = {
     { SCMP_SYS(sigreturn), 245 },
     { SCMP_SYS(_newselect), 245 },
     { SCMP_SYS(_llseek), 245 },
-    { SCMP_SYS(mmap2), 245},
+    { SCMP_SYS(mmap2), 245 },
     { SCMP_SYS(sigprocmask), 245 },
-#elif defined(__x86_64__)
-    { SCMP_SYS(sched_getparam), 245},
-    { SCMP_SYS(sched_getscheduler), 245},
-    { SCMP_SYS(fstat), 245},
-    { SCMP_SYS(clock_getres), 245},
-    { SCMP_SYS(sched_get_priority_min), 245},
-    { SCMP_SYS(sched_get_priority_max), 245},
-    { SCMP_SYS(stat), 245},
-    { SCMP_SYS(socket), 245},
-    { SCMP_SYS(setsockopt), 245},
-    { SCMP_SYS(uname), 245},
-    { SCMP_SYS(semget), 245},
 #endif
+    { SCMP_SYS(sched_getparam), 245 },
+    { SCMP_SYS(sched_getscheduler), 245 },
+    { SCMP_SYS(fstat), 245 },
+    { SCMP_SYS(clock_getres), 245 },
+    { SCMP_SYS(sched_get_priority_min), 245 },
+    { SCMP_SYS(sched_get_priority_max), 245 },
+    { SCMP_SYS(stat), 245 },
+    { SCMP_SYS(uname), 245 },
     { SCMP_SYS(eventfd2), 245 },
     { SCMP_SYS(dup), 245 },
+    { SCMP_SYS(dup2), 245 },
+    { SCMP_SYS(dup3), 245 },
     { SCMP_SYS(gettid), 245 },
+    { SCMP_SYS(getgid), 245 },
+    { SCMP_SYS(getegid), 245 },
+    { SCMP_SYS(getuid), 245 },
+    { SCMP_SYS(geteuid), 245 },
     { SCMP_SYS(timer_create), 245 },
     { SCMP_SYS(exit), 245 },
     { SCMP_SYS(clock_gettime), 245 },
     { SCMP_SYS(time), 245 },
     { SCMP_SYS(restart_syscall), 245 },
     { SCMP_SYS(pwrite64), 245 },
+    { SCMP_SYS(nanosleep), 245 },
     { SCMP_SYS(chown), 245 },
     { SCMP_SYS(openat), 245 },
     { SCMP_SYS(getdents), 245 },
@@ -93,8 +115,6 @@ static const struct QemuSeccompSyscall seccomp_whitelist[] = {
     { SCMP_SYS(lseek), 245 },
     { SCMP_SYS(pselect6), 245 },
     { SCMP_SYS(fork), 245 },
-    { SCMP_SYS(bind), 245 },
-    { SCMP_SYS(listen), 245 },
     { SCMP_SYS(eventfd), 245 },
     { SCMP_SYS(rt_sigprocmask), 245 },
     { SCMP_SYS(write), 244 },
@@ -104,10 +124,112 @@ static const struct QemuSeccompSyscall seccomp_whitelist[] = {
     { SCMP_SYS(pipe2), 242 },
     { SCMP_SYS(munmap), 242 },
     { SCMP_SYS(mremap), 242 },
+    { SCMP_SYS(fdatasync), 242 },
+    { SCMP_SYS(close), 242 },
+    { SCMP_SYS(rt_sigpending), 242 },
+    { SCMP_SYS(rt_sigtimedwait), 242 },
+    { SCMP_SYS(readv), 242 },
+    { SCMP_SYS(writev), 242 },
+    { SCMP_SYS(preadv), 242 },
+    { SCMP_SYS(pwritev), 242 },
+    { SCMP_SYS(setrlimit), 242 },
+    { SCMP_SYS(ftruncate), 242 },
+    { SCMP_SYS(lstat), 242 },
+    { SCMP_SYS(pipe), 242 },
+    { SCMP_SYS(umask), 242 },
+    { SCMP_SYS(chdir), 242 },
+    { SCMP_SYS(setitimer), 242 },
+    { SCMP_SYS(setsid), 242 },
+    { SCMP_SYS(poll), 242 },
+    { SCMP_SYS(epoll_create), 242 },
+    { SCMP_SYS(epoll_ctl), 242 },
+    { SCMP_SYS(epoll_wait), 242 },
+#if defined(__i386__)
+    { SCMP_SYS(waitpid), 242 },
+#elif defined(__x86_64__)
     { SCMP_SYS(getsockname), 242 },
     { SCMP_SYS(getpeername), 242 },
-    { SCMP_SYS(fdatasync), 242 },
-    { SCMP_SYS(close), 242 }
+    { SCMP_SYS(accept4), 242 },
+    { SCMP_SYS(newfstatat), 241 },
+    { SCMP_SYS(shutdown), 241 },
+    { SCMP_SYS(getsockopt), 241 },
+    { SCMP_SYS(semctl), 241 },
+    { SCMP_SYS(semop), 241 },
+    { SCMP_SYS(semtimedop), 241 },
+    { SCMP_SYS(epoll_ctl_old), 241 },
+    { SCMP_SYS(epoll_wait_old), 241 },
+#endif
+    { SCMP_SYS(epoll_pwait), 241 },
+    { SCMP_SYS(epoll_create1), 241 },
+    { SCMP_SYS(ppoll), 241 },
+    { SCMP_SYS(creat), 241 },
+    { SCMP_SYS(link), 241 },
+    { SCMP_SYS(getpid), 241 },
+    { SCMP_SYS(getppid), 241 },
+    { SCMP_SYS(getpgrp), 241 },
+    { SCMP_SYS(getpgid), 241 },
+    { SCMP_SYS(getsid), 241 },
+    { SCMP_SYS(getdents64), 241 },
+    { SCMP_SYS(getresuid), 241 },
+    { SCMP_SYS(getresgid), 241 },
+    { SCMP_SYS(getgroups), 241 },
+#if defined(__i386__)
+    { SCMP_SYS(getresuid32), 241 },
+    { SCMP_SYS(getresgid32), 241 },
+    { SCMP_SYS(getgroups32), 241 },
+    { SCMP_SYS(signal), 241 },
+    { SCMP_SYS(sigaction), 241 },
+    { SCMP_SYS(sigsuspend), 241 },
+    { SCMP_SYS(sigpending), 241 },
+    { SCMP_SYS(truncate64), 241 },
+    { SCMP_SYS(ftruncate64), 241 },
+    { SCMP_SYS(fchown32), 241 },
+    { SCMP_SYS(chown32), 241 },
+    { SCMP_SYS(lchown32), 241 },
+    { SCMP_SYS(statfs64), 241 },
+    { SCMP_SYS(fstatfs64), 241 },
+    { SCMP_SYS(fstatat64), 241 },
+    { SCMP_SYS(lstat64), 241 },
+    { SCMP_SYS(sendfile64), 241 },
+    { SCMP_SYS(ugetrlimit), 241 },
+#endif
+    { SCMP_SYS(alarm), 241 },
+    { SCMP_SYS(rt_sigsuspend), 241 },
+    { SCMP_SYS(rt_sigqueueinfo), 241 },
+    { SCMP_SYS(rt_tgsigqueueinfo), 241 },
+    { SCMP_SYS(sigaltstack), 241 },
+    { SCMP_SYS(signalfd4), 241 },
+    { SCMP_SYS(truncate), 241 },
+    { SCMP_SYS(fchown), 241 },
+    { SCMP_SYS(lchown), 241 },
+    { SCMP_SYS(fchownat), 241 },
+    { SCMP_SYS(fstatfs), 241 },
+    { SCMP_SYS(sendfile), 241 },
+    { SCMP_SYS(getitimer), 241 },
+    { SCMP_SYS(syncfs), 241 },
+    { SCMP_SYS(fsync), 241 },
+    { SCMP_SYS(fchdir), 241 },
+    { SCMP_SYS(flock), 241 },
+    { SCMP_SYS(msync), 241 },
+    { SCMP_SYS(sched_setparam), 241 },
+    { SCMP_SYS(sched_setscheduler), 241 },
+    { SCMP_SYS(sched_yield), 241 },
+    { SCMP_SYS(sched_rr_get_interval), 241 },
+    { SCMP_SYS(sched_setaffinity), 241 },
+    { SCMP_SYS(sched_getaffinity), 241 },
+    { SCMP_SYS(readahead), 241 },
+    { SCMP_SYS(timer_getoverrun), 241 },
+    { SCMP_SYS(unlinkat), 241 },
+    { SCMP_SYS(readlinkat), 241 },
+    { SCMP_SYS(faccessat), 241 },
+    { SCMP_SYS(get_robust_list), 241 },
+    { SCMP_SYS(splice), 241 },
+    { SCMP_SYS(vmsplice), 241 },
+    { SCMP_SYS(getcpu), 241 },
+    { SCMP_SYS(sendmmsg), 241 },
+    { SCMP_SYS(recvmmsg), 241 },
+    { SCMP_SYS(prlimit64), 241 },
+    { SCMP_SYS(waitid), 241 }
 };
 
 int seccomp_start(void)
commit 2ad2210a7d2483c4c98423ebd59fad87c6124096
Author: Peter Maydell <peter.maydell at linaro.org>
Date:   Sat Nov 10 21:47:52 2012 +0000

    coroutine-sigaltstack.c: Use stack_t, not struct sigaltstack
    
    Use the POSIX-specified stack_t type as the argument to sigaltstack()
    rather than the legacy struct sigaltstack. This allows us to compile
    on MacOSX with --with-coroutine=sigaltstack.
    
    Signed-off-by: Peter Maydell <peter.maydell at linaro.org>
    Reviewed-by: Stefan Hajnoczi <stefanha at redhat.com>
    Signed-off-by: Kevin Wolf <kwolf at redhat.com>

diff --git a/coroutine-sigaltstack.c b/coroutine-sigaltstack.c
index 861e878..39dbaa5 100644
--- a/coroutine-sigaltstack.c
+++ b/coroutine-sigaltstack.c
@@ -171,8 +171,8 @@ static Coroutine *coroutine_new(void)
     CoroutineThreadState *coTS;
     struct sigaction sa;
     struct sigaction osa;
-    struct sigaltstack ss;
-    struct sigaltstack oss;
+    stack_t ss;
+    stack_t oss;
     sigset_t sigs;
     sigset_t osigs;
     jmp_buf old_env;
commit e3980e28bb888bf643054770452998d1b4319609
Author: Dietmar Maurer <dietmar at proxmox.com>
Date:   Wed Oct 24 12:10:47 2012 +0200

    stream: fix ratelimit_set_speed
    
    The formula to compute slice_quota was wrong since commit 6ef228fc.
    
    Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
    Reviewed-by: Eric Blake <eblake at redhat.com>
    Signed-off-by: Kevin Wolf <kwolf at redhat.com>

diff --git a/include/qemu/ratelimit.h b/include/qemu/ratelimit.h
index c6ac281..d1610f1 100644
--- a/include/qemu/ratelimit.h
+++ b/include/qemu/ratelimit.h
@@ -42,7 +42,7 @@ static inline void ratelimit_set_speed(RateLimit *limit, uint64_t speed,
                                        uint64_t slice_ns)
 {
     limit->slice_ns = slice_ns;
-    limit->slice_quota = ((double)speed * 1000000000ULL) / slice_ns;
+    limit->slice_quota = ((double)speed * slice_ns)/1000000000ULL;
 }
 
 #endif
commit 0c6f08b0b0d0c758789cdb7257a48e873598bdbb
Author: Pavel Hrdina <phrdina at redhat.com>
Date:   Mon Nov 26 16:37:39 2012 +0100

    atapi: make change media detection for guests easier
    
    If you have a guest with a media in the optical drive and you change
    it, the windows guest cannot properly recognize this media change.
    
    Windows needs to detect sense "NOT_READY with ASC_MEDIUM_NOT_PRESENT"
    before we send sense "UNIT_ATTENTION with ASC_MEDIUM_MAY_HAVE_CHANGED".
    
    Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
    Signed-off-by: Kevin Wolf <kwolf at redhat.com>

diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c
index 685cbaa..861fd2b 100644
--- a/hw/ide/atapi.c
+++ b/hw/ide/atapi.c
@@ -1124,12 +1124,17 @@ void ide_atapi_cmd(IDEState *s)
      * GET_EVENT_STATUS_NOTIFICATION to detect such tray open/close
      * states rely on this behavior.
      */
-    if (!s->tray_open && bdrv_is_inserted(s->bs) && s->cdrom_changed) {
-        ide_atapi_cmd_error(s, NOT_READY, ASC_MEDIUM_NOT_PRESENT);
+    if (!(atapi_cmd_table[s->io_buffer[0]].flags & ALLOW_UA) &&
+        !s->tray_open && bdrv_is_inserted(s->bs) && s->cdrom_changed) {
+
+        if (s->cdrom_changed == 1) {
+            ide_atapi_cmd_error(s, NOT_READY, ASC_MEDIUM_NOT_PRESENT);
+            s->cdrom_changed = 2;
+        } else {
+            ide_atapi_cmd_error(s, UNIT_ATTENTION, ASC_MEDIUM_MAY_HAVE_CHANGED);
+            s->cdrom_changed = 0;
+        }
 
-        s->cdrom_changed = 0;
-        s->sense_key = UNIT_ATTENTION;
-        s->asc = ASC_MEDIUM_MAY_HAVE_CHANGED;
         return;
     }
 
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 8da894f..c4f93d0 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -2160,12 +2160,6 @@ static int ide_drive_post_load(void *opaque, int version_id)
 {
     IDEState *s = opaque;
 
-    if (version_id < 3) {
-        if (s->sense_key == UNIT_ATTENTION &&
-            s->asc == ASC_MEDIUM_MAY_HAVE_CHANGED) {
-            s->cdrom_changed = 1;
-        }
-    }
     if (s->identify_set) {
         bdrv_set_enable_write_cache(s->bs, !!(s->identify_data[85] & (1 << 5)));
     }
commit d3067b020bdeb572f381c5be4420eedfd6af5884
Author: Kevin Wolf <kwolf at redhat.com>
Date:   Wed Nov 21 14:21:47 2012 +0100

    Documentation: Update image format information
    
    Document new and yet undocumented options and image formats. The
    qemu-img man page contains information only for raw and qcow2 now and
    references the HTML documentation for a more detailed description of
    other formats.
    
    Signed-off-by: Kevin Wolf <kwolf at redhat.com>
    Acked-by: Stefan Hajnoczi <stefanha at redhat.com>

diff --git a/qemu-doc.texi b/qemu-doc.texi
index 6ff309d..6d7f50d 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -416,6 +416,7 @@ snapshots.
 * vm_snapshots::              VM snapshots
 * qemu_img_invocation::       qemu-img Invocation
 * qemu_nbd_invocation::       qemu-nbd Invocation
+* disk_images_formats::       Disk image file formats
 * host_drives::               Using host drives
 * disk_images_fat_images::    Virtual FAT disk images
 * disk_images_nbd::           NBD access
@@ -507,6 +508,172 @@ state is not saved or restored properly (in particular USB).
 
 @include qemu-nbd.texi
 
+ at node disk_images_formats
+ at subsection Disk image file formats
+
+QEMU supports many image file formats that can be used with VMs as well as with
+any of the tools (like @code{qemu-img}). This includes the preferred formats
+raw and qcow2 as well as formats that are supported for compatibility with
+older QEMU versions or other hypervisors.
+
+Depending on the image format, different options can be passed to
+ at code{qemu-img create} and @code{qemu-img convert} using the @code{-o} option.
+This section describes each format and the options that are supported for it.
+
+ at table @option
+ at item raw
+
+Raw disk image format. This format has the advantage of
+being simple and easily exportable to all other emulators. If your
+file system supports @emph{holes} (for example in ext2 or ext3 on
+Linux or NTFS on Windows), then only the written sectors will reserve
+space. Use @code{qemu-img info} to know the real size used by the
+image or @code{ls -ls} on Unix/Linux.
+
+ at item qcow2
+QEMU image format, the most versatile format. Use it to have smaller
+images (useful if your filesystem does not supports holes, for example
+on Windows), optional AES encryption, zlib based compression and
+support of multiple VM snapshots.
+
+Supported options:
+ at table @code
+ at item compat
+Determines the qcow2 version to use. @code{compat=0.10} uses the traditional
+image format that can be read by any QEMU since 0.10 (this is the default).
+ at code{compat=1.1} enables image format extensions that only QEMU 1.1 and
+newer understand. Amongst others, this includes zero clusters, which allow
+efficient copy-on-read for sparse images.
+
+ at item backing_file
+File name of a base image (see @option{create} subcommand)
+ at item backing_fmt
+Image format of the base image
+ at item encryption
+If this option is set to @code{on}, the image is encrypted.
+
+Encryption uses the AES format which is very secure (128 bit keys). Use
+a long password (16 characters) to get maximum protection.
+
+ at item cluster_size
+Changes the qcow2 cluster size (must be between 512 and 2M). Smaller cluster
+sizes can improve the image file size whereas larger cluster sizes generally
+provide better performance.
+
+ at item preallocation
+Preallocation mode (allowed values: off, metadata). An image with preallocated
+metadata is initially larger but can improve performance when the image needs
+to grow.
+
+ at item lazy_refcounts
+If this option is set to @code{on}, reference count updates are postponed with
+the goal of avoiding metadata I/O and improving performance. This is
+particularly interesting with @option{cache=writethrough} which doesn't batch
+metadata updates. The tradeoff is that after a host crash, the reference count
+tables must be rebuilt, i.e. on the next open an (automatic) @code{qemu-img
+check -r all} is required, which may take some time.
+
+This option can only be enabled if @code{compat=1.1} is specified.
+
+ at end table
+
+ at item qed
+Old QEMU image format with support for backing files and compact image files
+(when your filesystem or transport medium does not support holes).
+
+When converting QED images to qcow2, you might want to consider using the
+ at code{lazy_refcounts=on} option to get a more QED-like behaviour.
+
+Supported options:
+ at table @code
+ at item backing_file
+File name of a base image (see @option{create} subcommand).
+ at item backing_fmt
+Image file format of backing file (optional).  Useful if the format cannot be
+autodetected because it has no header, like some vhd/vpc files.
+ at item cluster_size
+Changes the cluster size (must be power-of-2 between 4K and 64K). Smaller
+cluster sizes can improve the image file size whereas larger cluster sizes
+generally provide better performance.
+ at item table_size
+Changes the number of clusters per L1/L2 table (must be power-of-2 between 1
+and 16).  There is normally no need to change this value but this option can be
+used for performance benchmarking.
+ at end table
+
+ at item qcow
+Old QEMU image format with support for backing files, compact image files,
+encryption and compression.
+
+Supported options:
+ at table @code
+ at item backing_file
+File name of a base image (see @option{create} subcommand)
+ at item encryption
+If this option is set to @code{on}, the image is encrypted.
+ at end table
+
+ at item cow
+User Mode Linux Copy On Write image format. It is supported only for
+compatibility with previous versions.
+Supported options:
+ at table @code
+ at item backing_file
+File name of a base image (see @option{create} subcommand)
+ at end table
+
+ at item vdi
+VirtualBox 1.1 compatible image format.
+Supported options:
+ at table @code
+ at item static
+If this option is set to @code{on}, the image is created with metadata
+preallocation.
+ at end table
+
+ at item vmdk
+VMware 3 and 4 compatible image format.
+
+Supported options:
+ at table @code
+ at item backing_file
+File name of a base image (see @option{create} subcommand).
+ at item compat6
+Create a VMDK version 6 image (instead of version 4)
+ at item subformat
+Specifies which VMDK subformat to use. Valid options are
+ at code{monolithicSparse} (default),
+ at code{monolithicFlat},
+ at code{twoGbMaxExtentSparse},
+ at code{twoGbMaxExtentFlat} and
+ at code{streamOptimized}.
+ at end table
+
+ at item vpc
+VirtualPC compatible image format (VHD).
+Supported options:
+ at table @code
+ at item subformat
+Specifies which VHD subformat to use. Valid options are
+ at code{dynamic} (default) and @code{fixed}.
+ at end table
+ at end table
+
+ at subsubsection Read-only formats
+More disk image file formats are supported in a read-only mode.
+ at table @option
+ at item bochs
+Bochs images of @code{growing} type.
+ at item cloop
+Linux Compressed Loop image, useful only to reuse directly compressed
+CD-ROM images present for example in the Knoppix CD-ROMs.
+ at item dmg
+Apple disk image.
+ at item parallels
+Parallels disk image format.
+ at end table
+
+
 @node host_drives
 @subsection Using host drives
 
diff --git a/qemu-img.texi b/qemu-img.texi
index 60b83fc..00fca8d 100644
--- a/qemu-img.texi
+++ b/qemu-img.texi
@@ -226,7 +226,10 @@ After using this command to grow a disk image, you must use file system and
 partitioning tools inside the VM to actually begin using the new space on the
 device.
 @end table
+ at c man end
 
+ at ignore
+ at c man begin NOTES
 Supported image file formats:
 
 @table @option
@@ -247,6 +250,13 @@ support of multiple VM snapshots.
 
 Supported options:
 @table @code
+ at item compat
+Determines the qcow2 version to use. @code{compat=0.10} uses the traditional
+image format that can be read by any QEMU since 0.10 (this is the default).
+ at code{compat=1.1} enables image format extensions that only QEMU 1.1 and
+newer understand. Amongst others, this includes zero clusters, which allow
+efficient copy-on-read for sparse images.
+
 @item backing_file
 File name of a base image (see @option{create} subcommand)
 @item backing_fmt
@@ -267,73 +277,33 @@ Preallocation mode (allowed values: off, metadata). An image with preallocated
 metadata is initially larger but can improve performance when the image needs
 to grow.
 
- at end table
+ at item lazy_refcounts
+If this option is set to @code{on}, reference count updates are postponed with
+the goal of avoiding metadata I/O and improving performance. This is
+particularly interesting with @option{cache=writethrough} which doesn't batch
+metadata updates. The tradeoff is that after a host crash, the reference count
+tables must be rebuilt, i.e. on the next open an (automatic) @code{qemu-img
+check -r all} is required, which may take some time.
 
- at item qed
-Image format with support for backing files and compact image files (when your
-filesystem or transport medium does not support holes).  Good performance due
-to less metadata than the more featureful qcow2 format, especially with
-cache=writethrough or cache=directsync.  Consider using qcow2 which will soon
-have a similar optimization and is most actively developed.
+This option can only be enabled if @code{compat=1.1} is specified.
 
-Supported options:
- at table @code
- at item backing_file
-File name of a base image (see @option{create} subcommand).
- at item backing_fmt
-Image file format of backing file (optional).  Useful if the format cannot be
-autodetected because it has no header, like some vhd/vpc files.
- at item cluster_size
-Changes the cluster size (must be power-of-2 between 4K and 64K). Smaller
-cluster sizes can improve the image file size whereas larger cluster sizes
-generally provide better performance.
- at item table_size
-Changes the number of clusters per L1/L2 table (must be power-of-2 between 1
-and 16).  There is normally no need to change this value but this option can be
-used for performance benchmarking.
 @end table
 
- at item qcow
-Old QEMU image format. Left for compatibility.
+ at item Other
+QEMU also supports various other image file formats for compatibility with
+older QEMU versions or other hypervisors, including VMDK, VDI, VHD (vpc), qcow1
+and QED. For a full list of supported formats see @code{qemu-img --help}.
+For a more detailed description of these formats, see the QEMU Emulation User
+Documentation.
 
-Supported options:
- at table @code
- at item backing_file
-File name of a base image (see @option{create} subcommand)
- at item encryption
-If this option is set to @code{on}, the image is encrypted.
- at end table
-
- at item cow
-User Mode Linux Copy On Write image format. Used to be the only growable
-image format in QEMU. It is supported only for compatibility with
-previous versions. It does not work on win32.
- at item vdi
-VirtualBox 1.1 compatible image format.
- at item vmdk
-VMware 3 and 4 compatible image format.
-
-Supported options:
- at table @code
- at item backing_fmt
-Image format of the base image
- at item compat6
-Create a VMDK version 6 image (instead of version 4)
- at end table
-
- at item vpc
-VirtualPC compatible image format (VHD).
-
- at item cloop
-Linux Compressed Loop image, useful only to reuse directly compressed
-CD-ROM images present for example in the Knoppix CD-ROMs.
+The main purpose of the block drivers for these formats is image conversion.
+For running VMs, it is recommended to convert the disk images to either raw or
+qcow2 in order to achieve good performance.
 @end table
 
 
 @c man end
 
- at ignore
-
 @setfilename qemu-img
 @settitle QEMU disk image utility
 
commit a13e5e05570e6c0d0a6c8d9b5c516278770adae5
Author: Kevin Wolf <kwolf at redhat.com>
Date:   Wed Nov 21 12:26:56 2012 +0100

    Documentation: Update block cache mode information
    
    Somehow we forgot to update this when cache=writeback became the
    default. While changing the information on the default, also make the
    description of all caches modes a bit more accurate.
    
    Signed-off-by: Kevin Wolf <kwolf at redhat.com>
    Acked-by: Stefan Hajnoczi <stefanha at redhat.com>

diff --git a/qemu-options.hx b/qemu-options.hx
index fbcf079..de43b1b 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -206,33 +206,33 @@ Open drive @option{file} as read-only. Guest write attempts will fail.
 file sectors into the image file.
 @end table
 
-By default, writethrough caching is used for all block device.  This means that
-the host page cache will be used to read and write data but write notification
-will be sent to the guest only when the data has been reported as written by
-the storage subsystem.
-
-Writeback caching will report data writes as completed as soon as the data is
-present in the host page cache.  This is safe as long as you trust your host.
-If your host crashes or loses power, then the guest may experience data
-corruption.
+By default, the @option{cache=writeback} mode is used. It will report data
+writes as completed as soon as the data is present in the host page cache.
+This is safe as long as your guest OS makes sure to correctly flush disk caches
+where needed. If your guest OS does not handle volatile disk write caches
+correctly and your host crashes or loses power, then the guest may experience
+data corruption.
+
+For such guests, you should consider using @option{cache=writethrough}. This
+means that the host page cache will be used to read and write data, but write
+notification will be sent to the guest only after QEMU has made sure to flush
+each write to the disk. Be aware that this has a major impact on performance.
 
 The host page cache can be avoided entirely with @option{cache=none}.  This will
-attempt to do disk IO directly to the guests memory.  QEMU may still perform
-an internal copy of the data.
+attempt to do disk IO directly to the guest's memory.  QEMU may still perform
+an internal copy of the data. Note that this is considered a writeback mode and
+the guest OS must handle the disk write cache correctly in order to avoid data
+corruption on host crashes.
 
 The host page cache can be avoided while only sending write notifications to
-the guest when the data has been reported as written by the storage subsystem
-using @option{cache=directsync}.
-
-Some block drivers perform badly with @option{cache=writethrough}, most notably,
-qcow2.  If performance is more important than correctness,
- at option{cache=writeback} should be used with qcow2.
+the guest when the data has been flushed to the disk using
+ at option{cache=directsync}.
 
 In case you don't care about data integrity over host failures, use
-cache=unsafe. This option tells QEMU that it never needs to write any data
-to the disk but can instead keeps things in cache. If anything goes wrong,
+ at option{cache=unsafe}. This option tells QEMU that it never needs to write any
+data to the disk but can instead keep things in cache. If anything goes wrong,
 like your host losing power, the disk storage getting disconnected accidentally,
-etc. you're image will most probably be rendered unusable.   When using
+etc. your image will most probably be rendered unusable.   When using
 the @option{-snapshot} option, unsafe caching is always used.
 
 Copy-on-read avoids accessing the same backing file sectors repeatedly and is
commit e1f7b4812eab992de46c98b3726745afb042a7f0
Author: Michael S. Tsirkin <mst at redhat.com>
Date:   Fri Nov 30 00:02:56 2012 +0200

    virtio: limit avail bytes lookahead
    
    Commit 0d8d7690850eb0cf2b2b60933cf47669a6b6f18f introduced
    a regression in virtio-net performance because it looks
    into the ring aggressively while we really only care
    about a single packet worth of buffers.
    Reported as bugzilla 1066055 in launchpad.
    
    To fix, add parameters limiting lookahead, and
    use in virtqueue_avail_bytes.
    
    Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
    Reported-by: Edivaldo de Araujo Pereira <edivaldoapereira at yahoo.com.br>
    Tested-by: Edivaldo de Araujo Pereira <edivaldoapereira at yahoo.com.br>
    Reviewed-by: Stefan Hajnoczi <stefanha at redhat.com>
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

diff --git a/hw/virtio-rng.c b/hw/virtio-rng.c
index df329f2..a73ef8e 100644
--- a/hw/virtio-rng.c
+++ b/hw/virtio-rng.c
@@ -43,11 +43,11 @@ static bool is_guest_ready(VirtIORNG *vrng)
     return false;
 }
 
-static size_t get_request_size(VirtQueue *vq)
+static size_t get_request_size(VirtQueue *vq, unsigned quota)
 {
     unsigned int in, out;
 
-    virtqueue_get_avail_bytes(vq, &in, &out);
+    virtqueue_get_avail_bytes(vq, &in, &out, quota, 0);
     return in;
 }
 
@@ -84,12 +84,18 @@ static void chr_read(void *opaque, const void *buf, size_t size)
 static void virtio_rng_process(VirtIORNG *vrng)
 {
     size_t size;
+    unsigned quota;
 
     if (!is_guest_ready(vrng)) {
         return;
     }
 
-    size = get_request_size(vrng->vq);
+    if (vrng->quota_remaining < 0) {
+        quota = 0;
+    } else {
+        quota = MIN((uint64_t)vrng->quota_remaining, (uint64_t)UINT32_MAX);
+    }
+    size = get_request_size(vrng->vq, quota);
     size = MIN(vrng->quota_remaining, size);
     if (size) {
         rng_backend_request_entropy(vrng->rng, size, chr_read, vrng);
diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c
index efa8a81..155da58 100644
--- a/hw/virtio-serial-bus.c
+++ b/hw/virtio-serial-bus.c
@@ -306,7 +306,7 @@ size_t virtio_serial_guest_ready(VirtIOSerialPort *port)
     if (use_multiport(port->vser) && !port->guest_connected) {
         return 0;
     }
-    virtqueue_get_avail_bytes(vq, &bytes, NULL);
+    virtqueue_get_avail_bytes(vq, &bytes, NULL, 4096, 0);
     return bytes;
 }
 
diff --git a/hw/virtio.c b/hw/virtio.c
index ec8b7d8..f40a8c5 100644
--- a/hw/virtio.c
+++ b/hw/virtio.c
@@ -336,7 +336,8 @@ static unsigned virtqueue_next_desc(hwaddr desc_pa,
 }
 
 void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
-                               unsigned int *out_bytes)
+                               unsigned int *out_bytes,
+                               unsigned max_in_bytes, unsigned max_out_bytes)
 {
     unsigned int idx;
     unsigned int total_bufs, in_total, out_total;
@@ -385,6 +386,9 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
             } else {
                 out_total += vring_desc_len(desc_pa, i);
             }
+            if (in_total >= max_in_bytes && out_total >= max_out_bytes) {
+                goto done;
+            }
         } while ((i = virtqueue_next_desc(desc_pa, i, max)) != max);
 
         if (!indirect)
@@ -392,6 +396,7 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
         else
             total_bufs++;
     }
+done:
     if (in_bytes) {
         *in_bytes = in_total;
     }
@@ -405,12 +410,8 @@ int virtqueue_avail_bytes(VirtQueue *vq, unsigned int in_bytes,
 {
     unsigned int in_total, out_total;
 
-    virtqueue_get_avail_bytes(vq, &in_total, &out_total);
-    if ((in_bytes && in_bytes < in_total)
-        || (out_bytes && out_bytes < out_total)) {
-        return 1;
-    }
-    return 0;
+    virtqueue_get_avail_bytes(vq, &in_total, &out_total, in_bytes, out_bytes);
+    return in_bytes <= in_total && out_bytes <= out_total;
 }
 
 void virtqueue_map_sg(struct iovec *sg, hwaddr *addr,
diff --git a/hw/virtio.h b/hw/virtio.h
index df8d0f7..7c17f7b 100644
--- a/hw/virtio.h
+++ b/hw/virtio.h
@@ -150,7 +150,8 @@ int virtqueue_pop(VirtQueue *vq, VirtQueueElement *elem);
 int virtqueue_avail_bytes(VirtQueue *vq, unsigned int in_bytes,
                           unsigned int out_bytes);
 void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
-                               unsigned int *out_bytes);
+                               unsigned int *out_bytes,
+                               unsigned max_in_bytes, unsigned max_out_bytes);
 
 void virtio_notify(VirtIODevice *vdev, VirtQueue *vq);
 
commit 044d003db9b6a588be2c9d0ec9de694ba3848551
Author: Max Filippov <jcmvbkbc at gmail.com>
Date:   Thu Nov 29 19:53:20 2012 +0400

    qemu-tech.texi: update implemented xtensa features list
    
    Debug option is available since QEMU-1.2; FP coprocessor and
    coprocessor context is available since QEMU-1.3.
    
    Signed-off-by: Max Filippov <jcmvbkbc at gmail.com>
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>

diff --git a/qemu-tech.texi b/qemu-tech.texi
index d73dda8..8aefa74 100644
--- a/qemu-tech.texi
+++ b/qemu-tech.texi
@@ -262,16 +262,16 @@ Current QEMU limitations:
 
 @item Core Xtensa ISA emulation, including most options: code density,
 loop, extended L32R, 16- and 32-bit multiplication, 32-bit division,
-MAC16, miscellaneous operations, boolean, multiprocessor synchronization,
+MAC16, miscellaneous operations, boolean, FP coprocessor, coprocessor
+context, debug, multiprocessor synchronization,
 conditional store, exceptions, relocatable vectors, unaligned exception,
 interrupts (including high priority and timer), hardware alignment,
 region protection, region translation, MMU, windowed registers, thread
 pointer, processor ID.
 
- at item Not implemented options: FP coprocessor, coprocessor context,
-data/instruction cache (including cache prefetch and locking), XLMI,
-processor interface, debug. Also options not covered by the core ISA
-(e.g. FLIX, wide branches) are not implemented.
+ at item Not implemented options: data/instruction cache (including cache
+prefetch and locking), XLMI, processor interface. Also options not
+covered by the core ISA (e.g. FLIX, wide branches) are not implemented.
 
 @item Can run most Xtensa Linux binaries.
 
commit e912c96f7d2e5ccd8a6352ee74f5beee2a7d9976
Author: Anthony Liguori <aliguori at us.ibm.com>
Date:   Thu Nov 29 07:46:23 2012 -0600

    qdev: relax bus type check in qdev_device_add() (v2)
    
    We are currently checking for an exact type match.  Use QOM dynamic_cast to
    check for a compatible type instead.
    
    Cc: Konrad Frederic <fred.konrad at greensocs.com>
    Cc: Peter Maydell <peter.maydell at linaro.org>
    Signed-off-by: Anthony Liguori <aliguori at us.ibm.com>
    ---
    v1 -> v2:
     - also add cast to qbus_find_recursive (Peter)
     - simplify by doing object_dynamic_cast instead of messing with classes

diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c
index 479eecd..a1b4d6a 100644
--- a/hw/qdev-monitor.c
+++ b/hw/qdev-monitor.c
@@ -289,8 +289,7 @@ static BusState *qbus_find_recursive(BusState *bus, const char *name,
     if (name && (strcmp(bus->name, name) != 0)) {
         match = 0;
     }
-    if (bus_typename &&
-        (strcmp(object_get_typename(OBJECT(bus)), bus_typename) != 0)) {
+    if (bus_typename && !object_dynamic_cast(OBJECT(bus), bus_typename)) {
         match = 0;
     }
     if (match) {
@@ -435,7 +434,7 @@ DeviceState *qdev_device_add(QemuOpts *opts)
         if (!bus) {
             return NULL;
         }
-        if (strcmp(object_get_typename(OBJECT(bus)), k->bus_type) != 0) {
+        if (!object_dynamic_cast(OBJECT(bus), k->bus_type)) {
             qerror_report(QERR_BAD_BUS_FOR_DEVICE,
                           driver, object_get_typename(OBJECT(bus)));
             return NULL;
commit 1d16252652688a775b244fffa1b9ac9b719ceffc
Author: Bruce Rogers <brogers at suse.com>
Date:   Tue Nov 27 13:11:25 2012 -0700

    qapi: fix qapi_dealloc_type_size parameter type
    
    The second parameter to qapi_dealloc_type_size should be a uint64_t *,
    not a size_t *. This was causing our 32 bit x86 build to fail, since
    warnings are treated as errors.
    
    Signed-off-by: Bruce Rogers <brogers at suse.com>
    Reviewed-by: Michael Roth <mdroth at linux.vnet.ibm.com>
    Reviewed-by: Stefan Weil <sw at weilnetz.de>
    Signed-off-by: Luiz Capitulino <lcapitulino at redhat.com>

diff --git a/qapi/qapi-dealloc-visitor.c b/qapi/qapi-dealloc-visitor.c
index a07b171..75214e7 100644
--- a/qapi/qapi-dealloc-visitor.c
+++ b/qapi/qapi-dealloc-visitor.c
@@ -132,7 +132,7 @@ static void qapi_dealloc_type_number(Visitor *v, double *obj, const char *name,
 {
 }
 
-static void qapi_dealloc_type_size(Visitor *v, size_t *obj, const char *name,
+static void qapi_dealloc_type_size(Visitor *v, uint64_t *obj, const char *name,
                                    Error **errp)
 {
 }
commit 2b29f492c844ed03d6d16ebe6bb760d71b6557fe
Author: Peter Crosthwaite <peter.crosthwaite at xilinx.com>
Date:   Thu Nov 29 11:43:18 2012 +1000

    ehci-sysbus: Attach DMA context.
    
    This was left as NULL on the initial merge due to debate on the mailing list on
    how to handle DMA contexts for sysbus devices. Patch
    9e11908f12f92e31ea94dc2a4c962c836cba9f2a was later merged to fix OHCI. This is the,
    equivalent fix for sysbus EHCI.
    
    Signed-off-by: Peter Crosthwaite <peter.crosthwaite at xilinx.com>
    Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

diff --git a/hw/usb/hcd-ehci-sysbus.c b/hw/usb/hcd-ehci-sysbus.c
index 1584079..803df92 100644
--- a/hw/usb/hcd-ehci-sysbus.c
+++ b/hw/usb/hcd-ehci-sysbus.c
@@ -45,6 +45,7 @@ static int usb_ehci_sysbus_initfn(SysBusDevice *dev)
 
     s->capsbase = 0x100;
     s->opregbase = 0x140;
+    s->dma = &dma_context_memory;
 
     usb_ehci_initfn(s, DEVICE(dev));
     sysbus_init_irq(dev, &s->irq);
commit c128d6a6d785eb9235a4f6dbd52f405ab8c60bee
Author: Stefan Hajnoczi <stefanha at redhat.com>
Date:   Sun Nov 25 16:49:15 2012 +0100

    usb: fail usbdevice_create() when there is no USB bus
    
    Report an error instead of segfaulting when attaching a USB device to a
    machine with no USB busses:
    
      $ qemu-system-arm -machine vexpress-a9 \
          -sd Fedora-17-armhfp-vexpress-mmcblk0.img \
          -kernel vmlinuz-3.4.2-3.fc17.armv7hl \
          -initrd initramfs-3.4.2-3.fc17.armv7hl.img \
          -usbdevice disk:format=raw:test.img
    
    Note that the vexpress-a9 machine does not have a USB host controller.
    
    Reported-by: David Abdurachmanov <David.Abdurachmanov at cern.ch>
    Signed-off-by: Stefan Hajnoczi <stefanha at redhat.com>
    Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

diff --git a/hw/usb/bus.c b/hw/usb/bus.c
index 99aac7a..55d0edd 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -590,6 +590,13 @@ USBDevice *usbdevice_create(const char *cmdline)
         return NULL;
     }
 
+    if (!bus) {
+        error_report("Error: no usb bus to attach usbdevice %s, "
+                     "please try -machine usb=on and check that "
+                     "the machine model supports USB", driver);
+        return NULL;
+    }
+
     if (!f->usbdevice_init) {
         if (*params) {
             error_report("usbdevice %s accepts no params", driver);
commit 6c2d1c32d084320081b0cd047f8cacd6e722d03a
Author: Gerd Hoffmann <kraxel at redhat.com>
Date:   Thu Nov 22 14:44:50 2012 +0100

    usb: tag usb host adapters as not hotpluggable.
    
    Hotplugging them simply doesn't work, so tag them accordingly to
    avoid users trying and then crashing qemu.
    
    For xhci there is nothing fundamental which prevents hotplug from
    working, we'll "only" need a exit() function which cleans up
    everything properly.  That isn't for 1.3 though.
    
    For ehci+uhci+ohci hotplug can't be supported until qemu gains the
    capability to hotplug multifunction pci devices.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=879096
    
    Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

diff --git a/hw/usb/hcd-ehci-pci.c b/hw/usb/hcd-ehci-pci.c
index 5887eab..41dbb53 100644
--- a/hw/usb/hcd-ehci-pci.c
+++ b/hw/usb/hcd-ehci-pci.c
@@ -123,6 +123,7 @@ static void ehci_class_init(ObjectClass *klass, void *data)
     k->revision = i->revision;
     k->class_id = PCI_CLASS_SERIAL_USB;
     k->config_write = usb_ehci_pci_write_config;
+    k->no_hotplug = 1;
     dc->vmsd = &vmstate_ehci_pci;
     dc->props = ehci_pci_properties;
 }
diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c
index 64de906..e16a2ec 100644
--- a/hw/usb/hcd-ohci.c
+++ b/hw/usb/hcd-ohci.c
@@ -1882,6 +1882,7 @@ static void ohci_pci_class_init(ObjectClass *klass, void *data)
     k->vendor_id = PCI_VENDOR_ID_APPLE;
     k->device_id = PCI_DEVICE_ID_APPLE_IPID_USB;
     k->class_id = PCI_CLASS_SERIAL_USB;
+    k->no_hotplug = 1;
     dc->desc = "Apple USB Controller";
     dc->props = ohci_pci_properties;
 }
diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c
index 8e47803..d053791 100644
--- a/hw/usb/hcd-uhci.c
+++ b/hw/usb/hcd-uhci.c
@@ -1327,6 +1327,7 @@ static void uhci_class_init(ObjectClass *klass, void *data)
     k->device_id = info->device_id;
     k->revision  = info->revision;
     k->class_id  = PCI_CLASS_SERIAL_USB;
+    k->no_hotplug = 1;
     dc->vmsd = &vmstate_uhci;
     dc->props = uhci_properties;
     u->info = *info;
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index 8ef4b07..efb509e 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -3167,6 +3167,7 @@ static void xhci_class_init(ObjectClass *klass, void *data)
     k->class_id     = PCI_CLASS_SERIAL_USB;
     k->revision     = 0x03;
     k->is_express   = 1;
+    k->no_hotplug   = 1;
 }
 
 static TypeInfo xhci_info = {
commit fa98efe932d93a15ffa867f3b05149c8d1fc7c28
Author: Yonit Halperin <yhalperi at redhat.com>
Date:   Wed Nov 28 10:08:22 2012 -0500

    qxl: reload memslots after migration, when qxl is in UNDEFINED mode
    
    The devram memslot stays active when qxl enters UNDEFINED mode (i.e, no
    primary surface). If migration has occurred while the device is in
    UNDEFINED stae, the memslots have to be reloaded at the destination.
    
    Fixes rhbz#874574
    
    Signed-off-by: Yonit Halperin <yhalperi at redhat.com>
    Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>

diff --git a/hw/qxl.c b/hw/qxl.c
index 1bc2d32..96887c4 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -2146,6 +2146,7 @@ static int qxl_post_load(void *opaque, int version)
 
     switch (newmode) {
     case QXL_MODE_UNDEFINED:
+        qxl_create_memslots(d);
         break;
     case QXL_MODE_VGA:
         qxl_create_memslots(d);


More information about the Spice-commits mailing list