qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 2bfdd1: Add postcopy documentation


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 2bfdd1: Add postcopy documentation
Date: Tue, 10 Nov 2015 14:30:07 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 2bfdd1c8a6ac22ee1f9209c247509ff0cadd2a52
      
https://github.com/qemu/qemu/commit/2bfdd1c8a6ac22ee1f9209c247509ff0cadd2a52
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M docs/migration.txt

  Log Message:
  -----------
  Add postcopy documentation

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 038629a699240326928665ea97e6e11059bbc007
      
https://github.com/qemu/qemu/commit/038629a699240326928665ea97e6e11059bbc007
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M exec.c
    M include/sysemu/sysemu.h

  Log Message:
  -----------
  Provide runtime Target page information

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: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 172dfd4faf2b64720db8a2dad7048056f2b81d75
      
https://github.com/qemu/qemu/commit/172dfd4faf2b64720db8a2dad7048056f2b81d75
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/savevm.c

  Log Message:
  -----------
  Move configuration section writing

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: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 87f50caa30ae7449c5875ff3171cff4d8648569a
      
https://github.com/qemu/qemu/commit/87f50caa30ae7449c5875ff3171cff4d8648569a
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/exec/exec-all.h
    M include/qemu-common.h
    M kvm-all.c
    M qtest.c
    M vl.c

  Log Message:
  -----------
  Move page_size_init earlier

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: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 422148d3e56c3c9a07c0cf36c1e0a0b76f09c357
      
https://github.com/qemu/qemu/commit/422148d3e56c3c9a07c0cf36c1e0a0b76f09c357
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M exec.c
    M include/exec/cpu-common.h
    M include/exec/ram_addr.h
    M include/qemu/typedefs.h

  Log Message:
  -----------
  qemu_ram_block_from_host

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: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: e3dd74934f2d2c8c67083995928ff68e8c1d0030
      
https://github.com/qemu/qemu/commit/e3dd74934f2d2c8c67083995928ff68e8c1d0030
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M exec.c
    M include/exec/cpu-common.h
    M migration/ram.c

  Log Message:
  -----------
  qemu_ram_block_by_name

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: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 42e2aa56372291d35345fcec85d5da2004c8b57c
      
https://github.com/qemu/qemu/commit/42e2aa56372291d35345fcec85d5da2004c8b57c
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c

  Log Message:
  -----------
  Rename mis->file to from_src_file

'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: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 9504fb510c87c3dd6fe2e9a25e84c1426672f226
      
https://github.com/qemu/qemu/commit/9504fb510c87c3dd6fe2e9a25e84c1426672f226
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/qemu-file.h
    M migration/qemu-file.c

  Log Message:
  -----------
  Add qemu_get_buffer_in_place to avoid copies some of the time

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: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: a800cd5c38ba4ac20fe9ca68a6dee408f2d5b11f
      
https://github.com/qemu/qemu/commit/a800cd5c38ba4ac20fe9ca68a6dee408f2d5b11f
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/qemu-file.h
    M migration/qemu-file.c

  Log Message:
  -----------
  Add wrapper for setting blocking status on a QEMUFile

Add a wrapper to change the blocking status on a QEMUFile
rather than having to use qemu_set_block(qemu_get_fd(f));
it seems best to avoid exposing the fd since not all QEMUFile's
really have one.  With this wrapper we could move the implementation
down to be different on different transports.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: ebf811500bc8dffa906ebd4c52b96f7620d7bf8e
      
https://github.com/qemu/qemu/commit/ebf811500bc8dffa906ebd4c52b96f7620d7bf8e
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/qemu/osdep.h

  Log Message:
  -----------
  Add QEMU_MADV_NOHUGEPAGE

Add QEMU_MADV_NOHUGEPAGE as an OS-independent version of
MADV_NOHUGEPAGE.

We include sys/mman.h before making the test to ensure
that we pick up the system defines.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 4f2e425267327719ee71ba6f191f7d66507a6c02
      
https://github.com/qemu/qemu/commit/4f2e425267327719ee71ba6f191f7d66507a6c02
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/ram.c

  Log Message:
  -----------
  ram_debug_dump_bitmap: Dump a migration bitmap as text

