Skip to content
Snippets Groups Projects
  1. Feb 09, 2016
    • Richard Henderson's avatar
      target-i386: Deconstruct the cpu_T array · 1d1cc4d0
      Richard Henderson authored
      
      All references to cpu_T are done with a constant index.  It aids
      readability to decompose the array into two scalar variables.
      
      Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1436426122-12276-11-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      1d1cc4d0
    • Richard Henderson's avatar
      target-i386: Tidy gen_add_A0_im · 4e85057b
      Richard Henderson authored
      
      Merge gen_op_addl_A0_im and gen_op_addq_A0_im into gen_add_A0_im
      and clean up the ifdef.
      
      Replace the one remaining user of gen_op_addl_A0_im with gen_add_A0_im.
      
      Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-10-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4e85057b
    • Richard Henderson's avatar
      target-i386: Rewrite leave · 2045f04c
      Richard Henderson authored
      
      Unify the code across stack pointer widths.  Fix the note about
      not updating ESP before the potential exception.
      
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-9-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      2045f04c
    • Richard Henderson's avatar
      target-i386: Rewrite gen_enter inline · 743e398e
      Richard Henderson authored
      
      Use gen_lea_v_seg for centralized segment base knowledge.  Unify
      code across 32- and 64-bit.  Fix note about "must save state"
      before using the out-of-line helpers.
      
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-8-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      743e398e
    • Richard Henderson's avatar
      target-i386: Use gen_lea_v_seg in pusha/popa · d37ea0c0
      Richard Henderson authored
      
      More centralization of handling of segment bases.
      Also fixes the note about 16-bit wrap around not fully handled.
      
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-7-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      d37ea0c0
    • Richard Henderson's avatar
      target-i386: Access segs via TCG registers · 3558f805
      Richard Henderson authored
      
      Having segs[].base as a register significantly improves code
      generation for real and protected modes, particularly for TBs
      that have multiple memory references where the segment base
      can be held in a hard register through the TB.
      
      Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-6-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      3558f805
    • Richard Henderson's avatar
      target-i386: Use gen_lea_v_seg in stack subroutines · 77ebcad0
      Richard Henderson authored
      
      I.e. gen_push_v, gen_pop_T0, gen_stack_A0.
      More centralization of handling of segment bases.
      
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-5-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      77ebcad0
    • Richard Henderson's avatar
      target-i386: Use gen_lea_v_seg in gen_lea_modrm · d6a29149
      Richard Henderson authored
      
      Centralize handling of segment bases.
      
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-4-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      d6a29149
    • Richard Henderson's avatar
      target-i386: Introduce mo_stacksize · 64ae256c
      Richard Henderson authored
      
      Centralize computation of a MO_SIZE for the stack pointer.
      
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-3-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      64ae256c
    • Richard Henderson's avatar
      target-i386: Create gen_lea_v_seg · ca2f29f5
      Richard Henderson authored
      
      Add forgotten zero-extension in the TARGET_X86_64, !CODE64, ss32 case;
      use this new function to implement gen_string_movl_A0_EDI,
      gen_string_movl_A0_ESI, gen_add_A0_ds_seg.
      
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      Message-Id: <1450379966-28198-2-git-send-email-rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      ca2f29f5
    • Daniel P. Berrangé's avatar
      char: fix repeated registration of tcp chardev I/O handlers · 1e94f23d
      Daniel P. Berrangé authored
      
      In previous commit:
      
        commit f2001a7e
        Author: Daniel P. Berrange <berrange@redhat.com>
        Date:   Tue Jan 19 11:14:30 2016 +0000
      
          char: don't assume telnet initialization will not block
      
      The code which writes the telnet initialization sequence moved
      to an event loop callback. If the TCP chardev is opened as a
      server in blocking mode (ie -serial telnet:0.0.0.0:3000,server,wait)
      this results in a state where the TCP chardev is connected, but not
      yet ready to send/recv data when virtual hardware is created.
      
      When the virtual hardware initialization registers its chardev
      callbacks, it triggers tcp_chr_update_read_handler, which will
      add I/O watches to the connection.
      
      When the telnet initialization finally runs, it will then call
      tcp_chr_connect to finish the connection setup. This will in
      turn add I/O watches to the connection too.
      
      There are now two sets of I/O watches registered on the same
      connection. This ultimately causes data loss on the connection,
      for example, when typing into the telnet console only every
      second byte is echoed back to the client.
      
      The same flaw can affect channels running with TLS encryption
      too, since they also have delayed connection setup completion.
      
      The fix is to update tcp_chr_update_read_handler so that it
      avoids registering watches if the connection is not fully
      setup yet.
      
      Signed-off-by: default avatarDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <1454939707-10869-1-git-send-email-berrange@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      1e94f23d
    • Andrew Jones's avatar
      kvm-all: trace: strerror fixup · 844a3d34
      Andrew Jones authored
      
      Signed-off-by: default avatarAndrew Jones <drjones@redhat.com>
      Message-Id: <1454355464-14999-1-git-send-email-drjones@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      844a3d34
    • John Snow's avatar
      nbd: avoid unaligned uint64_t store · 667ad26f
      John Snow authored
      
      cpu_to_be64w can't be used to make unaligned stores, but stq_be_p can.
      Also, the st?_be_p takes a void* so it is more clearly suited to the
      case where you're writing into a byte buffer.
      
      Use the st?_be_p family of functions everywhere in nbd/server.c.
      
      Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
      [Changed to use st?_be_p everywhere. - Paolo]
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      667ad26f
    • Janosch Frank's avatar
      scripts/kvm/kvm_stat: Fix tracefs access checking · e3dd68df
      Janosch Frank authored
      
      On kernels build without CONFIG_TRACING kvm_stat will bail out even
      when traces are not used. This is not very helpful, especially if the
      user can't install a new kernel. Instead, we should warn the user and
      fall back to debugfs statistics.
      
      These changes check if trace statistics were selected without kernel
      support, warn with a small timeout, set the debugfs statistics option
      to True and the tracefs one to False.
      
      Fixes: 7aa4ee5a ('scripts/kvm/kvm_stat: Improve debugfs access checking')
      Signed-off-by: default avatarJanosch Frank <frankja@linux.vnet.ibm.com>
      Message-Id: <1454485291-43849-2-git-send-email-frankja@linux.vnet.ibm.com>
      [Exit if -t is passed explicitly. - Paolo]
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      e3dd68df
    • Sitsofe Wheeler's avatar
      qemu-nbd: Fix texi sentence capitalisation · 50901218
      Sitsofe Wheeler authored
      
      Capitalise the first letter of sentences (and reword for grammar) the
      options section of qemu-nbd.texi.
      
      Signed-off-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Message-Id: <1451979212-25479-4-git-send-email-sitsofe@yahoo.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      50901218
    • Sitsofe Wheeler's avatar
      qemu-nbd: Minor texi updates · 7e8911bb
      Sitsofe Wheeler authored
      
      - Change some spacing.
      - Add disconnect usage to synopsis.
      - Highlight the command and its options in the synopsis.
      - Fix up the grammar in the description.
      - Move filename variable description out of the option table.
      - Add a description of the dev variable.
      - Remove duplicate entry for --format.
      - Reword --discard documentation.
      - Add --detect-zeroes documentation.
      - Add reference to qemu man page to see also section.
      
      Signed-off-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Message-Id: <1451979212-25479-3-git-send-email-sitsofe@yahoo.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      7e8911bb
    • Sitsofe Wheeler's avatar
      qemu-nbd: Fix unintended texi verbatim formatting · b9dbb617
      Sitsofe Wheeler authored
      
      Indented lines in the texi meant the perlpod produced interpreted the
      paragraph as being verbatim (thus formatting codes were not
      interpreted). Fix this by un-indenting problem lines.
      
      Signed-off-by: default avatarSitsofe Wheeler <sitsofe@yahoo.com>
      Message-Id: <1451979212-25479-2-git-send-email-sitsofe@yahoo.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b9dbb617
    • Paolo Bonzini's avatar
      hw: Add support for LSI SAS1068 (mptsas) device · e351b826
      Paolo Bonzini authored
      
      This adds the SAS1068 device, a SAS disk controller used in VMware that
      is oldish but widely supported and has decent performance.  Unlike
      megasas, it presents itself as a SAS controller and not as a RAID
      controller.  The device corresponds to the mptsas kernel driver in
      Linux.
      
      A few small things in the device setup are based on Don Slutz's old
      patch, but the device emulation was written from scratch based on Don's
      SeaBIOS patch and on the FreeBSD and Linux drivers.  It is 2400 lines
      shorter than Don's patch (and roughly the same size as MegaSAS---also
      because it doesn't support the similar SPI controller), implements SCSI
      task management functions (with asynchronous cancellation), supports
      big-endian hosts, has complete support for migration and follows the
      QEMU coding standards much more closely.
      
      To write the driver, I first split Don's patch in two parts, with
      the configuration bits in one file and the rest in a separate file.
      I first left mptconfig.c in place and rewrote the rest, then deleted
      mptconfig.c as well.  The configuration pages are still based mostly on
      VirtualBox's, though not exactly the same.  However, the implementation
      is completely different.  The contents of the pages themselves should
      not be copyrightable.
      
      Signed-off-by: default avatarDon Slutz <Don@CloudSwitch.com>
      Message-Id: <1347382813-5662-1-git-send-email-Don@CloudSwitch.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      e351b826
    • Paolo Bonzini's avatar
      scsi-generic: grab device and port SAS addresses from backend · 9fd7e859
      Paolo Bonzini authored
      
      This lets a SAS adapter expose them through its own configuration
      mechanism.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      9fd7e859
    • Paolo Bonzini's avatar
      scsi: push WWN fields up to SCSIDevice · 2ecab408
      Paolo Bonzini authored
      
      SAS adapters need to access them in order to publish the SAS addresses
      of the end devices connected to them.
      
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      2ecab408
    • Alex Bennée's avatar
      include/qemu/atomic.h: default to __atomic functions · a0aa44b4
      Alex Bennée authored
      
      The __atomic primitives have been available since GCC 4.7 and provide
      a richer interface for describing memory ordering requirements. As a
      bonus by using the primitives instead of hand-rolled functions we can
      use tools such as the ThreadSanitizer which need the use of well
      defined APIs for its analysis.
      
      If we have __ATOMIC defines we exclusively use the __atomic primitives
      for all our atomic access. Otherwise we fall back to the mixture of
      __sync and hand-rolled barrier cases.
      
      Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Message-Id: <1453976119-24372-4-git-send-email-alex.bennee@linaro.org>
      [Use __ATOMIC_SEQ_CST for atomic_mb_read/atomic_mb_set on !POWER. - Paolo]
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      a0aa44b4
    • Daniel P. Berrangé's avatar
      configure: sanity check the glib library that pkg-config finds · 977a82ab
      Daniel P. Berrangé authored
      
      Developers on 64-bit machines will often try to perform a
      32-bit build of QEMU by running
      
        ./configure --extra-cflags="-m32"
      
      Unfortunately if PKG_CONFIG_LIBDIR is not set to point to
      the location of the 32-bit pkg-config files, then configure
      will silently pick up the 64-bit pkg-config files and still
      succeed.
      
      This causes a problem for glib because it means QEMU will
      be pulling in /usr/lib64/glib-2.0/include/glibconfig.h
      instead of /usr/lib/glib-2.0/include/glibconfig.h
      
      This causes problems because the 'gsize' type (defined as
      'unsigned long') will no longer be fully compatible with
      the 'size_t' type (defined as 'unsigned int'). Although
      both are the same size, the compiler refuses to allow
      casts from 'unsigned long *' to 'unsigned int *' as they
      are different pointer types. This results in non-obvious
      compiler errors when building QEMU eg
      
      qga/commands-posix.c: In function ‘qmp_guest_set_user_password’:
      qga/commands-posix.c:1912:55: error: passing argument 2 of ‘g_base64_decode’ from incompatible pointer type [-Werror=incompatible-pointer-types]
           rawpasswddata = (char *)g_base64_decode(password, &rawpasswdlen);
                                                                  ^
      In file included from /usr/include/glib-2.0/glib.h:35:0,
                       from qga/commands-posix.c:14:
      /usr/include/glib-2.0/glib/gbase64.h:52:9: note: expected ‘gsize * {aka long unsigned int *}’ but argument is of type ‘size_t * {aka unsigned int *}’
       guchar *g_base64_decode         (const gchar  *text,
               ^
      cc1: all warnings being treated as errors
      
      To detect this problem, add a check to configure that
      verifies that GLIB_SIZEOF_SIZE_T matches sizeof(size_t).
      If this fails print a warning suggesting that the dev
      probably needs to set PKG_CONFIG_LIBDIR.
      
      On Fedora x86_64 it passes with any of:
      
       # ./configure
       # PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig ./configure --extra-cflags="-m32"
       # PKG_CONFIG_LIBDIR=/usr/lib64/pkgconfig ./configure --extra-cflags="-m64"
      
      And fails with a mis-match
      
       # PKG_CONFIG_LIBDIR=/usr/lib64/pkgconfig ./configure --extra-cflags="-m32"
       # PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig ./configure --extra-cflags="-m64"
      
      ERROR: sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T.
             You probably need to set PKG_CONFIG_LIBDIR
             to point to the right pkg-config files for your
             build target
      
      Signed-off-by: default avatarDaniel P. Berrange <berrange@redhat.com>
      Message-Id: <1453885245-15562-1-git-send-email-berrange@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      977a82ab
    • Paolo Bonzini's avatar
      qemu-char: Keep pty slave file descriptor open until the master is closed · 34689e20
      Paolo Bonzini authored
      
      If a process opens the slave pts device, writes data to it, then
      immediately closes it, the data doesn't reliably get delivered to the
      emulated serial port. This seems to be because a read of the master
      pty device returns EIO on Linux if no process has the pts device open,
      even when data is waiting "in the pipe".
      
      A fix seems to be for QEMU to keep the pts file descriptor open until
      the pty is closed, as per the below patch.
      
      Signed-off-by: default avatarAshley Jonathan <jonathan.ashley@altran.com>
      Message-Id: <AC19797808C8D548ABDE0CA4A97AA30A30DEB409@XMB-DCFR-37.europe.corp.altran.com>
      Reviewed-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      34689e20
    • Stefan Hajnoczi's avatar
      memory: RCU ram_list.dirty_memory[] for safe RAM hotplug · 5b82b703
      Stefan Hajnoczi authored
      
      Although accesses to ram_list.dirty_memory[] use atomics so multiple
      threads can safely dirty the bitmap, the data structure is not fully
      thread-safe yet.
      
      This patch handles the RAM hotplug case where ram_list.dirty_memory[] is
      grown.  ram_list.dirty_memory[] is change from a regular bitmap to an
      RCU array of pointers to fixed-size bitmap blocks.  Threads can continue
      accessing bitmap blocks while the array is being extended.  See the
      comments in the code for an in-depth explanation of struct
      DirtyMemoryBlocks.
      
      I have tested that live migration with virtio-blk dataplane works.
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Message-Id: <1453728801-5398-2-git-send-email-stefanha@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      5b82b703
    • Paolo Bonzini's avatar
      memory: add early bail out from cpu_physical_memory_set_dirty_range · 8bafcb21
      Paolo Bonzini authored
      
      This condition is true in the common case, so we can cut out the body of
      the function.  In addition, this makes it easier for the compiler to do
      at least partial inlining, even if it decides that fully inlining the
      function is unreasonable.
      
      Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      8bafcb21
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2016-02-09' into staging · ac1be2ae
      Peter Maydell authored
      
      QAPI patches for 2016-02-09
      
      # gpg: Signature made Tue 09 Feb 2016 10:55:51 GMT using RSA key ID EB918653
      # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
      # gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>"
      
      * remotes/armbru/tags/pull-qapi-2016-02-09: (31 commits)
        qapi: Add missing JSON files in build dependencies
        qapi: Fix compilation failure on MIPS and SPARC
        qmp: Don't abuse stack to track qmp-output root
        qmp: Fix reference-counting of qnull on empty output visit
        qapi: Drop unused error argument for list and implicit struct
        qapi: Tighten qmp_input_end_list()
        qapi: Drop unused 'kind' for struct/enum visit
        qapi: Swap 'name' in visit_* callbacks to match public API
        qom: Swap 'name' next to visitor in ObjectPropertyAccessor
        qapi: Swap visit_* arguments for consistent 'name' placement
        qom: Use typedef for Visitor
        qapi: Don't cast Enum* to int*
        qapi: Consolidate visitor small integer callbacks
        qapi: Make all visitors supply uint64 callbacks
        qapi: Prefer type_int64 over type_int in visitors
        qapi-visit: Kill unused visit_end_union()
        qapi: Track all failures between visit_start/stop
        qapi: Improve generated event use of qapi visitor
        balloon: Improve use of qapi visitor
        vl: Ensure qapi visitor properly ends struct visit
        ...
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      ac1be2ae
    • Peter Maydell's avatar
      Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20160209' into staging · 74f30f15
      Peter Maydell authored
      
      Queued TCG patches
      
      # gpg: Signature made Mon 08 Feb 2016 23:57:30 GMT using RSA key ID 4DD0279B
      # gpg: Good signature from "Richard Henderson <rth7680@gmail.com>"
      # gpg:                 aka "Richard Henderson <rth@redhat.com>"
      # gpg:                 aka "Richard Henderson <rth@twiddle.net>"
      
      * remotes/rth/tags/pull-tcg-20160209:
        tcg: Introduce temp_load
        tcg: Change temp_save argument to TCGTemp
        tcg: Change temp_sync argument to TCGTemp
        tcg: Change temp_dead argument to TCGTemp
        tcg: Change reg_to_temp to TCGTemp pointer
        tcg: Remove tcg_get_arg_str_i32/64
        tcg: More use of TCGReg where appropriate
        tcg: Work around clang bug wrt enum ranges
        tcg: Tidy temporary allocation
        tcg: Change ts->mem_reg to ts->mem_base
        tcg: Change tcg_global_mem_new_* to take a TCGv_ptr
        tcg: Remove lingering references to gen_opc_buf
        tcg: Respect highwater in tcg_out_tb_finalize
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      74f30f15
  2. Feb 08, 2016
Loading