1. 10 11月, 2015 16 次提交
    • D
      Add qemu_get_buffer_in_place to avoid copies some of the time · 9504fb51
      Dr. David Alan Gilbert 提交于
      qemu_get_buffer always copies the data it reads to a users buffer,
      however in many cases the file buffer inside qemu_file could be given
      back to the caller, avoiding the copy.  This isn't always possible
      depending on the size and alignment of the data.
      
      Thus 'qemu_get_buffer_in_place' either copies the data to a supplied
      buffer or updates a pointer to the internal buffer if convenient.
      Signed-off-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      9504fb51
    • D
      Rename mis->file to from_src_file · 42e2aa56
      Dr. David Alan Gilbert 提交于
      'file' becomes confusing when you have flows in each direction;
      rename to make it clear.
      This leaves just the main forward direction ms->file, which is used
      in a lot of places and is probably not worth renaming given the churn.
      Signed-off-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      42e2aa56
    • D
      qemu_ram_block_by_name · e3dd7493
      Dr. David Alan Gilbert 提交于
      Add a function to find a RAMBlock by name; use it in two
      of the places that already open code that loop; we've
      got another use later in postcopy.
      Signed-off-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      e3dd7493
    • D
      qemu_ram_block_from_host · 422148d3
      Dr. David Alan Gilbert 提交于
      Postcopy sends RAMBlock names and offsets over the wire (since it can't
      rely on the order of ramaddr being the same), and it starts out with
      HVA fault addresses from the kernel.
      
      qemu_ram_block_from_host translates a HVA into a RAMBlock, an offset
      in the RAMBlock and the global ram_addr_t value.
      
      Rewrite qemu_ram_addr_from_host to use qemu_ram_block_from_host.
      
      Provide qemu_ram_get_idstr since its the actual name text sent on the
      wire.
      Signed-off-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Reviewed-by: NAmit Shah <amit.shah@redhat.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      422148d3
    • D
      Move page_size_init earlier · 87f50caa
      Dr. David Alan Gilbert 提交于
      The HOST_PAGE_ALIGN macros don't work until the page size variables
      have been set up; later in postcopy I use those macros in the RAM
      code, and it can be triggered using -object.
      
      Fix this by initialising page_size_init() earlier - it's currently
      initialised inside the accelerators, move it up into vl.c.
      Signed-off-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      87f50caa
    • D
      Move configuration section writing · 172dfd4f
      Dr. David Alan Gilbert 提交于
      The vmstate_configuration is currently written
      in 'qemu_savevm_state_begin', move it to
      'qemu_savevm_state_header' since it's got a hard
      requirement that it must be the 1st thing after
      the header.
      (In postcopy some 'command' sections get sent
      early before the saving of the main sections
      and hence before qemu_savevm_state_begin).
      Signed-off-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NAmit Shah <amit.shah@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      172dfd4f
    • D
      Provide runtime Target page information · 038629a6
      Dr. David Alan Gilbert 提交于
      The migration code generally is built target-independent, however
      there are a few places where knowing the target page size would
      avoid artificially moving stuff into migration/ram.c.
      
      Provide 'qemu_target_page_bits()' that returns TARGET_PAGE_BITS
      to other bits of code so that they can stay target-independent.
      Signed-off-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
      Reviewed-by: NAmit Shah <amit.shah@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NJuan Quintela <quintela@redhat.com>
      038629a6
    • D
      2bfdd1c8
    • P
      Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2015-11-10' into staging · a8b4f958
      Peter Maydell 提交于
      QAPI patches
      
      # gpg: Signature made Tue 10 Nov 2015 07:12:25 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-2015-11-10:
        qapi-introspect: Document lack of sorting
        qapi: Provide nicer array names in introspection
        qapi: More tests of input arrays
        qapi: Test failure in middle of array parse
        qapi: More tests of alternate output
        qapi: Simplify error cleanup in test-qmp-*
        qapi: Simplify non-error testing in test-qmp-*
        qapi: Plug leaks in test-qmp-*
        qapi: Share test_init code in test-qmp-input*
        qobject: Protect against use-after-free in qobject_decref()
        qapi: Strengthen test of TestStructList
        qapi: Use generated TestStruct machinery in tests
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      a8b4f958
    • E
      qapi-introspect: Document lack of sorting · f5455044
      Eric Blake 提交于
      qapi-code-gen.txt already claims that types, commands, and
      events share a common namespace; set this in stone by further
      documenting that our introspection output will never have
      collisions with the same name tied to more than one meta-type.
      
      Our largest QMP enum currently has 125 values, our largest
      object type has 27 members, and the mean for each is less than
      10.  These sizes are small enough that the per-element overhead
      of O(log n) binary searching probably outweighs the speed
      possible with direct O(n) linear searching (a better algorithm
      with more overhead will only beat a leaner naive algorithm only
      as you scale to larger input sizes).
      
      Arguably, the overall SchemaInfo array could be sorted by name;
      there, we currently have 531 entities, large enough for a binary
      search to be faster than linear.  However, remember that we have
      mutually-recursive types, which means there is no topological
      ordering that will allow clients to learn all information about
      that type in a single linear pass; thus clients will want to do
      random access over the data, and they will probably read the
      introspection output into a hashtable for O(1) lookup rather
      than O(log n) binary searching, at which point, pre-sorting our
      introspection output doesn't help the client.
      
      It doesn't help that sorting can be subjective if you introduce
      locales into the mix (I'm not experienced enough with Python
      to know for sure, but at least it looks like it defaults to
      sorting in the C locale even when run under a different locale).
      And while our current introspection output is deterministic
      (because we visit entities in a sorted order), we may want
      to change that order in the future (such as using OrderedDict
      to stick to .json declaration order).
      
      For these reasons, we simply document that clients should not
      rely on any particular order of items in introspection output.
      And since it is now a documented part of the contract, we have
      the freedom to later rearrange output if needed, without
      worrying about breaking well-written clients.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-13-git-send-email-eblake@redhat.com>
      [Commit message tweaked]
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      f5455044
    • E
      qapi: Provide nicer array names in introspection · ce5fcb47
      Eric Blake 提交于
      For the sake of humans reading introspection output, it is nice
      to have the name of implicit array types be recognizable as
      arrays of the underlying type.  However, while this patch allows
      humans to skip from a command with return type "[123]" straight
      to the definition of type "123" without having to first inspect
      type "[123]", document that this shortcut should not be taken by
      client apps.
      
      This makes the resulting introspection string slightly larger by
      default (just over 200 bytes), but it's in the noise (less than
      0.3% of the overall 70k size of 'query-qmp-capabilities').
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-12-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      ce5fcb47
    • E
      qapi: More tests of input arrays · 2533377c
      Eric Blake 提交于
      Our testsuite had no coverage of empty arrays, nor of what
      happens when the input does not match the expected type.
      Useful to have, especially if we start changing the visitor
      contracts.
      
      I did not think it worth duplicating these additions to
      test-qmp-input-strict; since all strict mode does is add
      the ability to reject JSON input that has more keys than
      what the visitor expects, yet the additions in this patch
      error out earlier than that point regardless of whether
      strict mode was requested.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-11-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      2533377c
    • E
      qapi: Test failure in middle of array parse · dd5ee2c2
      Eric Blake 提交于
      Our generated list visitors have the same problem as has been
      mentioned elsewhere (see commit 2f52e205): they allocate data
      even on failure. An upcoming patch will correct things to
      provide saner guarantees, but first we need to expose the
      behavior in the testsuite to ensure we aren't introducing any
      memory usage bugs.
      
      There are more test cases throughout the test-qmp-input-* tests
      that already deal with partial allocation; a later commit will
      clean up all visit_type_FOO(), without marking all of the tests
      with FIXME at this time.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-10-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      dd5ee2c2
    • E
      qapi: More tests of alternate output · 12fafd7c
      Eric Blake 提交于
      The testsuite was only covering that we could output the 'int'
      branch of an alternate (no additional allocation/cleanup required).
      Add a test of the 'str' branch, to make sure that things still
      work even when a branch involves allocation.
      
      Update to modern style of g_new0() over g_malloc0() while
      touching it.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-9-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      12fafd7c
    • E
      qapi: Simplify error cleanup in test-qmp-* · a12a5a1a
      Eric Blake 提交于
      We have several tests that perform multiple sub-actions that are
      expected to fail.  Asserting that an error occurred, then clearing
      it up to prepare for the next action, turned into enough
      boilerplate that it was sometimes forgotten (for example, a number
      of tests added to test-qmp-input-visitor.c in d88f5fd1 leaked err).
      Worse, if an error is not reset to NULL, we risk invalidating
      later use of that error (passing a non-NULL err into a function
      is generally a bad idea).  Encapsulate the boilerplate into a
      single helper function error_free_or_abort(), and consistently
      use it.
      
      The new function is added into error.c for use everywhere,
      although it is anticipated that testsuites will be the main
      client.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      a12a5a1a
    • P
      configure: Don't disable optimization for non-fortify builds · ce278618
      Peter Maydell 提交于
      Commit b553a042 inadvertently disabled optimization
      for all non-fortify builds. Fix this bug so we only do an
      unoptimized build if we want debug.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1447082049-25099-1-git-send-email-peter.maydell@linaro.org
      ce278618
  2. 09 11月, 2015 15 次提交
    • P
      hw/timer/hpet.c: Avoid signed integer overflow which results in bugs on OSX · d17008bc
      Peter Maydell 提交于
      Signed integer overflow in C is undefined behaviour, and the compiler
      is at liberty to assume it can never happen and optimize accordingly.
      In particular, the subtractions in hpet_time_after() and hpet_time_after64()
      were causing OSX clang to optimize the code such that it was prone to
      hangs and complaints about the main loop stalling (presumably because
      we were spending all our time trying to service very high frequency
      HPET timer callbacks). The clang sanitizer confirms the UB:
      
      hw/timer/hpet.c:119:26: runtime error: signed integer overflow: -2146967296 - 2147003978 cannot be represented in type 'int'
      
      Fix this by doing the subtraction as an unsigned operation and then
      converting to signed for the comparison.
      Reported-by: NAaron Elkins <threcius@yahoo.com>
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1447080991-24995-1-git-send-email-peter.maydell@linaro.org
      d17008bc
    • E
      qapi: Simplify non-error testing in test-qmp-* · 3f66f764
      Eric Blake 提交于
      By using &error_abort, we can avoid a local err variable in
      situations where we expect success.  It also has the nice
      effect that if the test breaks, the error message from
      error_abort tends to be nicer than that of g_assert().
      
      This patch has an additional bonus of fixing several call sites that
      were passing &err to two different functions without checking it in
      between.  In general that is unsafe practice; because if the first
      function sets an error, the second function could abort() if it tries to
      set a different error. We got away with it because we were asserting
      that err was NULL through the entire chain, but switching to
      &error_abort avoids the questionable practice up front.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-7-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      3f66f764
    • E
      qapi: Plug leaks in test-qmp-* · b18f1141
      Eric Blake 提交于
      Make valgrind happy with the current state of the tests, so that
      it is easier to see if future patches introduce new memory problems
      without being drowned in noise.  Many of the leaks were due to
      calling a second init without tearing down the data from an earlier
      visit.  But since teardown is already idempotent, and we already
      register teardown as part of input_visitor_test_add(), it is nicer
      to just make init() safe to call multiple times than it is to have
      to make all tests call teardown.
      
      Another common leak was forgetting to clean up an error object,
      after testing that an error was raised.
      
      Another leak was in test_visitor_in_struct_nested(), failing to
      clean the base member of UserDefTwo.  Cleaning that up left
      check_and_free_str() as dead code (since using the qapi_free_*
      takes care of recursion, and we don't want double frees).
      
      A final leak was in test_visitor_out_any(), which was reassigning
      the qobj local variable to a subset of the overall structure
      needing freeing; it did not result in a use-after-free, but
      was not cleaning up all the qdict.
      
      test-qmp-event and test-qmp-commands were already clean.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-6-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      b18f1141
    • E
      qapi: Share test_init code in test-qmp-input* · 0920a171
      Eric Blake 提交于
      Rather than duplicate the body of two functions just to
      decide between qobject_from_jsonv() and qobject_from_json(),
      exploit the fact that qobject_from_jsonv() intentionally
      takes 'va_list *' instead of the more common 'va_list', and
      that qobject_from_json() just calls qobject_from_jsonv(,NULL).
      For each file, our two existing init functions then become
      thin wrappers around a new internal function, and future
      updates to initialization don't have to be duplicated.
      Suggested-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-5-git-send-email-eblake@redhat.com>
      [Two old comment typos fixed]
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      0920a171
    • E
      qobject: Protect against use-after-free in qobject_decref() · cc9f60d4
      Eric Blake 提交于
      Adding an assertion to qobject_decref() will ensure that a
      programming error causing use-after-free will result in
      immediate failure (provided no other thread has started
      using the memory) instead of silently attempting to wrap
      refcnt around and leaving the problem to potentially bite
      later at a harder point to diagnose.
      Suggested-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-4-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      cc9f60d4
    • E
      qapi: Strengthen test of TestStructList · bd20588d
      Eric Blake 提交于
      Make each list element different, to ensure that order is
      preserved, and use the generated free function instead of
      hand-rolling our own to ensure (under valgrind) that the
      list is properly cleaned.
      Suggested-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-3-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      bd20588d
    • E
      qapi: Use generated TestStruct machinery in tests · 748053c9
      Eric Blake 提交于
      Commit d88f5fd1 and friends first introduced the various test-qmp-*
      tests in 2011, with duplicated hand-rolled TestStruct machinery,
      to make sure the qapi visitor interface was tested.  Later, commit
      4f193e34 in 2013 added a .json file for further testing use by the
      files, but without consolidating any of the existing hand-rolled
      visitors.  And with four copies, subtle differences have crept in,
      between the tests themselves (mainly whitespace differences, but
      also a question of whether to use NULL or "TestStruct" when
      calling visit_start_struct()) and from what the generator produces
      (the hand-rolled versions did not cater to partially-allocated
      objects, because they did not have a deallocation usage).
      
      Of course, just because the visitor interface is tested does not
      mean it is a sane interface; and future patches will be changing
      some of the visitor contracts.  Rather than having to duplicate
      the cleanup work in each copy of the TestStruct visitor, and keep
      each hand-rolled copy in sync with what the generator supplies, we
      might as well just test what the generator should give us in the
      first place.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1446791754-23823-2-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      748053c9
    • P
      Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging · 9d5c1dc1
      Peter Maydell 提交于
      # gpg: Signature made Mon 09 Nov 2015 10:08:17 GMT using RSA key ID 81AB73C8
      # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>"
      # gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>"
      
      * remotes/stefanha/tags/block-pull-request:
        blockdev: acquire AioContext in hmp_commit()
        monitor: add missed aio_context_acquire into vm_completion call
        aio: Introduce aio-epoll.c
        aio: Introduce aio_context_setup
        aio: Introduce aio_external_disabled
        dataplane: support non-contigious s/g
        dataplane: simplify indirect descriptor read
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      9d5c1dc1
    • S
      blockdev: acquire AioContext in hmp_commit() · 84aa0140
      Stefan Hajnoczi 提交于
      This one slipped through.  Although we acquire AioContext when
      committing all devices we don't for just a single device.
      
      AioContext must be acquired before calling bdrv_*() functions to
      synchronize access with other threads that may be using the AioContext.
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NDenis V. Lunev <den@openvz.org>
      Reviewed-by: NJeff Cody <jcody@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      84aa0140
    • D
      monitor: add missed aio_context_acquire into vm_completion call · 6bf1faa8
      Denis V. Lunev 提交于
      Signed-off-by: NDenis V. Lunev <den@openvz.org>
      CC: Stefan Hajnoczi <stefanha@redhat.com>
      CC: Kevin Wolf <kwolf@redhat.com>
      CC: Luiz Capitulino <lcapitulino@redhat.com>
      CC: Markus Armbruster <armbru@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      6bf1faa8
    • F
      aio: Introduce aio-epoll.c · fbe3fc5c
      Fam Zheng 提交于
      To minimize code duplication, epoll is hooked into aio-posix's
      aio_poll() instead of rolling its own. This approach also has both
      compile-time and run-time switchability.
      
      1) When QEMU starts with a small number of fds in the event loop, ppoll
      is used.
      
      2) When QEMU starts with a big number of fds, or when more devices are
      hot plugged, epoll kicks in when the number of fds hits the threshold.
      
      3) Some fds may not support epoll, such as tty based stdio. In this
      case, it falls back to ppoll.
      
      A rough benchmark with scsi-disk on virtio-scsi dataplane (epoll gets
      enabled from 64 onward). Numbers are in MB/s.
      
      ===============================================
                   |     master     |     epoll
                   |                |
      scsi disks # | read    randrw | read    randrw
      -------------|----------------|----------------
      1            | 86      36     | 92      45
      8            | 87      43     | 86      41
      64           | 71      32     | 70      38
      128          | 48      24     | 58      31
      256          | 37      19     | 57      28
      ===============================================
      
      To comply with aio_{disable,enable}_external, we always use ppoll when
      aio_external_disabled() is true.
      
      [Removed #ifdef CONFIG_EPOLL around AioContext epollfd field declaration
      since the field is also referenced outside CONFIG_EPOLL code.
      --Stefan]
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Message-id: 1446177989-6702-4-git-send-email-famz@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      fbe3fc5c
    • F
      aio: Introduce aio_context_setup · 37fcee5d
      Fam Zheng 提交于
      This is the place to initialize platform specific bits of AioContext.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Message-id: 1446177989-6702-3-git-send-email-famz@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      37fcee5d
    • F
      aio: Introduce aio_external_disabled · 5ceb9e39
      Fam Zheng 提交于
      This allows AioContext users to check the enable/disable state of
      external clients.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Message-id: 1446177989-6702-2-git-send-email-famz@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      5ceb9e39
    • M
      dataplane: support non-contigious s/g · 8347c532
      Michael S. Tsirkin 提交于
      bring_map currently fails if one of the entries it's mapping is
      contigious in GPA but not HVA address space.  Introduce a mapped_len
      parameter so it can handle this, returning the actual mapped length.
      
      This will still fail if there's no space left in the sg, but luckily max
      queue size in use is currently 256, while max sg size is 1024, so we
      should be OK even is all entries happen to cross a single DIMM boundary.
      
      Won't work well with very small DIMM sizes, unfortunately:
      e.g. this will fail with 4K DIMMs where a single
      request might span a large number of DIMMs.
      
      Let's hope these are uncommon - at least we are not breaking things.
      Reported-by: NStefan Hajnoczi <stefanha@redhat.com>
      Reported-by: NIgor Mammedov <imammedo@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Tested-by: NIgor Mammedov <imammedo@redhat.com>
      Message-id: 1446047243-3221-2-git-send-email-mst@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      8347c532
    • M
      dataplane: simplify indirect descriptor read · 572ec519
      Michael S. Tsirkin 提交于
      Use address_space_read to make sure we handle the case of an indirect
      descriptor crossing DIMM boundary correctly.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Tested-by: NIgor Mammedov <imammedo@redhat.com>
      Message-id: 1446047243-3221-1-git-send-email-mst@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      572ec519
  3. 08 11月, 2015 2 次提交
  4. 07 11月, 2015 5 次提交
  5. 06 11月, 2015 2 次提交