Useful for debugging the migration bitmap and other bitmaps
of the same format (including the sentmap in postcopy).

The bitmap is printed to stderr.
Lines that are all the expected value are excluded so the output
can be quite compact for many bitmaps.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: a776aa15a7e3e08964c6c537314b9590dde27b4d
      
https://github.com/qemu/qemu/commit/a776aa15a7e3e08964c6c537314b9590dde27b4d
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  ram_load: Factor out host_from_stream_offset call and check

The main RAM load loop has a call to host_from_stream_offset for
each page type that actually loads data with the same test;
factor it out before the switch.

The host = NULL is to silence a bogus gcc warning of
an unitialised in the RAM_SAVE_COMPRESS_PAGE case, it
doesn't seem to realise that host is always initialised by the if at
the top in the cases the switch takes.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: aefeb18bde45fa629e3055a7bb6637a7dcad8c36
      
https://github.com/qemu/qemu/commit/aefeb18bde45fa629e3055a7bb6637a7dcad8c36
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M include/qemu/typedefs.h
    M migration/migration.c
    M migration/savevm.c

  Log Message:
  -----------
  migrate_init: Call from savevm

Suspend to file is very much like a migrate, and it makes life
easier if we have the Migration state available, so initialise it
in the savevm.c code for suspending.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewd-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: a3e06c3d13b77a2534894dcebbc6ac08568dbe73
      
https://github.com/qemu/qemu/commit/a3e06c3d13b77a2534894dcebbc6ac08568dbe73
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M hw/ppc/spapr.c
    M include/migration/vmstate.h
    M include/sysemu/sysemu.h
    M migration/block.c
    M migration/migration.c
    M migration/ram.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Rename save_live_complete to save_live_complete_precopy

In postcopy we're going to need to perform the complete phase
for postcopiable devices at a different point, start out by
renaming all of the 'complete's to make the difference obvious.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: c1fcf220c95b17f1a05adb799824d2c352ff9281
      
https://github.com/qemu/qemu/commit/c1fcf220c95b17f1a05adb799824d2c352ff9281
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    A linux-headers/linux/userfaultfd.h

  Log Message:
  -----------
  Add Linux userfaultfd.h header

Postcopy uses the userfaultfd.h feature in the Linux kernel; include
the header.

