Skip to content
Snippets Groups Projects
  1. Jan 14, 2019
    • John Snow's avatar
      iotests: change qmp_log filters to expect QMP objects only · 08fcd611
      John Snow authored
      
      As laid out in the previous commit's message:
      
      ```
      Several places in iotests deal with serializing objects into JSON
      strings, but to add pretty-printing it seems desirable to localize
      all of those cases.
      
      log() seems like a good candidate for that centralized behavior.
      log() can already serialize json objects, but when it does so,
      it assumes filters=[] operates on QMP objects, not strings.
      
      qmp_log currently operates by dumping outgoing and incoming QMP
      objects into strings and filtering them assuming that filters=[]
      are string filters.
      ```
      
      Therefore:
      
      Change qmp_log to treat filters as if they're always qmp object filters,
      then change the logging call to rely on log()'s ability to serialize QMP
      objects, so we're not duplicating that effort.
      
      Add a qmp version of filter_testfiles and adjust the only caller using
      it for qmp_log to use the qmp version.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Message-Id: <20181221093529.23855-10-jsnow@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      08fcd611
    • John Snow's avatar
      iotests: remove default filters from qmp_log · f8ca8609
      John Snow authored
      
      Several places in iotests deal with serializing objects into JSON
      strings, but to add pretty-printing it seems desirable to localize
      all of those cases.
      
      log() seems like a good candidate for that centralized behavior.
      log() can already serialize json objects, but when it does so,
      it assumes filters=[] operates on QMP objects, not strings.
      
      qmp_log currently operates by dumping outgoing and incoming QMP
      objects into strings and filtering them assuming that filters=[]
      are string filters.
      
      To have qmp_log use log's serialization, qmp_log will need to
      accept only qmp filters, not text filters.
      
      However, only a single caller of qmp_log actually requires any
      filters at all. I remove the default filter and add it explicitly
      to the caller in preparation for refactoring qmp_log to use rich
      filters instead.
      
      test 206 is amended to name the filter explicitly and the default
      is removed.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-9-jsnow@redhat.com>
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      f8ca8609
    • John Snow's avatar
      iotests: add qmp recursive sorting function · 0706e87d
      John Snow authored
      
      Python before 3.6 does not sort dictionaries (including kwargs).
      Therefore, printing QMP objects involves sorting the keys to have
      a predictable ordering in the iotests output. This means that
      iotests output will sometimes show arguments in an order not
      specified by the test author.
      
      Presently, we accomplish this by using json.dumps' sort_keys argument,
      where we only serialize the arguments dictionary, but not the command.
      
      However, if we want to pretty-print QMP objects being sent to the
      QEMU process, we need to build the entire command before logging it.
      Ordinarily, this would then involve "arguments" being sorted above
      "execute", which would necessitate a rather ugly and harder-to-read
      change to many iotests outputs.
      
      To facilitate pretty-printing AND maintaining predictable output AND
      having "arguments" sort after "execute", add a custom sort function
      that takes a dictionary and recursively builds an OrderedDict that
      maintains the specific key order we wish to see in iotests output.
      
      The qmp_log function uses this to build a QMP object that keeps
      "execute" above "arguments", but sorts all keys and keys in any
      subdicts in "arguments" lexicographically to maintain consistent
      iotests output, with no incompatible changes to any current test.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-8-jsnow@redhat.com>
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      0706e87d
    • John Snow's avatar
      iotests: add filter_generated_node_ids · fa1151f8
      John Snow authored
      
      To mimic the common filter of the same name, but for the python tests.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-7-jsnow@redhat.com>
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      fa1151f8
    • John Snow's avatar
      iotests.py: don't abort if IMGKEYSECRET is undefined · 58ebcb65
      John Snow authored
      
      Instead of using os.environ[], use .get with a default of empty string
      to match the setup in check to allow us to import the iotests module
      (for debugging, say) without needing a crafted environment just to
      import the module.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-6-jsnow@redhat.com>
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      58ebcb65
    • John Snow's avatar
      block: remove 'x' prefix from experimental bitmap APIs · 0e2b7f09
      John Snow authored
      
      The 'x' prefix was added because I was uncertain of the direction we'd
      take for the libvirt API. With the general approach solidified, I feel
      comfortable committing to this API for 4.0.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-5-jsnow@redhat.com>
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      0e2b7f09
    • John Snow's avatar
      blockdev: n-ary bitmap merge · 360d4e4e
      John Snow authored
      
      Especially outside of transactions, it is helpful to provide
      all-or-nothing semantics for bitmap merges. This facilitates
      the coalescing of multiple bitmaps into a single target for
      the "checkpoint" interpretation when assembling bitmaps that
      represent arbitrary points in time from component bitmaps.
      
      This is an incompatible change from the preliminary version
      of the API.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-4-jsnow@redhat.com>
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      360d4e4e
    • John Snow's avatar
      block/dirty-bitmap: remove assertion from restore · 07d5a8df
      John Snow authored
      
      When making a backup of a dirty bitmap (for transactions), we want to
      restore that backup whether or not the bitmap is enabled.
      
      It is perfectly valid to write into bitmaps that are disabled. It is
      only illegitimate for the guest to have done so.
      
      Remove this assertion.
      
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Message-Id: <20181221093529.23855-3-jsnow@redhat.com>
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      07d5a8df
    • John Snow's avatar
      blockdev: abort transactions in reverse order · f4de0f8c
      John Snow authored
      
      Presently, we abort transactions in the same order they were processed in.
      Bitmap commands, though, attempt to restore backup data structures on abort.
      
      That's not valid, they need to be aborted in reverse chronological order.
      
      Replace the QSIMPLEQ data structure with a QTAILQ one, so we can iterate
      in reverse for the abort phase of the transaction.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
      Message-Id: <20181221093529.23855-2-jsnow@redhat.com>
      [eblake: rebase]
      Signed-off-by: default avatarEric Blake <eblake@redhat.com>
      f4de0f8c
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-3.2-part2' into staging · 7260438b
      Peter Maydell authored
      
      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: default avatarPeter Maydell <peter.maydell@linaro.org>
      7260438b
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/kraxel/tags/input-20190111-pull-request' into staging · 4fbfedd1
      Peter Maydell authored
      
      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: default avatarPeter Maydell <peter.maydell@linaro.org>
      4fbfedd1
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging · d63a6af9
      Peter Maydell authored
      
      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: default avatarPeter Maydell <peter.maydell@linaro.org>
      d63a6af9
  2. Jan 11, 2019
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/kraxel/tags/vga-20190111-pull-request' into staging · 1fa404b6
      Peter Maydell authored
      
      vga: enable virtio test, fix ddc oob read
      
      # gpg: Signature made Fri 11 Jan 2019 13:58:12 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/vga-20190111-pull-request:
        i2c-ddc: fix oob read
        tests/display-vga: Enable virtio-vga test
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      1fa404b6
    • Philippe Mathieu-Daudé's avatar
      tests: Disable qht-bench parallel test when using gprof · ce2eefd7
      Philippe Mathieu-Daudé authored
      This test is failing on the Travis CI [*] since some time now,
      disable it until it get fixed.
      
      [*] https://travis-ci.org/qemu/qemu/builds/474821674
      
      
      
      Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-Id: <20190103150951.17592-3-philmd@redhat.com>
      Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
      ce2eefd7
    • Philippe Mathieu-Daudé's avatar
      configure: Let the TARGET_GPROF var use the regular 'y' for Yes · 0acf7ded
      Philippe Mathieu-Daudé authored
      
      All other variables are set using 'y', which is what the rules.mak
      functions expect to parse.
      
      Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-Id: <20190103150951.17592-2-philmd@redhat.com>
      Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
      0acf7ded
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/kraxel/tags/misc-20190111-pull-request' into staging · 27df21ca
      Peter Maydell authored
      
      misc: fix seabios cross build.
      
      # gpg: Signature made Fri 11 Jan 2019 11:46:47 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/misc-20190111-pull-request:
        roms: seabios: Rename CROSS_COMPILE to CROSS_PREFIX
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      27df21ca
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging · 15bede55
      Peter Maydell authored
      
      * 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: default avatarPeter Maydell <peter.maydell@linaro.org>
      15bede55
    • Paolo Bonzini's avatar
      avoid TABs in files that only contain a few · 7d37435b
      Paolo Bonzini authored
      
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20181213223737.11793-3-pbonzini@redhat.com>
      Reviewed-by: default avatarAleksandar Markovic <amarkovic@wavecomp.com>
      Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Reviewed-by: default avatarWainer dos Santos Moschetta <wainersm@redhat.com>
      Acked-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Acked-by: default avatarEric Blake <eblake@redhat.com>
      Acked-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: default avatarStefan Markovic <smarkovic@wavecomp.com>
      Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      7d37435b
    • Paolo Bonzini's avatar
      remove space-tab sequences · 72e21db7
      Paolo Bonzini authored
      
      There are not many, and they are all simple mistakes that ended up
      being committed.  Remove them.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <20181213223737.11793-2-pbonzini@redhat.com>
      Reviewed-by: default avatarWainer dos Santos Moschetta <wainersm@redhat.com>
      Acked-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      72e21db7
    • Paolo Bonzini's avatar
      scripts: add script to convert multiline comments into 4-line format · 6afeb397
      Paolo Bonzini authored
      
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      6afeb397
    • Peng Hao's avatar
      hw/watchdog/wdt_i6300esb: remove a unnecessary comment · 7d2fcebb
      Peng Hao authored
      
      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: default avatarPeng Hao <peng.hao2@zte.com.cn>
      Message-Id: <1544253511-82742-1-git-send-email-peng.hao2@zte.com.cn>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      7d2fcebb
    • Paolo Bonzini's avatar
      checkpatch: warn about qemu/queue.h head structs that are not typedef-ed · 50db69a1
      Paolo Bonzini authored
      
      These are just like any other struct or union, so they should have
      CamelCase typedefs.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      50db69a1
    • Paolo Bonzini's avatar
      qemu/queue.h: simplify reverse access to QTAILQ · eae3eb3e
      Paolo Bonzini authored
      
      The new definition of QTAILQ does not require passing the headname,
      remove it.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      eae3eb3e
    • Paolo Bonzini's avatar
      qemu/queue.h: reimplement QTAILQ without pointer-to-pointers · 7274f01b
      Paolo Bonzini authored
      
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      7274f01b
    • Paolo Bonzini's avatar
      qemu/queue.h: remove Q_TAILQ_{HEAD,ENTRY} · f95bb39c
      Paolo Bonzini authored
      
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      f95bb39c
    • Paolo Bonzini's avatar
      qemu/queue.h: typedef QTAILQ heads · f481ee2d
      Paolo Bonzini authored
      
      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: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      f481ee2d
    • Paolo Bonzini's avatar
      qemu/queue.h: leave head structs anonymous unless necessary · b58deb34
      Paolo Bonzini authored
      
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b58deb34
    • Paolo Bonzini's avatar
      vfio: make vfio_address_spaces static · 10ca76b4
      Paolo Bonzini authored
      
      It is not used outside hw/vfio/common.c, so it does not need to
      be extern.
      
      Acked-by: default avatarAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      10ca76b4
    • Paolo Bonzini's avatar
      qemu/queue.h: do not access tqe_prev directly · 70537ed5
      Paolo Bonzini authored
      
      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: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
      Reviewed-by: default avatarMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      70537ed5
    • Paolo Bonzini's avatar
      test: replace gtester with a TAP driver · 9df43317
      Paolo Bonzini authored
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <1543513531-1151-3-git-send-email-pbonzini@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      9df43317
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging · e53f7796
      Peter Maydell authored
      
      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: default avatarPeter Maydell <peter.maydell@linaro.org>
      e53f7796
    • Paolo Bonzini's avatar
      test: execute g_test_run when tests are skipped · 4848cb3d
      Paolo Bonzini authored
      
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Message-Id: <1543513531-1151-2-git-send-email-pbonzini@redhat.com>
      Reviewed-by: default avatarEric Blake <eblake@redhat.com>
      Reviewed-by: default avatarThomas Huth <thuth@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4848cb3d
    • Marc-André Lureau's avatar
      qga: drop < Vista compatibility · 4ac80866
      Marc-André Lureau authored
      
      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: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181122110039.15972-5-marcandre.lureau@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4ac80866
    • Marc-André Lureau's avatar
      build-sys: build with Vista API by default · 56cdca1d
      Marc-André Lureau authored
      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: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181122110039.15972-4-marcandre.lureau@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      56cdca1d
    • Marc-André Lureau's avatar
      build-sys: move windows defines in osdep.h header · 007e722c
      Marc-André Lureau authored
      
      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: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181122110039.15972-3-marcandre.lureau@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      007e722c
    • Marc-André Lureau's avatar
      build-sys: don't include windows.h, osdep.h does it · 444e20a3
      Marc-André Lureau authored
      
      osdep.h will also define the available Windows API version for QEMU.
      
      Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-Id: <20181122110039.15972-2-marcandre.lureau@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      444e20a3
    • Guenter Roeck's avatar
      scsi: esp: Defer command completion until previous interrupts have been handled · ea84a442
      Guenter Roeck authored
      
      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: default avatarGuenter Roeck <linux@roeck-us.net>
      ea84a442
    • Guenter Roeck's avatar
      esp-pci: Fix status register write erase control · c2d6eeda
      Guenter Roeck authored
      
      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: default avatarGuenter Roeck <linux@roeck-us.net>
      Message-Id: <1543442171-24863-1-git-send-email-linux@roeck-us.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      c2d6eeda
    • Stefan Hajnoczi's avatar
      block/iscsi: cancel libiscsi task when ABORT TASK TMF completes · 88e94fd2
      Stefan Hajnoczi authored
      
      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: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Message-Id: <20180215111526.2464-1-stefanha@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      88e94fd2
    • Stefan Hajnoczi's avatar
      block/iscsi: fix ioctl cancel use-after-free · c1004487
      Stefan Hajnoczi authored
      
      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: default avatarFelipe Franciosi <felipe@nutanix.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Message-Id: <20180203061621.7033-4-stefanha@redhat.com>
      Reviewed-by: default avatarFelipe Franciosi <felipe@nutanix.com>
      Tested-by: default avatarSreejith Mohanan <sreejit.mohanan@nutanix.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      c1004487
Loading