1. 18 10月, 2017 13 次提交
  2. 17 10月, 2017 6 次提交
  3. 12 10月, 2017 15 次提交
    • T
      disas: Always initialize read_memory_inner_func properly · eb584b40
      Thomas Huth 提交于
      I've recently seen this with valgrind while running the HMP tester:
      
      ==22373== Conditional jump or move depends on uninitialised value(s)
      ==22373==    at 0x4A41FD: arm_disas_set_info (cpu.c:504)
      ==22373==    by 0x3867A7: monitor_disas (disas.c:390)
      ==22373==    by 0x38E80E: memory_dump (monitor.c:1339)
      ==22373==    by 0x38FA43: handle_hmp_command (monitor.c:3123)
      ==22373==    by 0x38FB9E: qmp_human_monitor_command (monitor.c:613)
      ==22373==    by 0x4E3124: qmp_marshal_human_monitor_command (qmp-marshal.c:1736)
      ==22373==    by 0x769678: do_qmp_dispatch (qmp-dispatch.c:104)
      ==22373==    by 0x769678: qmp_dispatch (qmp-dispatch.c:131)
      ==22373==    by 0x38B734: handle_qmp_command (monitor.c:3853)
      ==22373==    by 0x76ED07: json_message_process_token (json-streamer.c:105)
      ==22373==    by 0x78D40A: json_lexer_feed_char (json-lexer.c:323)
      ==22373==    by 0x78D4CD: json_lexer_feed (json-lexer.c:373)
      ==22373==    by 0x38A08D: monitor_qmp_read (monitor.c:3895)
      
      And indeed, in monitor_disas, the read_memory_inner_func variable was
      not initialized, but arm_disas_set_info() expects this to be NULL
      or a valid pointer. Let's properly set this to NULL in the
      INIT_DISASSEMBLE_INFO to fix it in all functions that use the
      disassemble_info struct.
      
      Fixes: f7478a92 ("Fix Thumb-1 BE32 execution")
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Message-Id: <1506524313-20037-1-git-send-email-thuth@redhat.com>
      eb584b40
    • I
      pc: make sure that plugged CPUs are of the same type · 6970c5ff
      Igor Mammedov 提交于
      heterogeneous cpus are not supported and hotplugging different
      cpu model crashes QEMU:
      
        qemu-system-x86_64 -cpu qemu64 -smp 1,maxcpus=2
        (qemu) device_add host-x86_64-cpu,socket-id=1,core-id=0,thread-id=0,id=foo
        (qemu) info cpus
        error: failed to get MSR 0x38d
        qemu-system-x86_64: target/i386/kvm.c:2121: kvm_get_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.
        Aborted (core dumped)
      
      Gracefully fail hotplug process in case of user mistake.
      Reported-by: NGreg Kurz <groug@kaod.org>
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Message-Id: <1507638879-200718-1-git-send-email-imammedo@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      6970c5ff
    • M
      memory: fix off-by-one error in memory_region_notify_one() · b021d1c0
      Maxime Coquelin 提交于
      This patch fixes an off-by-one error that could lead to the
      notifyee to receive notifications for ranges it is not
      registered to.
      
      The bug has been spotted by code review.
      
      Fixes: bd2bfa4c ("memory: introduce memory_region_notify_one()")
      Cc: qemu-stable@nongnu.org
      Cc: Peter Xu <peterx@redhat.com>
      Signed-off-by: NMaxime Coquelin <maxime.coquelin@redhat.com>
      Message-Id: <20171010094247.10173-4-maxime.coquelin@redhat.com>
      Reviewed-by: NPeter Xu <peterx@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      b021d1c0
    • P
      exec: simplify address_space_get_iotlb_entry · 076a93d7
      Peter Xu 提交于
      This patch let address_space_get_iotlb_entry() to use the newly
      introduced page_mask parameter in flatview_do_translate(). Then we
      will be sure the IOTLB can be aligned to page mask, also we should
      nicely support huge pages now when introducing a764040c.
      
      Fixes: a764040c ("exec: abstract address_space_do_translate()")
      Signed-off-by: NPeter Xu <peterx@redhat.com>
      Signed-off-by: NMaxime Coquelin <maxime.coquelin@redhat.com>
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Message-Id: <20171010094247.10173-3-maxime.coquelin@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      076a93d7
    • P
      exec: add page_mask for flatview_do_translate · d5e5fafd
      Peter Xu 提交于
      The function is originally used for flatview_space_translate() and what
      we care about most is (xlat, plen) range. However for iotlb requests, we
      don't really care about "plen", but the size of the page that "xlat" is
      located on. While, plen cannot really contain this information.
      
      A simple example to show why "plen" is not good for IOTLB translations:
      
      E.g., for huge pages, it is possible that guest mapped 1G huge page on
      device side that used this GPA range:
      
        0x100000000 - 0x13fffffff
      
      Then let's say we want to translate one IOVA that finally mapped to GPA
      0x13ffffe00 (which is located on this 1G huge page). Then here we'll
      get:
      
        (xlat, plen) = (0x13fffe00, 0x200)
      
      So the IOTLB would be only covering a very small range since from
      "plen" (which is 0x200 bytes) we cannot tell the size of the page.
      
      Actually we can really know that this is a huge page - we just throw the
      information away in flatview_do_translate().
      
      This patch introduced "page_mask" optional parameter to capture that
      page mask info. Also, I made "plen" an optional parameter as well, with
      some comments for the whole function.
      
      No functional change yet.
      Signed-off-by: NPeter Xu <peterx@redhat.com>
      Signed-off-by: NMaxime Coquelin <maxime.coquelin@redhat.com>
      Message-Id: <20171010094247.10173-2-maxime.coquelin@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      d5e5fafd
    • D
      char: don't skip client cleanup if 'connected' flag is unset · 9cca7578
      Daniel P. Berrange 提交于
      The tcp_chr_free_connection & tcp_chr_disconnect methods both
      skip all of their cleanup work unless the 's->connected' flag
      is set.  This flag is set when the incoming client connection
      is ready to use. Crucially this is *after* the TLS handshake
      has been completed. So if the TLS handshake fails and we try
      to cleanup the failed client, all the cleanup is skipped as
      's->connected' is still false.
      
      The only important thing that should be skipped in this case
      is sending of the CHR_EVENT_CLOSED, because we never got as
      far as sending the corresponding CHR_EVENT_OPENED. Every other
      bit of cleanup can be robust against being called even when
      s->connected is false.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <20171005155057.7664-1-berrange@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      9cca7578
    • D
      ide: support reporting of rotation rate · 3b19f450
      Daniel P. Berrange 提交于
      The Linux kernel will query the ATA IDENTITY DEVICE data, word 217
      to determine the rotations per minute of the disk. If this has
      the value 1, it is taken to be an SSD and so Linux sets the
      'rotational' flag to 0 for the I/O queue and will stop using that
      disk as a source of random entropy. Other operating systems may
      also take into account rotation rate when setting up default
      behaviour.
      
      Mgmt apps should be able to set the rotation rate for virtualized
      block devices, based on characteristics of the host storage in use,
      so that the guest OS gets sensible behaviour out of the box. This
      patch thus adds a 'rotation-rate' parameter for 'ide-hd' device
      types.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <20171004114008.14849-3-berrange@redhat.com>
      Reviewed-by: NJohn Snow <jsnow@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      3b19f450
    • D
      scsi-disk: support reporting of rotation rate · 070f8009
      Daniel P. Berrange 提交于
      The Linux kernel will query the SCSI "Block device characteristics"
      VPD to determine the rotations per minute of the disk. If this has
      the value 1, it is taken to be an SSD and so Linux sets the
      'rotational' flag to 0 for the I/O queue and will stop using that
      disk as a source of random entropy. Other operating systems may
      also take into account rotation rate when setting up default
      behaviour.
      
      Mgmt apps should be able to set the rotation rate for virtualized
      block devices, based on characteristics of the host storage in use,
      so that the guest OS gets sensible behaviour out of the box. This
      patch thus adds a 'rotation-rate' parameter for 'scsi-hd' and
      'scsi-block' device types. For the latter, this parameter will be
      ignored unless the host device has TYPE_DISK.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <20171004114008.14849-2-berrange@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      070f8009
    • P
      checkpatch: refine mode selection · 777d05ba
      Paolo Bonzini 提交于
      stgit produces patch files that lack the ".patch" extensions.  Others
      might be using ".diff" too.  But since we are already limiting source files
      to only a handful of extensions, we can reuse that in the mode selection
      code.
      
      While at it, do not match "../foo" as a branch name.
      Reviewed-by: NDaniel P. Berrange <berrange@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      777d05ba
    • P
      Merge remote-tracking branch 'remotes/ehabkost/tags/python-next-pull-request' into staging · a0b261db
      Peter Maydell 提交于
      Python queue, 2017-10-11
      
      # gpg: Signature made Wed 11 Oct 2017 19:49:40 BST
      # gpg:                using RSA key 0x2807936F984DC5A6
      # 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/python-next-pull-request:
        scripts: Remove debug parameter from QEMUMachine
        scripts: Remove debug parameter from QEMUMonitorProtocol
        guestperf: Configure logging on all shell frontends
        basevm: Call logging.basicConfig()
        iotests: Set up Python logging
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a0b261db
    • E
      scripts: Remove debug parameter from QEMUMachine · 1a6d3757
      Eduardo Habkost 提交于
      All scripts that use the QEMUMachine and QEMUQtestMachine classes
      (device-crash-test, tests/migration/*, iotests.py, basevm.py)
      already configure logging.
      
      The basicConfig() call inside QEMUMachine.__init__() is being
      kept just to make sure a script would still work if it didn't
      configure logging.
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20171005172013.3098-4-ehabkost@redhat.com>
      Reviewed-by: NLukáš Doktor <ldoktor@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      1a6d3757
    • E
      scripts: Remove debug parameter from QEMUMonitorProtocol · 09177654
      Eduardo Habkost 提交于
      Use logging module for the QMP debug messages.  The only scripts
      that set debug=True are iotests.py and guestperf/engine.py, and
      they already call logging.basicConfig() to set up logging.
      
      Scripts that don't configure logging are safe as long as they
      don't need debugging output, because debug messages don't trigger
      the "No handlers could be found for logger" message from the
      Python logging module.
      
      Scripts that already configure logging but don't use debug=True
      (e.g. scripts/vm/basevm.py) will get QMP debugging enabled for
      free.
      
      Cc: "Alex Bennée" <alex.bennee@linaro.org>
      Cc: Fam Zheng <famz@redhat.com>
      Cc: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20171005172013.3098-3-ehabkost@redhat.com>
      Reviewed-by: NLukáš Doktor <ldoktor@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      09177654
    • E
      guestperf: Configure logging on all shell frontends · 8af09b80
      Eduardo Habkost 提交于
      The logging module will eventually replace the 'debug' parameter
      in QEMUMachine and QEMUMonitorProtocol.
      
      Cc: Daniel P. Berrange <berrange@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20171005172013.3098-2-ehabkost@redhat.com>
      Reviewed-by: NLukáš Doktor <ldoktor@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      8af09b80
    • E
      basevm: Call logging.basicConfig() · fb3b4e6d
      Eduardo Habkost 提交于
      Just setting level=DEBUG when debug is enabled is not enough: we
      need to set up a log handler if we want debug messages generated
      using logging.getLogger(...).debug() to be printed.
      
      This was not a problem before because logging.debug() calls
      logging.basicConfig() implicitly, but it's safer to not rely on
      that.
      
      Cc: "Alex Bennée" <alex.bennee@linaro.org>
      Cc: Fam Zheng <famz@redhat.com>
      Cc: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170927130339.21444-4-ehabkost@redhat.com>
      Reviewed-by: NDaniel P. Berrange <berrange@redhat.com>
      Reviewed-by: NFam Zheng <famz@redhat.com>
      Reviewed-by: NLukáš Doktor <ldoktor@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      fb3b4e6d
    • E
      iotests: Set up Python logging · 43851b5b
      Eduardo Habkost 提交于
      Set up Python logging module instead of relying on
      QEMUMachine._debug to enable debugging messages.
      
      Cc: Kevin Wolf <kwolf@redhat.com>
      Cc: Max Reitz <mreitz@redhat.com>
      Cc: qemu-block@nongnu.org
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Message-Id: <20170927130339.21444-3-ehabkost@redhat.com>
      Reviewed-by: NDaniel P. Berrange <berrange@redhat.com>
      Reviewed-by: NLukáš Doktor <ldoktor@redhat.com>
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      43851b5b
  4. 11 10月, 2017 6 次提交
    • P
      Merge remote-tracking branch 'remotes/elmarco/tags/vus-pull-request' into staging · bac96083
      Peter Maydell 提交于
      # gpg: Signature made Tue 10 Oct 2017 22:33:56 BST
      # gpg:                using RSA key 0xDAE8E10975969CE5
      # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>"
      # gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>"
      # gpg: WARNING: This key is not certified with sufficiently trusted signatures!
      # gpg:          It is not certain that the signature belongs to the owner.
      # Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5
      
      * remotes/elmarco/tags/vus-pull-request: (27 commits)
        vhost-user-scsi: remove server_sock from VusDev
        vhost-user-scsi: use libvhost-user glib helper
        libvhost-user: add glib source helper
        vhost-user-scsi: use glib logging
        vhost-user-scsi: simplify source handling
        vhost-user-scsi: drop extra callback pointer
        vhost-user-scsi: don't copy iscsi/scsi-lowlevel.h
        vhost-user-scsi: avoid use of iscsi_ namespace
        vhost-user-scsi: rename VUS types
        vhost-user-scsi: remove unimplemented functions
        vhost-user-scsi: remove VUS_MAX_LUNS
        vhost-user-scsi: remove vdev_scsi_add_iscsi_lun()
        vhost-user-scsi: assert() in iscsi_add_lun()
        vhost-user-scsi: use NULL pointer
        vhost-user-scsi: simplify unix path cleanup
        vhost-user-scsi: remove vdev_scsi_find_by_vu()
        vhost-user-scsi: also free the gtree
        vhost-user-scsi: glib calls that allocate don't return NULL
        vhost-user-scsi: use glib allocation
        vhost-user-scsi: code style fixes
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      bac96083
    • P
      Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20171010' into staging · e74c0cfa
      Peter Maydell 提交于
      Queued TCG patches
      
      # gpg: Signature made Tue 10 Oct 2017 20:23:12 BST
      # gpg:                using RSA key 0x64DF38E8AF7E215F
      # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>"
      # Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F
      
      * remotes/rth/tags/pull-tcg-20171010:
        tcg/mips: delete commented out extern keyword.
        tcg: define TCG_HIGHWATER
        util: move qemu_real_host_page_size/mask to osdep.h
        tcg: take .helpers out of TCGContext
        tci: move tci_regs to tcg_qemu_tb_exec's stack
        exec-all: extract tb->tc_* into a separate struct tc_tb
        translate-all: define and use DEBUG_TB_CHECK_GATE
        translate-all: define and use DEBUG_TB_INVALIDATE_GATE
        exec-all: introduce TB_PAGE_ADDR_FMT
        translate-all: define and use DEBUG_TB_FLUSH_GATE
        exec-all: bring tb->invalid into tb->cflags
        tcg: consolidate TB lookups in tb_lookup__cpu_state
        tcg: remove addr argument from lookup_tb_ptr
        tcg/mips: constify tcg_target_callee_save_regs
        tcg/i386: constify tcg_target_callee_save_regs
        cpu-exec: rename have_tb_lock to acquired_tb_lock in tb_find
        translate-all: make have_tb_lock static
        exec-all: fix typos in TranslationBlock's documentation
        tcg: fix corruption of code_time profiling counter upon tb_flush
        cputlb: bring back tlb_flush_count under !TLB_DEBUG
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      e74c0cfa
    • M
      vhost-user-scsi: remove server_sock from VusDev · 53a2e1b5
      Marc-André Lureau 提交于
      It is unneeded in the VusDev device structure, and also simplify a bit
      the code.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      53a2e1b5
    • M
    • M
      libvhost-user: add glib source helper · 8bb7ddb7
      Marc-André Lureau 提交于
      This file implements a bridge from the vu_init API of libvhost-user to
      GSource, so that libvhost-user can be used inside a GLib main loop.
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      8bb7ddb7
    • M
      vhost-user-scsi: use glib logging · 422a2687
      Marc-André Lureau 提交于
      - PLOG is unused
      - code is compiled out unless debug is enabled
      - logging is too verbose
      - you can pipe to ts to have timestamp if needed, or use structured
        logging with more recent glib
      Signed-off-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      422a2687