(In early versions of the patch series we had this, and then we dropped
this by only including it if the kernel headers defined the syscall
number; however 1842bdfd added the syscall definition to our
headers, which means we can't tell if the kernel has it or not)

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: adc468e9b9ad866cd95b1e567291f9dcc1f49f1c
      
https://github.com/qemu/qemu/commit/adc468e9b9ad866cd95b1e567291f9dcc1f49f1c
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/qemu-file.h
    M migration/qemu-file-unix.c
    M migration/qemu-file.c

  Log Message:
  -----------
  Return path: Open a return path on QEMUFile for sockets

Postcopy needs a method to send messages from the destination back to
the source, this is the 'return path'.

Wire it up for 'socket' QEMUFile's.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 3e4097b564386b1fd1b62f2cd20e056d4b3403da
      
https://github.com/qemu/qemu/commit/3e4097b564386b1fd1b62f2cd20e056d4b3403da
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/qemu-file-unix.c

  Log Message:
  -----------
  Return path: socket_writev_buffer: Block even on non-blocking fd's

The destination sets the fd to non-blocking on incoming migrations;
this also affects the return path from the destination, and thus we
need to make sure we can safely write to the return path.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: c76ca1888f49b4155a9de5a915dc9f814800c817
      
https://github.com/qemu/qemu/commit/c76ca1888f49b4155a9de5a915dc9f814800c817
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M include/sysemu/sysemu.h
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Migration commands

Create QEMU_VM_COMMAND section type for sending commands from
source to destination.  These commands are not intended to convey
guest state but to control the migration process.

For use in postcopy.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 2e37701efdba7bb89f7159eff055bb71dbb9f02f
      
https://github.com/qemu/qemu/commit/2e37701efdba7bb89f7159eff055bb71dbb9f02f
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M include/sysemu/sysemu.h
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Return path: Control commands

Add two src->dest commands:
   * OPEN_RETURN_PATH - To request that the destination open the return path
   * PING - Request an acknowledge from the destination

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 6decec931149ae50d84e2b264bf93f3676d5b3f9
      
https://github.com/qemu/qemu/commit/6decec931149ae50d84e2b264bf93f3676d5b3f9
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Return path: Send responses from destination to source

Add migrate_send_rp_message to send a message from destination to source along 
the return path.
  (It uses a mutex to let it be called from multiple threads)
Add migrate_send_rp_shut to send a 'shut' message to indicate
  the destination is finished with the RP.
Add migrate_send_rp_ack to send a 'PONG' message in response to a PING
  Use it in the MSG_RP_PING handler

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: f6844b99ce08e836d509ec4be2fbfc5ab13ac18f
      
https://github.com/qemu/qemu/commit/f6844b99ce08e836d509ec4be2fbfc5ab13ac18f
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/migration.c

  Log Message:
  -----------
  migration_is_setup_or_active

Add 'migration_is_setup_or_active' utility function to check state.
(It gets postcopy added to it's list later on in the series)

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 70b2047774231ba2cb672eb936e12f603fa644aa
      
https://github.com/qemu/qemu/commit/70b2047774231ba2cb672eb936e12f603fa644aa
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M trace-events

  Log Message:
  -----------
  Return path: Source handling of return path

Open a return path, and handle messages that are received upon it.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 7b89bf279f16c093ed46845b8e6e0fb61b7ef639
      
https://github.com/qemu/qemu/commit/7b89bf279f16c093ed46845b8e6e0fb61b7ef639
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Rework loadvm path for subloops

Postcopy needs to have two migration streams loading concurrently;
one from memory (with the device state) and the other from the fd
with the memory transactions.

Split the core of qemu_loadvm_state out so we can use it for both.

Allow the inner loadvm loop to quit and cause the parent loops to
exit as well.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 53dd370ced9b61a8113fc1c19ac8d61ca572a29c
      
https://github.com/qemu/qemu/commit/53dd370ced9b61a8113fc1c19ac8d61ca572a29c
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M qapi-schema.json

  Log Message:
  -----------
  Add migration-capability boolean for postcopy-ram.

The 'postcopy ram' capability allows postcopy migration of RAM;
note that the migration starts off in precopy mode until
postcopy mode is triggered (see the migrate_start_postcopy
patch later in the series).

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 093e3c429693f87fb917424c637ad8f599bd9e67
      
https://github.com/qemu/qemu/commit/093e3c429693f87fb917424c637ad8f599bd9e67
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M include/sysemu/sysemu.h
    M migration/migration.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Add wrappers and handlers for sending/receiving the postcopy-ram migration 
messages.

The state of the postcopy process is managed via a series of messages;
   * Add wrappers and handlers for sending/receiving these messages
   * Add state variable that track the current state of postcopy

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 11cf1d984b86b294972cd25df6286e5b2e98735d
      
https://github.com/qemu/qemu/commit/11cf1d984b86b294972cd25df6286e5b2e98735d
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/sysemu/sysemu.h
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  MIG_CMD_PACKAGED: Send a packaged chunk of migration stream

MIG_CMD_PACKAGED is a migration command that wraps a chunk of migration
stream inside a package whose length can be determined purely by reading
its header.  The destination guarantees that the whole MIG_CMD_PACKAGED
is read off the stream prior to parsing the contents.

This is used by postcopy to load device state (from the package)
while leaving the main stream free to receive memory pages.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: c31b098f64c5bbbc26350b9b5cf98ae2d2888de7
      
https://github.com/qemu/qemu/commit/c31b098f64c5bbbc26350b9b5cf98ae2d2888de7
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/vmstate.h
    M include/sysemu/sysemu.h
    M migration/block.c
    M migration/migration.c
    M migration/ram.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Modify save_live_pending for postcopy

Modify save_live_pending to return separate postcopiable and
non-postcopiable counts.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: eb59db53a4f23420f127ec7aad2a672f787df697
      
https://github.com/qemu/qemu/commit/eb59db53a4f23420f127ec7aad2a672f787df697
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    A include/migration/postcopy-ram.h
    M migration/Makefile.objs
    A migration/postcopy-ram.c
    M migration/savevm.c

  Log Message:
  -----------
  postcopy: OS support test

Provide a check to see if the OS we're running on has all the bits
needed for postcopy.

Creates postcopy-ram.c which will get most of the other helpers we need.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 4886a1bcb7d7a88da02eefb0f33327c613ac52a3
      
https://github.com/qemu/qemu/commit/4886a1bcb7d7a88da02eefb0f33327c613ac52a3
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M hmp-commands.hx
    M hmp.c
    M hmp.h
    M include/migration/migration.h
    M migration/migration.c
    M qapi-schema.json
    M qmp-commands.hx

  Log Message:
  -----------
  migrate_start_postcopy: Command to trigger transition to postcopy

Once postcopy is enabled (with migrate_set_capability), the migration
will still start on precopy mode.  To cause a transition into postcopy
the:

  migrate_start_postcopy

command must be issued.  Postcopy will start sometime after this
(when it's next checked in the migration loop).

Issuing the command before migration has started will error,
and issuing after it has finished is ignored.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 36f48567b82e3160bc0df87b8b4f239d55ca73e9
      
https://github.com/qemu/qemu/commit/36f48567b82e3160bc0df87b8b4f239d55ca73e9
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/migration.c

  Log Message:
  -----------
  migration_completion: Take current state

Soon we'll be in either ACTIVE or POSTCOPY_ACTIVE when we
complete migration, and we need to know which we expect to be
in to change state safely.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 9ec055ae29df5132f61757519ab57b6b4209baa4
      
https://github.com/qemu/qemu/commit/9ec055ae29df5132f61757519ab57b6b4209baa4
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M qapi-schema.json
    M trace-events

  Log Message:
  -----------
  MIGRATION_STATUS_POSTCOPY_ACTIVE: Add new migration state

'MIGRATION_STATUS_POSTCOPY_ACTIVE' is entered after migrate_start_postcopy

'migration_in_postcopy' is provided for other sections to know if
they're in postcopy.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 8421b205ddb70314c0de2aa3222aed755f310f87
      
https://github.com/qemu/qemu/commit/8421b205ddb70314c0de2aa3222aed755f310f87
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/savevm.c

  Log Message:
  -----------
  Avoid sending vmdescription during postcopy

VMDescription is normally sent at the end, after all
of the devices; however that's not the end for postcopy,
so just don't send it when in postcopy.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 763c906b0ee964e4b5c529a4ee171723339644cc
      
https://github.com/qemu/qemu/commit/763c906b0ee964e4b5c529a4ee171723339644cc
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/vmstate.h
    M include/sysemu/sysemu.h
    M migration/ram.c
    M migration/savevm.c

  Log Message:
  -----------
  Add qemu_savevm_state_complete_postcopy

Add qemu_savevm_state_complete_postcopy to complement
qemu_savevm_state_complete_precopy together with a new
save_live_complete_postcopy method on devices.

The save_live_complete_precopy method is called on
all devices during a precopy migration, and all non-postcopy
devices during a postcopy migration at the transition.

The save_live_complete_postcopy method is called at
the end of postcopy for all postcopiable devices.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: f3f491fcd6dd594ba695b7da5ecbdacb4e84b364
      
https://github.com/qemu/qemu/commit/f3f491fcd6dd594ba695b7da5ecbdacb4e84b364
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  Postcopy: Maintain unsentmap

Maintain an 'unsentmap' of pages that have yet to be sent.
This is used in the following patches to discard some set of
the pages already sent as we enter postcopy mode.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: e0b266f01dd21748c12f35e18e6f300035f2f336
      
https://github.com/qemu/qemu/commit/e0b266f01dd21748c12f35e18e6f300035f2f336
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M include/migration/postcopy-ram.h
    M include/qemu/typedefs.h
    M migration/migration.c
    M migration/postcopy-ram.c
    M migration/ram.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  migration_completion: Take current state

Soon we'll be in either ACTIVE or POSTCOPY_ACTIVE when we
complete migration, and we need to know which we expect to be
in to change state safely.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 1caddf8a819d83027d897997c0af10c426f88633
      
https://github.com/qemu/qemu/commit/1caddf8a819d83027d897997c0af10c426f88633
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M include/migration/postcopy-ram.h
    M migration/postcopy-ram.c
    M migration/ram.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  postcopy: Incoming initialisation

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: f0a227ade4b0331c9e12fc01f8b74e2531fd496d
      
https://github.com/qemu/qemu/commit/f0a227ade4b0331c9e12fc01f8b74e2531fd496d
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M include/migration/postcopy-ram.h
    M migration/postcopy-ram.c
    M migration/savevm.c

  Log Message:
  -----------
  postcopy: ram_enable_notify to switch on userfault

Mark the area of RAM as 'userfault'
Start up a fault-thread to handle any userfaults we might receive
from it (to be filled in later)

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 1d34e4bf6a34f12b9ca387301b863b59f14d38ed
      
https://github.com/qemu/qemu/commit/1d34e4bf6a34f12b9ca387301b863b59f14d38ed
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M trace-events

  Log Message:
  -----------
  Postcopy: Postcopy startup in migration thread

Rework the migration thread to setup and start postcopy.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: b10ac0c42cef8829cd1461ce20f1869231b5f41f
      
https://github.com/qemu/qemu/commit/b10ac0c42cef8829cd1461ce20f1869231b5f41f
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/migration.c
    M trace-events

  Log Message:
  -----------
  Postcopy: End of iteration

The end of migration in postcopy is a bit different since some of
the things normally done at the end of migration have already been
done on the transition to postcopy.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 1e2d90ebc54531c416a6765849308c8476d98f2d
      
https://github.com/qemu/qemu/commit/1e2d90ebc54531c416a6765849308c8476d98f2d
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M trace-events

  Log Message:
  -----------
  Page request: Add MIG_RP_MSG_REQ_PAGES reverse command

Add MIG_RP_MSG_REQ_PAGES command on Return path for the postcopy
destination to request a page from the source.

Two versions exist:
   MIG_RP_MSG_REQ_PAGES_ID that includes a RAMBlock name and start/len
   MIG_RP_MSG_REQ_PAGES that just has start/len for use with the same
                  RAMBlock as a previous MIG_RP_MSG_REQ_PAGES_ID

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 6c595cdee116dc46b0d4d7d632a426681ae66ad9
      
https://github.com/qemu/qemu/commit/6c595cdee116dc46b0d4d7d632a426681ae66ad9
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M migration/ram.c
    M trace-events

  Log Message:
  -----------
  Page request: Process incoming page request

On receiving MIG_RPCOMM_REQ_PAGES look up the address and
queue the page.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: a82d593b61054b3dea431ef829977000d772a252
      
https://github.com/qemu/qemu/commit/a82d593b61054b3dea431ef829977000d772a252
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/ram.c
    M trace-events

  Log Message:
  -----------
  Page request: Consume pages off the post-copy queue

When transmitting RAM pages, consume pages that have been queued by
MIG_RPCOMM_REQPAGE commands and send them ahead of normal page scanning.

Note:
  a) After a queued page the linear walk carries on from after the
unqueued page; there is a reasonable chance that the destination
was about to ask for other closeby pages anyway.

  b) We have to be careful of any assumptions that the page walking
code makes, in particular it does some short cuts on its first linear
walk that break as soon as we do a queued page.

  c) We have to be careful to not break up host-page size chunks, since
