1. 15 1月, 2019 6 次提交
  2. 14 1月, 2019 3 次提交
    • P
      Merge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-3.2-part2' into staging · 7260438b
      Peter Maydell 提交于
      RISC-V Updates for 3.2, Part 2
      
      This patch set contains a handful of Michael's CSR-related cleanups,
      which should allow us to proceed with more outstanding bug fixes that
      depend on them.
      
      Additionally, there is a patch that turns on USB.  This works for me
      when the kernel has the appropriate drivers (which will soon be in
      defconfig) and I pass
      
          -device usb-ehci
          -drive id=my_usb_disk,file=usbdisk.img,if=none,format=raw
          -device usb-storage,drive=my_usb_disk
      
      to QEMU.
      
      # gpg: Signature made Fri 11 Jan 2019 18:05:02 GMT
      # gpg:                using RSA key EF4CA1502CCBAB41
      # gpg: Good signature from "Palmer Dabbelt <palmer@dabbelt.com>"
      # gpg:                 aka "Palmer Dabbelt <palmer@sifive.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: 00CE 76D1 8349 60DF CE88  6DF8 EF4C A150 2CCB AB41
      
      * remotes/palmer/tags/riscv-for-master-3.2-part2:
        default-configs: Enable USB support for RISC-V machines
        RISC-V: Implement existential predicates for CSRs
        RISC-V: Implement atomic mip/sip CSR updates
        RISC-V: Implement modular CSR helper interface
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      7260438b
    • P
      Merge remote-tracking branch 'remotes/kraxel/tags/input-20190111-pull-request' into staging · 4fbfedd1
      Peter Maydell 提交于
      input: avoid malloc for mouse events
      
      # gpg: Signature made Fri 11 Jan 2019 14:26:44 GMT
      # gpg:                using RSA key 4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>"
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/input-20190111-pull-request:
        input: avoid malloc for mouse events
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      4fbfedd1
    • P
      Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging · d63a6af9
      Peter Maydell 提交于
      Work around test-qht-par + gprof issues
      
      Travis CI jobs are failing because of test-qht-par when gprof is
      enabled.  Temporarily disable test-qht-par if gprof is enabled,
      until we fix the bug.
      
      # gpg: Signature made Fri 11 Jan 2019 18:23:29 GMT
      # gpg:                using RSA key 2807936F984DC5A6
      # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>"
      # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6
      
      * remotes/ehabkost/tags/machine-next-pull-request:
        tests: Disable qht-bench parallel test when using gprof
        configure: Let the TARGET_GPROF var use the regular 'y' for Yes
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      d63a6af9
  3. 12 1月, 2019 4 次提交
  4. 11 1月, 2019 27 次提交
    • P
      Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging · 15bede55
      Peter Maydell 提交于
      * HAX support for Linux hosts (Alejandro)
      * esp bugfixes (Guenter)
      * Windows build cleanup (Marc-André)
      * checkpatch logic improvements (Paolo)
      * coalesced range bugfix (Paolo)
      * switch testsuite to TAP (Paolo)
      * QTAILQ rewrite (Paolo)
      * block/iscsi.c cancellation fixes (Stefan)
      * improve selection of the default accelerator (Thomas)
      
      # gpg: Signature made Fri 11 Jan 2019 14:47:40 GMT
      # gpg:                using RSA key BFFBD25F78C7AE83
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>"
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>"
      # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
      #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
      
      * remotes/bonzini/tags/for-upstream: (34 commits)
        avoid TABs in files that only contain a few
        remove space-tab sequences
        scripts: add script to convert multiline comments into 4-line format
        hw/watchdog/wdt_i6300esb: remove a unnecessary comment
        checkpatch: warn about qemu/queue.h head structs that are not typedef-ed
        qemu/queue.h: simplify reverse access to QTAILQ
        qemu/queue.h: reimplement QTAILQ without pointer-to-pointers
        qemu/queue.h: remove Q_TAILQ_{HEAD,ENTRY}
        qemu/queue.h: typedef QTAILQ heads
        qemu/queue.h: leave head structs anonymous unless necessary
        vfio: make vfio_address_spaces static
        qemu/queue.h: do not access tqe_prev directly
        test: replace gtester with a TAP driver
        test: execute g_test_run when tests are skipped
        qga: drop < Vista compatibility
        build-sys: build with Vista API by default
        build-sys: move windows defines in osdep.h header
        build-sys: don't include windows.h, osdep.h does it
        scsi: esp: Defer command completion until previous interrupts have been handled
        esp-pci: Fix status register write erase control
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      15bede55
    • P
      avoid TABs in files that only contain a few · 7d37435b
      Paolo Bonzini 提交于
      Most files that have TABs only contain a handful of them.  Change
      them to spaces so that we don't confuse people.
      
      disas, standard-headers, linux-headers and libdecnumber are imported
      from other projects and probably should be exempted from the check.
      Outside those, after this patch the following files still contain both
      8-space and TAB sequences at the beginning of the line.  Many of them
      have a majority of TABs, or were initially committed with all tabs.
      
          bsd-user/i386/target_syscall.h
          bsd-user/x86_64/target_syscall.h
          crypto/aes.c
          hw/audio/fmopl.c
          hw/audio/fmopl.h
          hw/block/tc58128.c
          hw/display/cirrus_vga.c
          hw/display/xenfb.c
          hw/dma/etraxfs_dma.c
          hw/intc/sh_intc.c
          hw/misc/mst_fpga.c
          hw/net/pcnet.c
          hw/sh4/sh7750.c
          hw/timer/m48t59.c
          hw/timer/sh_timer.c
          include/crypto/aes.h
          include/disas/bfd.h
          include/hw/sh4/sh.h
          libdecnumber/decNumber.c
          linux-headers/asm-generic/unistd.h
          linux-headers/linux/kvm.h
          linux-user/alpha/target_syscall.h
          linux-user/arm/nwfpe/double_cpdo.c
          linux-user/arm/nwfpe/fpa11_cpdt.c
          linux-user/arm/nwfpe/fpa11_cprt.c
          linux-user/arm/nwfpe/fpa11.h
          linux-user/flat.h
          linux-user/flatload.c
          linux-user/i386/target_syscall.h
          linux-user/ppc/target_syscall.h
          linux-user/sparc/target_syscall.h
          linux-user/syscall.c
          linux-user/syscall_defs.h
          linux-user/x86_64/target_syscall.h
          slirp/cksum.c
          slirp/if.c
          slirp/ip.h
          slirp/ip_icmp.c
          slirp/ip_icmp.h
          slirp/ip_input.c
          slirp/ip_output.c
          slirp/mbuf.c
          slirp/misc.c
          slirp/sbuf.c
          slirp/socket.c
          slirp/socket.h
          slirp/tcp_input.c
          slirp/tcpip.h
          slirp/tcp_output.c
          slirp/tcp_subr.c
          slirp/tcp_timer.c
          slirp/tftp.c
          slirp/udp.c
          slirp/udp.h
          target/cris/cpu.h
          target/cris/mmu.c
          target/cris/op_helper.c
          target/sh4/helper.c
          target/sh4/op_helper.c
          target/sh4/translate.c
          tcg/sparc/tcg-target.inc.c
          tests/tcg/cris/check_addo.c
          tests/tcg/cris/check_moveq.c
          tests/tcg/cris/check_swap.c
          tests/tcg/multiarch/test-mmap.c
          ui/vnc-enc-hextile-template.h
          ui/vnc-enc-zywrle.h
          util/envlist.c
          util/readline.c
      
      The following have only TABs:
      
          bsd-user/i386/target_signal.h
          bsd-user/sparc64/target_signal.h
          bsd-user/sparc64/target_syscall.h
          bsd-user/sparc/target_signal.h
          bsd-user/sparc/target_syscall.h
          bsd-user/x86_64/target_signal.h
          crypto/desrfb.c
          hw/audio/intel-hda-defs.h
          hw/core/uboot_image.h
          hw/sh4/sh7750_regnames.c
          hw/sh4/sh7750_regs.h
          include/hw/cris/etraxfs_dma.h
          linux-user/alpha/termbits.h
          linux-user/arm/nwfpe/fpopcode.h
          linux-user/arm/nwfpe/fpsr.h
          linux-user/arm/syscall_nr.h
          linux-user/arm/target_signal.h
          linux-user/cris/target_signal.h
          linux-user/i386/target_signal.h
          linux-user/linux_loop.h
          linux-user/m68k/target_signal.h
          linux-user/microblaze/target_signal.h
          linux-user/mips64/target_signal.h
          linux-user/mips/target_signal.h
          linux-user/mips/target_syscall.h
          linux-user/mips/termbits.h
          linux-user/ppc/target_signal.h
          linux-user/sh4/target_signal.h
          linux-user/sh4/termbits.h
          linux-user/sparc64/target_syscall.h
          linux-user/sparc/target_signal.h
          linux-user/x86_64/target_signal.h
          linux-user/x86_64/termbits.h
          pc-bios/optionrom/optionrom.h
          slirp/mbuf.h
          slirp/misc.h
          slirp/sbuf.h
          slirp/tcp.h
          slirp/tcp_timer.h
          slirp/tcp_var.h
          target/i386/svm.h
          target/sparc/asi.h
          target/xtensa/core-dc232b/xtensa-modules.inc.c
          target/xtensa/core-dc233c/xtensa-modules.inc.c
          target/xtensa/core-de212/core-isa.h
          target/xtensa/core-de212/xtensa-modules.inc.c
          target/xtensa/core-fsf/xtensa-modules.inc.c
          target/xtensa/core-sample_controller/core-isa.h
          target/xtensa/core-sample_controller/xtensa-modules.inc.c
          target/xtensa/core-test_kc705_be/core-isa.h
          target/xtensa/core-test_kc705_be/xtensa-modules.inc.c
          tests/tcg/cris/check_abs.c
          tests/tcg/cris/check_addc.c
          tests/tcg/cris/check_addcm.c
          tests/tcg/cris/check_addoq.c
          tests/tcg/cris/check_bound.c
          tests/tcg/cris/check_ftag.c
          tests/tcg/cris/check_int64.c
          tests/tcg/cris/check_lz.c
          tests/tcg/cris/check_openpf5.c
          tests/tcg/cris/check_sigalrm.c
          tests/tcg/cris/crisutils.h
          tests/tcg/cris/sys.c
          tests/tcg/i386/test-i386-ssse3.c
          ui/vgafont.h
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20181213223737.11793-3-pbonzini@redhat.com>
      Reviewed-by: NAleksandar Markovic <amarkovic@wavecomp.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: NWainer dos Santos Moschetta <wainersm@redhat.com>
      Acked-by: NRichard Henderson <richard.henderson@linaro.org>
      Acked-by: NEric Blake <eblake@redhat.com>
      Acked-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NStefan Markovic <smarkovic@wavecomp.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7d37435b
    • P
      remove space-tab sequences · 72e21db7
      Paolo Bonzini 提交于
      There are not many, and they are all simple mistakes that ended up
      being committed.  Remove them.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20181213223737.11793-2-pbonzini@redhat.com>
      Reviewed-by: NWainer dos Santos Moschetta <wainersm@redhat.com>
      Acked-by: NRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      72e21db7
    • P
      scripts: add script to convert multiline comments into 4-line format · 6afeb397
      Paolo Bonzini 提交于
      Since we're adding checkpatch rules to enforce 4-line multiline comment
      format, i.e. with lone /* and */, this script can be run on existing
      code so that the comment style does not become inconsistent within a
      file.
      
      The alternative to awk-in-a-shell-script could be Perl, which also
      supports -i directly, but a2p seems to have bitrotten and I didn't quite
      feel like writing this twice...
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      6afeb397
    • P
      hw/watchdog/wdt_i6300esb: remove a unnecessary comment · 7d2fcebb
      Peng Hao 提交于
      The registered memory region of i6300esb is not suitable for coalesced
      mmio, because a write for the region may trigger an immediate action
      and can't be delayed.
      Signed-off-by: NPeng Hao <peng.hao2@zte.com.cn>
      Message-Id: <1544253511-82742-1-git-send-email-peng.hao2@zte.com.cn>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7d2fcebb
    • P
      checkpatch: warn about qemu/queue.h head structs that are not typedef-ed · 50db69a1
      Paolo Bonzini 提交于
      These are just like any other struct or union, so they should have
      CamelCase typedefs.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      50db69a1
    • P
      qemu/queue.h: simplify reverse access to QTAILQ · eae3eb3e
      Paolo Bonzini 提交于
      The new definition of QTAILQ does not require passing the headname,
      remove it.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      eae3eb3e
    • P
      qemu/queue.h: reimplement QTAILQ without pointer-to-pointers · 7274f01b
      Paolo Bonzini 提交于
      QTAILQ is a doubly linked list, with a pointer-to-pointer to the last
      element from the head, and the previous element from each node.
      
      But if you squint enough, QTAILQ becomes a combination of a singly-linked
      forwards list, and another singly-linked list which goes backwards and
      is circular.  This is the idea that lets QTAILQ implement reverse
      iteration: only, because the backwards list points inside the node,
      accessing the previous element needs to go two steps back and one
      forwards.
      
      What this patch does is implement it in these terms, without actually
      changing the in-memory layout at all.  The coexistence of the two lists
      is realized by making QTAILQ_HEAD and QTAILQ_ENTRY unions of the forwards
      pointer and a generic QTailQLink node.  Thq QTailQLink can walk the list in
      both directions; the union is needed so that the forwards pointer can
      have the correct type, as a sort of poor man's template.  While there
      are other ways to get the same layout without a union, this one has
      the advantage of simpler operation in the debugger, because the fields
      tqh_first and tqe_next still exist as before the patch.  Those fields are
      also used by scripts/qemugdb/mtree.py, so it's a good idea to preserve them.
      
      The advantage of the new representation is that the two-back-one-forward
      dance done by backwards accesses can be done all while operating on
      QTailQLinks.  No casting to the head struct is needed anymore because,
      even though the QTailQLink's forward pointer is a void *, we can use
      typeof to recover the correct type.  This patch only changes the
      implementation, not the interface.  The next patch will remove the head
      struct name from the backwards visit macros.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      7274f01b
    • P
      qemu/queue.h: remove Q_TAILQ_{HEAD,ENTRY} · f95bb39c
      Paolo Bonzini 提交于
      These are not present for other kinds of queue, and unused.
      Zap them before more changes are made to the QTAILQ
      implementation.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      f95bb39c
    • P
      qemu/queue.h: typedef QTAILQ heads · f481ee2d
      Paolo Bonzini 提交于
      This will be needed when we change the QTAILQ head and elem structs
      to unions.  However, it is also consistent with the usage elsewhere
      in QEMU for other list head structs (see for example FsMountList).
      
      Note that most QTAILQs only need their name in order to do backwards
      walks.  Those do not break with the struct->union change, and anyway
      the change will also remove the need to name heads when doing backwards
      walks, so those are not touched here.
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      f481ee2d
    • P
      qemu/queue.h: leave head structs anonymous unless necessary · b58deb34
      Paolo Bonzini 提交于
      Most list head structs need not be given a name.  In most cases the
      name is given just in case one is going to use QTAILQ_LAST, QTAILQ_PREV
      or reverse iteration, but this does not apply to lists of other kinds,
      and even for QTAILQ in practice this is only rarely needed.  In addition,
      we will soon reimplement those macros completely so that they do not
      need a name for the head struct.  So clean up everything, not giving a
      name except in the rare case where it is necessary.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      b58deb34
    • P
      vfio: make vfio_address_spaces static · 10ca76b4
      Paolo Bonzini 提交于
      It is not used outside hw/vfio/common.c, so it does not need to
      be extern.
      Acked-by: NAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      10ca76b4
    • P
      qemu/queue.h: do not access tqe_prev directly · 70537ed5
      Paolo Bonzini 提交于
      Use the QTAILQ_IN_USE macro instead, it does the same thing but the next
      patch will change it to a different definition.
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      70537ed5
    • P
      test: replace gtester with a TAP driver · 9df43317
      Paolo Bonzini 提交于
      gtester is deprecated by upstream glib (see for example the announcement
      at https://blog.gtk.org/2018/07/11/news-from-glib-2-58/) and it does
      not support tests that call g_test_skip in some glib stable releases.
      
      glib suggests instead using Automake's TAP support, which gtest itself
      supports since version 2.38 (QEMU's minimum requirement is 2.40).
      We do not support Automake, but we can use Automake's code to beautify
      the TAP output.  I chose to use the Perl copy rather than the shell/awk
      one, with some changes so that it can accept TAP through stdin, in order
      to reuse Perl's TAP parsing package.  This also avoids duplicating the
      parser between tap-driver.pl and tap-merge.pl.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <1543513531-1151-3-git-send-email-pbonzini@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      9df43317
    • P
      Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging · e53f7796
      Peter Maydell 提交于
      Machine queue, 2019-01-10
      
      * Simplify GlobalProperty array declarations (Eduardo Habkost)
      * Deprecate cpu-add commands (Kashyap Chamarthy)
      * range/memory-device cleanups (David Hildenbrand)
      * Fix -device scsi-hd,help regression (Marc-André Lureau)
      * Fix crash when -global generates multiple warnings (Eduardo
        Habkost)
      
      # gpg: Signature made Thu 10 Jan 2019 14:28:23 GMT
      # gpg:                using RSA key 2807936F984DC5A6
      # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>"
      # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6
      
      * remotes/ehabkost/tags/machine-next-pull-request:
        qom: Don't keep error value between object_property_parse() calls
        qdev: fix -device scsi-hd,help regression
        machine: Use shorter format for GlobalProperty arrays
        machine: Eliminate unnecessary stringify() usage
        spapr: Eliminate SPAPR_PCI_2_7_MMIO_WIN_SIZE macro
        memory-device: rewrite address assignment using ranges
        range: add some more functions
        Mention that QMP 'cpu-add' will be deprecated
        Update that HMP 'cpu-add' is deprecated in 4.0
        qemu-deprecated.texi: Rename the HMP section
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      e53f7796
    • P
      test: execute g_test_run when tests are skipped · 4848cb3d
      Paolo Bonzini 提交于
      Sometimes a test's main() function recognizes that the environment
      does not support the test, and therefore exits.  In this case, we
      still should run g_test_run() so that a TAP harness will print the
      test plan ("1..0") and the test will be marked as skipped.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <1543513531-1151-2-git-send-email-pbonzini@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NThomas Huth <thuth@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      4848cb3d
    • M
      qga: drop < Vista compatibility · 4ac80866
      Marc-André Lureau 提交于
      Building QGA for XP seems possible so far: the dependency on
      libqemuutil.a implies building qemu-thread-win32.c, which requires
      Vista API since commit 12f8def0 (v2.9). But qemu-thread isn't being
      used in QGA, the resulting binary may still work on XP.  XP is no
      longer supported for the past 4.5y, it's time to drop support for it.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181122110039.15972-5-marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      4ac80866
    • M
      build-sys: build with Vista API by default · 56cdca1d
      Marc-André Lureau 提交于
      Both qemu & qga build with Vista API by default already, by defining
      _WIN32_WINNT 0x0600. Set it globally in osdep.h instead.
      
      This replaces WINVER by _WIN32_WINNT in osdep.h. WINVER doesn't seem
      to be really useful these days.
      (see also https://blogs.msdn.microsoft.com/oldnewthing/20070411-00/?p=27283)
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181122110039.15972-4-marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      56cdca1d
    • M
      build-sys: move windows defines in osdep.h header · 007e722c
      Marc-André Lureau 提交于
      This removes some clutter in compilation logging, and allows some
      easier tweaking per compilation unit/CFLAGS overriding.
      
      Note that we can't move those define in os-win32.h, since they must be
      set before the first system headers are included.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181122110039.15972-3-marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      007e722c
    • M
      build-sys: don't include windows.h, osdep.h does it · 444e20a3
      Marc-André Lureau 提交于
      osdep.h will also define the available Windows API version for QEMU.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181122110039.15972-2-marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      444e20a3
    • G
      scsi: esp: Defer command completion until previous interrupts have been handled · ea84a442
      Guenter Roeck 提交于
      The guest OS reads RSTAT, RSEQ, and RINTR, and expects those registers
      to reflect a consistent state. However, it is possible that the registers
      can change after RSTAT was read, but before RINTR is read, when
      esp_command_complete() is called.
      
      Guest OS		qemu
      --------		----
      [handle interrupt]
      Read RSTAT
      			esp_command_complete()
      			 RSTAT = STAT_ST
      			 esp_dma_done()
      			  RSTAT |= STAT_TC
      			  RSEQ = 0
      			  RINTR = INTR_BS
      
      Read RSEQ
      Read RINTR		RINTR = 0
      			RSTAT &= ~STAT_TC
      			RSEQ = SEQ_CD
      
      The guest OS would then try to handle INTR_BS combined with an old
      value of RSTAT. This sometimes resulted in lost events, spurious
      interrupts, guest OS confusion, and stalled SCSI operations.
      A typical guest error log (observed with various versions of Linux)
      looks as follows.
      
      scsi host1: Spurious irq, sreg=13.
      ...
      scsi host1: Aborting command [84531f10:2a]
      scsi host1: Current command [f882eea8:35]
      scsi host1: Queued command [84531f10:2a]
      scsi host1:  Active command [f882eea8:35]
      scsi host1: Dumping command log
      scsi host1: ent[15] CMD val[44] sreg[90] seqreg[00] sreg2[00] ireg[20] ss[00] event[0c]
      scsi host1: ent[16] CMD val[01] sreg[90] seqreg[00] sreg2[00] ireg[20] ss[02] event[0c]
      scsi host1: ent[17] CMD val[43] sreg[90] seqreg[00] sreg2[00] ireg[20] ss[02] event[0c]
      scsi host1: ent[18] EVENT val[0d] sreg[92] seqreg[04] sreg2[00] ireg[18] ss[00] event[0c]
      ...
      
      Defer handling command completion until previous interrupts have been
      handled to fix the problem.
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      ea84a442
    • G
      esp-pci: Fix status register write erase control · c2d6eeda
      Guenter Roeck 提交于
      Per AM53C974 datasheet, definition of "SCSI Bus and Control (SBAC)"
      register:
      
      Bit 24 'STATUS' Write Erase Control
      
      This bit controls the Write Erase feature on bits 3:1 and bit 6 of the DMA
      Status Register ((B)+54h). When this bit is programmed to '1', the state
      of bits 3:1 are preserved when read. Bits 3:1 are only cleared when a '1'
      is written to the corresponding bit location. For example, to clear bit 1,
      the value of '0000_0010b' should be written to the register. When the DMA
      Status Preserve bit is '0', bits 3:1 are cleared when read.
      
      The status register is currently defined to bit 12, not bit 24.
      Also, its implementation is reversed: The status is auto-cleared if
      the bit is set to 1, and must be cleared explicitly when the bit is
      set to 0. This results in spurious interrupts reported by the Linux
      kernel, and in some cases even results in stalled SCSI operations.
      
      Set SBAC_STATUS to bit 24 and reverse the logic to fix the problem.
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      Message-Id: <1543442171-24863-1-git-send-email-linux@roeck-us.net>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      c2d6eeda
    • S
      block/iscsi: cancel libiscsi task when ABORT TASK TMF completes · 88e94fd2
      Stefan Hajnoczi 提交于
      The libiscsi iscsi_task_mgmt_async() API documentation says:
      
        abort_task will also cancel the scsi task. The callback for the scsi
        task will be invoked with SCSI_STATUS_CANCELLED
      
      The libiscsi implementation does not fulfil this promise.  The task's
      callback is not invoked and its struct iscsi_pdu remains in the internal
      list (effectively leaked).
      
      This patch invokes the libiscsi iscsi_scsi_cancel_task() API to force
      the task's callback to be invoked with SCSI_STATUS_CANCELLED when the
      ABORT TASK TMF completes and the task's callback hasn't been invoked
      yet.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Message-Id: <20180215111526.2464-1-stefanha@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      88e94fd2
    • S
      block/iscsi: fix ioctl cancel use-after-free · c1004487
      Stefan Hajnoczi 提交于
      iscsi_aio_cancel() does not increment the request's reference count,
      causing a use-after-free when ABORT TASK finishes after the request has
      already completed.
      
      There are some additional issues with iscsi_aio_cancel():
      1. Several ABORT TASKs may be sent for the same task if
         iscsi_aio_cancel() is invoked multiple times.  It's better to avoid
         this just in case the command identifier is reused.
      2. The iscsilun->mutex protection is missing in iscsi_aio_cancel().
      Reported-by: NFelipe Franciosi <felipe@nutanix.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Message-Id: <20180203061621.7033-4-stefanha@redhat.com>
      Reviewed-by: NFelipe Franciosi <felipe@nutanix.com>
      Tested-by: NSreejith Mohanan <sreejit.mohanan@nutanix.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      c1004487
    • S
      block/iscsi: take iscsilun->mutex in iscsi_timed_check_events() · 83d11973
      Stefan Hajnoczi 提交于
      Commit d045c466 ("iscsi: do not use
      aio_context_acquire/release") introduced iscsilun->mutex but appears to
      have overlooked iscsi_timed_check_events() when introducing the mutex.
      
      iscsi_service() and iscsi_set_events() must be called with
      iscsilun->mutex held.
      
      iscsi_timed_check_events() is invoked from the AioContext and does not
      take the mutex.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Message-Id: <20180203061621.7033-3-stefanha@redhat.com>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      83d11973
    • S
      block/iscsi: drop unused IscsiAIOCB->buf field · f92fa85f
      Stefan Hajnoczi 提交于
      The IscsiAIOCB->buf field has not been used since commit
      e49ab19f ("block/iscsi: bump libiscsi
      requirement to 1.9.0").  It used to be a linear buffer for old libiscsi
      versions that didn't support scatter-gather.  The minimum libiscsi
      version supports scatter-gather so we don't linearize buffers anymore.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Message-Id: <20180203061621.7033-2-stefanha@redhat.com>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      f92fa85f
    • A
      hax: Support for Linux hosts · b65cc8de
      Alexandro Sanchez Bach 提交于
      Intel HAXM supports now 32-bit and 64-bit Linux hosts. This patch includes
      the corresponding userland changes.
      
      Since the Darwin userland backend is POSIX-compliant, the hax-darwin.{c,h}
      files have been renamed to hax-posix.{c,h}. This prefix is consistent with
      the naming used in the rest of QEMU.
      Signed-off-by: NAlexandro Sanchez Bach <asanchez@kryptoslogic.com>
      Message-Id: <20181115013331.65820-1-asanchez@kryptoslogic.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      b65cc8de