1. 21 12月, 2017 19 次提交
    • T
      hw/moxie/moxiesim: Add support for loading a BIOS on moxiesim · 7ce32f30
      Thomas Huth 提交于
      The moxiesim machine already defines a memory region for a firmware,
      but does not provide the possibility to load an image via "-bios" yet.
      This will be needed for the boot-serial tester, so let's add support
      for "-bios" here now.
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-Id: <1512031988-32490-6-git-send-email-thuth@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7ce32f30
    • T
      tests/boot-serial-test: Add code to allow to specify our own kernel or bios · e12c08d3
      Thomas Huth 提交于
      QEMU only ships with some few firmware images, i.e. we can currently run
      the boot-serial test only on a very limited set of machines. But writing
      some characters to the default UART of a machine can often be done with
      some few lines of assembly, so we add the possibility to the boot-serial
      tester to use its own mini-kernels or mini-firmwares. We write such images
      then into a file that we can load with the "-kernel" or "-bios" parameter
      when we launch QEMU.
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-Id: <1512031988-32490-3-git-send-email-thuth@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e12c08d3
    • T
      tests/boot-serial-test: Make sure that we check the timeout regularly · 92b540da
      Thomas Huth 提交于
      If the guest continuesly writes characters to the UART, we never leave
      the inner while loop and thus never check whether we've reached the
      timeout value. So if we fail to find the expected string in the UART
      output, the test just hangs and never finishs. Use a counter to regularly
      break out of the while loop to check the timeout.
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-Id: <1512031988-32490-2-git-send-email-thuth@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      92b540da
    • P
      target/i386: Fix handling of VEX prefixes · cfcca361
      Peter Maydell 提交于
      In commit e3af7c78 we
      replaced direct calls to to cpu_ld*_code() with calls
      to the x86_ld*_code() wrappers which incorporate an
      advance of s->pc. Unfortunately we didn't notice that
      in one place the old code was deliberately not incrementing
      s->pc:
      
      @@ -4501,7 +4528,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)
                   static const int pp_prefix[4] = {
                       0, PREFIX_DATA, PREFIX_REPZ, PREFIX_REPNZ
                   };
      -            int vex3, vex2 = cpu_ldub_code(env, s->pc);
      +            int vex3, vex2 = x86_ldub_code(env, s);
      
                   if (!CODE64(s) && (vex2 & 0xc0) != 0xc0) {
                       /* 4.1.4.6: In 32-bit mode, bits [7:6] must be 11b,
      
      This meant we were mishandling this set of instructions.
      Remove the manual advance of s->pc for the "is VEX" case
      (which is now done by x86_ldub_code()) and instead rewind
      PC in the case where we decide that this isn't really VEX.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Cc: qemu-stable@nongnu.org
      Reported-by: NAlexandro Sanchez Bach <alexandro@phi.nz>
      Message-Id: <1513163959-17545-1-git-send-email-peter.maydell@linaro.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      cfcca361
    • D
      sockets: remove obsolete code that updated listen address · 62473511
      Daniel P. Berrange 提交于
      When listening on unix/tcp sockets there was optional code that would update
      the original SocketAddress struct with the info about the actual address that
      was listened on. Since the conversion of everything to QIOChannelSocket, no
      remaining caller made use of this feature. It has been replaced with the ability
      to query the listen address after the fact using the function
      qio_channel_socket_get_local_address. This is a better model when the input
      address can result in listening on multiple distinct sockets.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Reviewed-by: NPeter Xu <peterx@redhat.com>
      Message-Id: <20171212111219.32601-1-berrange@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      62473511
    • S
      baum: Truncate braille device size to 84x1 · 1ef7c96e
      Samuel Thibault 提交于
      Baum device bigger than 84 do not actually exist, but the user's own
      Braille device might be wider than 84 columns.  Some guest drivers
      would be upset by such sizes, so clamp the device size.
      Signed-off-by: NSamuel Thibault <samuel.thibault@ens-lyon.org>
      Message-Id: <20171211001950.27843-1-samuel.thibault@ens-lyon.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      1ef7c96e
    • S
      target/i386: Fix compiler warnings · a4926d99
      Stefan Weil 提交于
      These gcc warnings are fixed:
      
      target/i386/translate.c:4461:12: warning:
       variable 'prefixes' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]
      target/i386/translate.c:4466:9: warning:
       variable 'rex_w' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]
      target/i386/translate.c:4466:16: warning:
       variable 'rex_r' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]
      
      Tested with x86_64-w64-mingw32-gcc from Debian stretch.
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Message-Id: <20171113064845.29142-1-sw@weilnetz.de>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      a4926d99
    • D
      cpu-exec: fix missed CPU kick during interrupt injection · d84be02d
      David Hildenbrand 提交于
      The conditional memory barrier not only looks strange but actually is
      wrong.
      
      On s390x, I can reproduce interrupts via cpu_interrupt() not leading to
      a proper kick out of emulation every now and then. cpu_interrupt() is
      especially used for inter CPU communication via SIGP (esp. external
      calls and emergency interrupts).
      
      With this patch, I was not able to reproduce. (esp. no stalls or hangs
      in the guest).
      
      My setup is s390x MTTCG with 16 VCPUs on 8 CPU host, running make -j16.
      Signed-off-by: NDavid Hildenbrand <david@redhat.com>
      Message-Id: <20171129191319.11483-1-david@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      d84be02d
    • D
      cpus: make pause_all_cpus() play with SMP on single threaded TCG · ebd05fea
      David Hildenbrand 提交于
      pause_all_cpus() is sometimes called from a VCPU thread (e.g. s390x
      during special reset). It cannot deal with multiple VCPUs per Thread
      (single threaded TCG) yet.
      
      Booting an s390x guest with -smp 2 and single threaded TCG from disk
      currently fails. The DIAG 308 will issue a pause_all_cpus() and wait
      forever for the CPUs to actually stop. But it is waiting for itself.
      
      So let's stop all VCPUs belonging to the current thread. Factor out
      stopping of a VCPU.
      Signed-off-by: NDavid Hildenbrand <david@redhat.com>
      Message-Id: <20171129191215.11323-1-david@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      ebd05fea
    • R
      hyperv: make SynIC version msr constant · 09df29b6
      Roman Kagan 提交于
      The value of HV_X64_MSR_SVERSION is initialized once at vcpu init, and
      is reset to zero on vcpu reset, which is wrong.
      
      It is supposed to be a constant, so drop the field from X86CPU, set the
      msr with the constant value, and don't bother getting it.
      Signed-off-by: NRoman Kagan <rkagan@virtuozzo.com>
      Message-Id: <20171122181418.14180-4-rkagan@virtuozzo.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      09df29b6
    • R
      hyperv: ensure SINTx msrs are reset properly · 689141dd
      Roman Kagan 提交于
      Initially SINTx msrs should be in "masked" state.  To ensure that
      happens on *every* reset, move setting their values to
      kvm_arch_vcpu_reset.
      Signed-off-by: NRoman Kagan <rkagan@virtuozzo.com>
      Message-Id: <20171122181418.14180-3-rkagan@virtuozzo.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      689141dd
    • E
      hyperv: set partition-wide MSRs only on first vcpu · da1cc323
      Evgeny Yakovlev 提交于
      Hyper-V has a notion of partition-wide MSRs.  Those MSRs are read and
      written as usual on each VCPU, however the hypervisor maintains a single
      global value for all VCPUs.  Thus writing such an MSR from any single
      VCPU affects the global value that is read by all other VCPUs.
      
      This leads to an issue during VCPU hotplug: the zero-initialzied values
      of those MSRs get synced into KVM and override the global values as has
      already been set by the guest.
      
      This change makes the partition-wide MSRs only be synchronized on the
      first vcpu.
      Signed-off-by: NEvgeny Yakovlev <eyakovlev@virtuozzo.com>
      Signed-off-by: NRoman Kagan <rkagan@virtuozzo.com>
      Message-Id: <20171122181418.14180-2-rkagan@virtuozzo.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      da1cc323
    • Y
      x86/cpu: Enable new SSE/AVX/AVX512 cpu features · aff9e6e4
      Yang Zhong 提交于
      Intel IceLake cpu has added new cpu features,AVX512_VBMI2/GFNI/
      VAES/VPCLMULQDQ/AVX512_VNNI/AVX512_BITALG. Those new cpu features
      need expose to guest VM.
      
      The bit definition:
      CPUID.(EAX=7,ECX=0):ECX[bit 06] AVX512_VBMI2
      CPUID.(EAX=7,ECX=0):ECX[bit 08] GFNI
      CPUID.(EAX=7,ECX=0):ECX[bit 09] VAES
      CPUID.(EAX=7,ECX=0):ECX[bit 10] VPCLMULQDQ
      CPUID.(EAX=7,ECX=0):ECX[bit 11] AVX512_VNNI
      CPUID.(EAX=7,ECX=0):ECX[bit 12] AVX512_BITALG
      
      The release document ref below link:
      https://software.intel.com/sites/default/files/managed/c5/15/\
      architecture-instruction-set-extensions-programming-reference.pdf
      Signed-off-by: NYang Zhong <yang.zhong@intel.com>
      Message-Id: <1511335676-20797-1-git-send-email-yang.zhong@intel.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      aff9e6e4
    • F
      MAITAINERS: List Fam Zheng as reviewer for SCSI patches · c2380365
      Fam Zheng 提交于
      Just so that I notice those patches more easily.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Message-Id: <20171205072220.885-1-famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      c2380365
    • F
      scsi-block: Add share-rw option · 07488549
      Fam Zheng 提交于
      Scsi-block doesn't use the DEFINE_BLOCK_PROPERTIES() macro so it didn't
      gain the share-rw back when it was added to all other storage devices.
      This option is meaningful here, and need to be used when attaching a
      shared storage to guest.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Message-Id: <20171205071928.30242-1-famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      07488549
    • P
      contrib: add systemd unit files · 2ba60ec1
      Paolo Bonzini 提交于
      This lets distros standardize on how QEMU should install systemd
      services for qemu-ga and qemu-pr-helper.
      
      The qemu-ga unit file comes from Fedora, but I checked that
      Debian is using the same path for the virtio-serisal port.
      
      I would like to include this in 2.11, so that the qemu-pr-helper
      socket can be standardized across distros.  Note however that
      the files are not installed.  We can add a configure option
      in 2.12 perhaps, but it's too late now; documenting the files
      in the release notes should do.
      Suggested-by: NDaniel P. Berrange <berrange@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20171124164422.3960-1-pbonzini@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      2ba60ec1
    • P
      qemu-pr-helper: miscellaneous fixes · a4a9b6ea
      Paolo Bonzini 提交于
      1) Return a generic sense if TEST UNIT READY does not provide one;
      
      2) Fix two mistakes in copying from the spec.
      
      Cc: qemu-stable@nongnu.org
      Reported-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      a4a9b6ea
    • L
      qemu-thread: fix races on threads that exit very quickly · 68a93982
      linzhecheng 提交于
      If we create a thread with QEMU_THREAD_DETACHED mode, QEMU may get a segfault with low probability.
      
      The backtrace is:
         #0  0x00007f46c60291d7 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
         #1  0x00007f46c602a8c8 in __GI_abort () at abort.c:90
         #2  0x00000000008543c9 in PAT_abort ()
         #3  0x000000000085140d in patchIllInsHandler ()
         #4  <signal handler called>
         #5  pthread_detach (th=139933037614848) at pthread_detach.c:50
         #6  0x0000000000829759 in qemu_thread_create (thread=thread@entry=0x7ffdaa8205e0, name=name@entry=0x94d94a "io-task-worker", start_routine=start_routine@entry=0x7eb9a0 <qio_task_thread_worker>,
             arg=arg@entry=0x3f5cf70, mode=mode@entry=1) at util/qemu_thread_posix.c:512
         #7  0x00000000007ebc96 in qio_task_run_in_thread (task=0x31db2c0, worker=worker@entry=0x7e7e40 <qio_channel_socket_connect_worker>, opaque=0xcd23380, destroy=0x7f1180 <qapi_free_SocketAddress>)
             at io/task.c:141
         #8  0x00000000007e7f33 in qio_channel_socket_connect_async (ioc=ioc@entry=0x626c0b0, addr=<optimized out>, callback=callback@entry=0x55e080 <qemu_chr_socket_connected>, opaque=opaque@entry=0x42862c0,
             destroy=destroy@entry=0x0) at io/channel_socket.c:194
         #9  0x000000000055bdd1 in socket_reconnect_timeout (opaque=0x42862c0) at qemu_char.c:4744
         #10 0x00007f46c72483b3 in g_timeout_dispatch () from /usr/lib64/libglib-2.0.so.0
         #11 0x00007f46c724799a in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
         #12 0x000000000076c646 in glib_pollfds_poll () at main_loop.c:228
         #13 0x000000000076c6eb in os_host_main_loop_wait (timeout=348000000) at main_loop.c:273
         #14 0x000000000076c815 in main_loop_wait (nonblocking=nonblocking@entry=0) at main_loop.c:521
         #15 0x000000000056a511 in main_loop () at vl.c:2076
         #16 0x0000000000420705 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at vl.c:4940
      
      The cause of this problem is a glibc bug; for more information, see
      https://sourceware.org/bugzilla/show_bug.cgi?id=19951.
      The solution for this bug is to use pthread_attr_setdetachstate.
      
      There is a similar issue with pthread_setname_np, which is moved
      from creating thread to created thread.
      Signed-off-by: Nlinzhecheng <linzhecheng@huawei.com>
      Message-Id: <20171128044656.10592-1-linzhecheng@huawei.com>
      Reviewed-by: NFam Zheng <famz@redhat.com>
      [Simplify the code by removing qemu_thread_set_name, and free the arguments
       before invoking the start routine. - Paolo]
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      68a93982
    • P
      memfd: fix configure test · 75e5b70e
      Paolo Bonzini 提交于
      Recent glibc added memfd_create in sys/mman.h.  This conflicts with
      the definition in util/memfd.c:
      
          /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration
      
      Fix the configure test, and remove the sys/memfd.h inclusion since the
      file actually does not exist---it is a typo in the memfd_create(2) man
      page.
      
      Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      75e5b70e
  2. 20 12月, 2017 14 次提交
  3. 19 12月, 2017 7 次提交
    • P
      Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2017-12-19-1' into staging · 062fcb27
      Peter Maydell 提交于
      Merge tpm 2017/12/19 v1
      
      # gpg: Signature made Tue 19 Dec 2017 11:51:13 GMT
      # gpg:                using RSA key 0x75AD65802A0B4211
      # gpg: Good signature from "Stefan Berger <stefanb@linux.vnet.ibm.com>"
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: B818 B9CA DF90 89C2 D5CE  C66B 75AD 6580 2A0B 4211
      
      * remotes/stefanberger/tags/pull-tpm-2017-12-19-1:
        tpm: move qdev_prop_tpm to hw/tpm/
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      062fcb27
    • C
      tpm: move qdev_prop_tpm to hw/tpm/ · 89be9e99
      Cornelia Huck 提交于
      Building with --disable-tpm yields
      
      ../hw/core/qdev-properties-system.o: In function `set_tpm':
      /home/cohuck/git/qemu/hw/core/qdev-properties-system.c:274: undefined reference to `qemu_find_tpm_be'
      /home/cohuck/git/qemu/hw/core/qdev-properties-system.c:278: undefined reference to `tpm_backend_init'
      ../hw/core/qdev-properties-system.o: In function `release_tpm':
      /home/cohuck/git/qemu/hw/core/qdev-properties-system.c:291: undefined reference to `tpm_backend_reset'
      
      Move the implementation of DEFINE_PROP_TPMBE to hw/tpm/ so that it is
      only built when tpm is actually configured, and build tpm_util in every
      case.
      
      Fixes: 493b7830 ("qdev: add DEFINE_PROP_TPMBE")
      Reported-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: NCornelia Huck <cohuck@redhat.com>
      Reviewed-by: NLaurent Vivier <lvivier@redhat.com>
      Signed-off-by: NStefan Berger <stefanb@linux.vnet.ibm.com>
      89be9e99
    • S
      qemu-iotests: add 203 savevm with IOThreads test · 7a9dda0d
      Stefan Hajnoczi 提交于
      This test case will prevent future regressions with savevm and
      IOThreads.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-id: 20171207201320.19284-7-stefanha@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      7a9dda0d
    • S
      iothread: fix iothread_stop() race condition · 2362a28e
      Stefan Hajnoczi 提交于
      There is a small chance that iothread_stop() hangs as follows:
      
        Thread 3 (Thread 0x7f63eba5f700 (LWP 16105)):
        #0  0x00007f64012c09b6 in ppoll () at /lib64/libc.so.6
        #1  0x000055959992eac9 in ppoll (__ss=0x0, __timeout=0x0, __nfds=<optimized out>, __fds=<optimized out>) at /usr/include/bits/poll2.h:77
        #2  0x000055959992eac9 in qemu_poll_ns (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at util/qemu-timer.c:322
        #3  0x0000559599930711 in aio_poll (ctx=0x55959bdb83c0, blocking=blocking@entry=true) at util/aio-posix.c:629
        #4  0x00005595996806fe in iothread_run (opaque=0x55959bd78400) at iothread.c:59
        #5  0x00007f640159f609 in start_thread () at /lib64/libpthread.so.0
        #6  0x00007f64012cce6f in clone () at /lib64/libc.so.6
      
        Thread 1 (Thread 0x7f640b45b280 (LWP 16103)):
        #0  0x00007f64015a0b6d in pthread_join () at /lib64/libpthread.so.0
        #1  0x00005595999332ef in qemu_thread_join (thread=<optimized out>) at util/qemu-thread-posix.c:547
        #2  0x00005595996808ae in iothread_stop (iothread=<optimized out>) at iothread.c:91
        #3  0x000055959968094d in iothread_stop_iter (object=<optimized out>, opaque=<optimized out>) at iothread.c:102
        #4  0x0000559599857d97 in do_object_child_foreach (obj=obj@entry=0x55959bdb8100, fn=fn@entry=0x559599680930 <iothread_stop_iter>, opaque=opaque@entry=0x0, recurse=recurse@entry=false) at qom/object.c:852
        #5  0x0000559599859477 in object_child_foreach (obj=obj@entry=0x55959bdb8100, fn=fn@entry=0x559599680930 <iothread_stop_iter>, opaque=opaque@entry=0x0) at qom/object.c:867
        #6  0x0000559599680a6e in iothread_stop_all () at iothread.c:341
        #7  0x000055959955b1d5 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at vl.c:4913
      
      The relevant code from iothread_run() is:
      
        while (!atomic_read(&iothread->stopping)) {
            aio_poll(iothread->ctx, true);
      
      and iothread_stop():
      
        iothread->stopping = true;
        aio_notify(iothread->ctx);
        ...
        qemu_thread_join(&iothread->thread);
      
      The following scenario can occur:
      
      1. IOThread:
        while (!atomic_read(&iothread->stopping)) -> stopping=false
      
      2. Main loop:
        iothread->stopping = true;
        aio_notify(iothread->ctx);
      
      3. IOThread:
        aio_poll(iothread->ctx, true); -> hang
      
      The bug is explained by the AioContext->notify_me doc comments:
      
        "If this field is 0, everything (file descriptors, bottom halves,
        timers) will be re-evaluated before the next blocking poll(), thus the
        event_notifier_set call can be skipped."
      
      The problem is that "everything" does not include checking
      iothread->stopping.  This means iothread_run() will block in aio_poll()
      if aio_notify() was called just before aio_poll().
      
      This patch fixes the hang by replacing aio_notify() with
      aio_bh_schedule_oneshot().  This makes aio_poll() or g_main_loop_run()
      to return.
      
      Implementing this properly required a new bool running flag.  The new
      flag prevents races that are tricky if we try to use iothread->stopping.
      Now iothread->stopping is purely for iothread_stop() and
      iothread->running is purely for the iothread_run() thread.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-id: 20171207201320.19284-6-stefanha@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      2362a28e
    • S
      iotests: add VM.add_object() · ccc15f7d
      Stefan Hajnoczi 提交于
      The VM.add_object() method can be used to add IOThreads or memory
      backend objects.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-id: 20171207201320.19284-5-stefanha@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      ccc15f7d
    • S
      blockdev: add x-blockdev-set-iothread force boolean · 882e9b89
      Stefan Hajnoczi 提交于
      When a node is already associated with a BlockBackend the
      x-blockdev-set-iothread command refuses to set the IOThread.  This is to
      prevent accidentally changing the IOThread when the nodes are in use.
      
      When the nodes are created with -drive they automatically get a
      BlockBackend.  In that case we know nothing is using them yet and it's
      safe to set the IOThread.  Add a force boolean to override the check.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-id: 20171207201320.19284-4-stefanha@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      882e9b89
    • S
      docs: mark nested AioContext locking as a legacy API · d02d8dde
      Stefan Hajnoczi 提交于
      See the patch for why nested AioContext locking is no longer allowed.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-id: 20171207201320.19284-3-stefanha@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      d02d8dde