this makes it harder to place the pages on the destination.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 696ed9a9b3fee2d033d7b049ba2e6568860a25d1
      
https://github.com/qemu/qemu/commit/696ed9a9b3fee2d033d7b049ba2e6568860a25d1
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M include/migration/postcopy-ram.h
    M migration/postcopy-ram.c
    M trace-events

  Log Message:
  -----------
  postcopy_ram.c: place_page and helpers

postcopy_place_page (etc) provide a way for postcopy to place a page
into guests memory atomically (using the copy ioctl on the ufd).

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: a71808772acbea54df8ebf3680f01884f7383198
      
https://github.com/qemu/qemu/commit/a71808772acbea54df8ebf3680f01884f7383198
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/ram.c
    M trace-events

  Log Message:
  -----------
  Postcopy: Use helpers to map pages during migration

In postcopy, the destination guest is running at the same time
as it's receiving pages; as we receive new pages we must put
them into the guests address space atomically to avoid a running
CPU accessing a partially written page.

Use the helpers in postcopy-ram.c to map these pages.

qemu_get_buffer_in_place is used to avoid a copy out of qemu_file
in the case that postcopy is going to do a copy anyway.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: c53b7ddc61198c4af8290d6310592e48e3507c47
      
https://github.com/qemu/qemu/commit/c53b7ddc61198c4af8290d6310592e48e3507c47
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  postcopy: Check order of received target pages

Ensure that target pages received within a host page are in order.
This shouldn't trigger, but in the cases where the sender goes
wrong and sends stuff out of order it produces a corruption that's
really nasty to debug.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 663e6c1df8721960c0a3bb6cd5dd047b610c3bad
      
https://github.com/qemu/qemu/commit/663e6c1df8721960c0a3bb6cd5dd047b610c3bad
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  Don't sync dirty bitmaps in postcopy

Once we're in postcopy the source processors are stopped and memory
shouldn't change any more, so there's no need to look at the dirty
map.

There are two notes to this:
  1) If we do resync and a page had changed then the page would get
     sent again, which the destination wouldn't allow (since it might
     have also modified the page)
  2) Before disabling this I'd seen very rare cases where a page had been
     marked dirtied although the memory contents are apparently identical

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 35ecd943e7ea8a29b6cc6872ad8ba620e91b4407
      
https://github.com/qemu/qemu/commit/35ecd943e7ea8a29b6cc6872ad8ba620e91b4407
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/sysemu/sysemu.h
    M migration/migration.c
    M migration/savevm.c

  Log Message:
  -----------
  Don't iterate on precopy-only devices during postcopy

During the postcopy phase we must not call the iterate method on
precopy-only devices, since they may have done some cleanup during
the _complete call at the end of the precopy phase.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 99e314ebca8c7b3450e4beaa95117c63d8f2f393
      
https://github.com/qemu/qemu/commit/99e314ebca8c7b3450e4beaa95117c63d8f2f393
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/ram.c

  Log Message:
  -----------
  Host page!=target page: Cleanup bitmaps

Prior to the start of postcopy, ensure that everything that will
be transferred later is a whole host-page in size.

This is accomplished by discarding partially transferred host pages
and marking any that are partially dirty as fully dirty.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 4ed023ce2a39ab5812d33cf4d819def168965a7f
      
https://github.com/qemu/qemu/commit/4ed023ce2a39ab5812d33cf4d819def168965a7f
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M exec.c

  Log Message:
  -----------
  Round up RAMBlock sizes to host page sizes

RAMBlocks that are not a multiple of host pages in length
cause problems for postcopy (I've seen an ACPI table on aarch64
be 5k in length - i.e. 5x target-page), so round RAMBlock sizes
up to a host-page.

This potentially breaks migration compatibility due to changes
in RAMBlock sizes; however:
   1) x86 and s390 I think always have host=target page size
   2) When I've tried on Power the block sizes already seem aligned.
   3) I don't think there's anything else that maintains per-version
      machine-types for compatibility.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: c4faeed2313e2bf9aa3694544bd211c15e28c164
      
https://github.com/qemu/qemu/commit/c4faeed2313e2bf9aa3694544bd211c15e28c164
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/postcopy-ram.c
    M trace-events

  Log Message:
  -----------
  Postcopy; Handle userfault requests

userfaultfd is a Linux syscall that gives an fd that receives a stream
of notifications of accesses to pages registered with it and allows
the program to acknowledge those stalls and tell the accessing
thread to carry on.

We convert the requests from the kernel into messages back to the
source asking for the pages.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: c76201ab52b1dd53823cd81449d17b72224f1623
      
https://github.com/qemu/qemu/commit/c76201ab52b1dd53823cd81449d17b72224f1623
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/migration.h
    M migration/migration.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Start up a postcopy/listener thread ready for incoming page data

The loading of a device state (during postcopy) may access guest
memory that's still on the source machine and thus might need
a page fill; split off a separate thread that handles the incoming
page data so that the original incoming migration code can finish
off the device data.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 27c6825bd3749758fb9fcad44f3759f593be8506
      
https://github.com/qemu/qemu/commit/27c6825bd3749758fb9fcad44f3759f593be8506
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  postcopy: Wire up loadvm_postcopy_handle_ commands

Wire up more of the handlers for the commands on the destination side,
in particular loadvm_postcopy_handle_run now has enough to start the
guest running.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: f9527107570853b6a4a0903e4b0733747d02e74a
      
https://github.com/qemu/qemu/commit/f9527107570853b6a4a0903e4b0733747d02e74a
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/migration/postcopy-ram.h
    M migration/postcopy-ram.c
    M migration/savevm.c
    M trace-events

  Log Message:
  -----------
  Postcopy: Mark nohugepage before discard

Prior to servicing userfault requests we must ensure we've not got
huge pages in the area that might include non-transferred memory,
since a hugepage could incorrectly mark the whole huge page as present.

We mark the area as non-huge page (nhp) just before we perform
discards; the discard code now tells us to discard any areas
that haven't been sent (as well as any that are redirtied);
any already formed transparent-huge-pages get fragmented
by this discard process if they cotnain any discards.

Transparent huge pages that have been entirely transferred
and don't contain any discards are not broken by this mechanism;
they stay as huge pages.

By starting postcopy after a full precopy pass, many of the pages
then stay as huge pages; this is important for maintaining performance
after the end of the migration.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: e9bef235d91bff87517770c93d74eb98e5a33278
      
https://github.com/qemu/qemu/commit/e9bef235d91bff87517770c93d74eb98e5a33278
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/migration.c
    M trace-events

  Log Message:
  -----------
  End of migration for postcopy

Tweak the end of migration cleanup; we don't want to close stuff down
at the end of the main stream, since the postcopy is still sending pages
on the other thread.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 58b7c17e226aa4d3b943ea22c1d1309126de146b
      
https://github.com/qemu/qemu/commit/58b7c17e226aa4d3b943ea22c1d1309126de146b
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M include/sysemu/sysemu.h
    M migration/postcopy-ram.c

  Log Message:
  -----------
  Disable mlock around incoming postcopy

Userfault doesn't work with mlock; mlock is designed to nail down pages
so they don't move, userfault is designed to tell you when they're not
there.

munlock the pages we userfault protect before postcopy.
mlock everything again at the end if mlock is enabled.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 371ff5a3f04cd7d05bab49ac6e80da319026d95b
      
https://github.com/qemu/qemu/commit/371ff5a3f04cd7d05bab49ac6e80da319026d95b
  Author: Dr. David Alan Gilbert <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M balloon.c
    M hw/virtio/virtio-balloon.c
    M include/sysemu/balloon.h
    M migration/postcopy-ram.c

  Log Message:
  -----------
  Inhibit ballooning during postcopy

Postcopy detects accesses to pages that haven't been transferred yet
using userfaultfd, and it causes exceptions on pages that are 'not
present'.
Ballooning also causes pages to be marked as 'not present' when the
guest inflates the balloon.
Potentially a balloon could be inflated to discard pages that are
currently inflight during postcopy and that may be arriving at about
the same time.

To avoid this confusion, disable ballooning during postcopy.

When disabled we drop balloon requests from the guest.  Since ballooning
is generally initiated by the host, the management system should avoid
initiating any balloon instructions to the guest during migration,
although it's not possible to know how long it would take a guest to
process a request made prior to the start of migration.
Guest initiated ballooning will not know if it's really freed a page
of host memory or not.

Queueing the requests until after migration would be nice, but is
non-trivial, since the set of inflate/deflate requests have to
be compared with the state of the page to know what the final
outcome is allowed to be.

Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Reviewed-by: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: 15b3b8eaae8dbcc903bb164311ea0066c77536a7
      
https://github.com/qemu/qemu/commit/15b3b8eaae8dbcc903bb164311ea0066c77536a7
  Author: Denis V. Lunev <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M migration/savevm.c

  Log Message:
  -----------
  migration: qemu_savevm_state_cleanup becomes mandatory operation

since commit
    commit 94f5a43704129ca4995aa3385303c5ae225bde42
    Author: Liang Li <address@hidden>
    Date:   Mon Nov 2 15:37:00 2015 +0800

    migration: defer migration_end & blk_mig_cleanup

when actual .cleanup callbacks calling was removed from complete operations.

The patch fixes regression introduced by the commit above results in
100% reliable assert for virtio-scsi VM with iothreads enabled during
'virsh create-snapshot' operation:
    assert(i != mr->ioeventfd_nb);
    memory_region_del_eventfd
    virtio_pci_set_host_notifier_internal
    virtio_pci_set_host_notifier
    virtio_scsi_dataplane_start
    virtio_scsi_handle_cmd
    virtio_queue_notify_vq
    virtio_queue_host_notifier_read
    aio_dispatch

Signed-off-by: Denis V. Lunev <address@hidden>
Reviewed-by: Liang Li <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
CC: Paolo Bonzini <address@hidden>
CC: Juan Quintela <address@hidden>
CC: Amit Shah <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>


  Commit: a77067f6ac9b17beefea506ce5f514072fe3fcf4
      
https://github.com/qemu/qemu/commit/a77067f6ac9b17beefea506ce5f514072fe3fcf4
  Author: Peter Maydell <address@hidden>
  Date:   2015-11-10 (Tue, 10 Nov 2015)

  Changed paths:
    M balloon.c
    M docs/migration.txt
    M exec.c
    M hmp-commands.hx
    M hmp.c
    M hmp.h
    M hw/ppc/spapr.c
    M hw/virtio/virtio-balloon.c
    M include/exec/cpu-common.h
    M include/exec/exec-all.h
    M include/exec/ram_addr.h
    M include/migration/migration.h
    A include/migration/postcopy-ram.h
    M include/migration/qemu-file.h
    M include/migration/vmstate.h
    M include/qemu-common.h
    M include/qemu/osdep.h
    M include/qemu/typedefs.h
    M include/sysemu/balloon.h
    M include/sysemu/sysemu.h
    M kvm-all.c
    A linux-headers/linux/userfaultfd.h
    M migration/Makefile.objs
    M migration/block.c
    M migration/migration.c
    A migration/postcopy-ram.c
    M migration/qemu-file-unix.c
    M migration/qemu-file.c
    M migration/ram.c
    M migration/savevm.c
    M qapi-schema.json
    M qmp-commands.hx
    M qtest.c
    M trace-events
    M vl.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/juanquintela/tags/migration/20151110' 
into staging

migration/next for 20151110

# gpg: Signature made Tue 10 Nov 2015 14:23:26 GMT using RSA key ID 5872D723
# gpg: Good signature from "Juan Quintela <address@hidden>"
# gpg:                 aka "Juan Quintela <address@hidden>"

* remotes/juanquintela/tags/migration/20151110: (57 commits)
  migration: qemu_savevm_state_cleanup becomes mandatory operation
  Inhibit ballooning during postcopy
  Disable mlock around incoming postcopy
  End of migration for postcopy
  Postcopy: Mark nohugepage before discard
  postcopy: Wire up loadvm_postcopy_handle_ commands
  Start up a postcopy/listener thread ready for incoming page data
  Postcopy; Handle userfault requests
  Round up RAMBlock sizes to host page sizes
  Host page!=target page: Cleanup bitmaps
  Don't iterate on precopy-only devices during postcopy
  Don't sync dirty bitmaps in postcopy
  postcopy: Check order of received target pages
  Postcopy: Use helpers to map pages during migration
  postcopy_ram.c: place_page and helpers
  Page request: Consume pages off the post-copy queue
  Page request: Process incoming page request
  Page request: Add MIG_RP_MSG_REQ_PAGES reverse command
  Postcopy: End of iteration
  Postcopy: Postcopy startup in migration thread
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/a1a88589dc98...a77067f6ac9b

reply via email to

[Prev in Thread] Current Thread [Next in Thread]