From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: aarcange@redhat.com, yamahata@private.email.ne.jp,
quintela@redhat.com, cristian.klein@cs.umu.se,
qemu-devel@nongnu.org, amit.shah@redhat.com,
yanghy@cn.fujitsu.com
Subject: Re: [Qemu-devel] [PATCH v4 40/47] Postcopy: Use helpers to map pages during migration
Date: Tue, 25 Nov 2014 18:14:08 +0000 [thread overview]
Message-ID: <20141125181407.GB11112@work-vm> (raw)
In-Reply-To: <20141113025303.GB7291@voom.fritz.box>
* David Gibson (david@gibson.dropbear.id.au) wrote:
> On Fri, Oct 03, 2014 at 06:47:46PM +0100, Dr. David Alan Gilbert (git) wrote:
> > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >
> > 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.
> >
> > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > ---
> > arch_init.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------
> > 1 file changed, 87 insertions(+), 9 deletions(-)
> >
> > diff --git a/arch_init.c b/arch_init.c
> > index 2f4345a..0ba627b 100644
> > --- a/arch_init.c
> > +++ b/arch_init.c
> > @@ -1458,9 +1458,20 @@ static int load_xbzrle(QEMUFile *f, ram_addr_t addr, void *host)
> > return 0;
> > }
> >
> > +/*
> > + * Read a RAMBlock ID from the stream f, find the host address of the
> > + * start of that block and add on 'offset'
> > + *
> > + * f: Stream to read from
> > + * mis: MigrationIncomingState
> > + * offset: Offset within the block
> > + * flags: Page flags (mostly to see if it's a continuation of previous block)
> > + * rb: Pointer to RAMBlock* that gets filled in with the RB we find
> > + */
> > static inline void *host_from_stream_offset(QEMUFile *f,
> > + MigrationIncomingState *mis,
> > ram_addr_t offset,
> > - int flags)
> > + int flags, RAMBlock **rb)
> > {
> > static RAMBlock *block = NULL;
> > char id[256];
> > @@ -1471,8 +1482,11 @@ static inline void *host_from_stream_offset(QEMUFile *f,
> > error_report("Ack, bad migration stream!");
> > return NULL;
> > }
> > + if (rb) {
> > + *rb = block;
> > + }
> >
> > - return memory_region_get_ram_ptr(block->mr) + offset;
> > + goto gotit;
>
> This is an ugly use of goto - it looks kind of like the exception
> handling goto idiom, but it's not. I think it would be nicer to make
> the code fragment after gotit into a helper function.
Indeed; I've added the helper.
> > }
> >
> > len = qemu_get_byte(f);
> > @@ -1480,12 +1494,22 @@ static inline void *host_from_stream_offset(QEMUFile *f,
> > id[len] = 0;
> >
> > QTAILQ_FOREACH(block, &ram_list.blocks, next) {
> > - if (!strncmp(id, block->idstr, sizeof(id)))
> > - return memory_region_get_ram_ptr(block->mr) + offset;
> > + if (!strncmp(id, block->idstr, sizeof(id))) {
> > + if (rb) {
> > + *rb = block;
> > + }
> > + goto gotit;
> > + }
> > }
> >
> > error_report("Can't find block %s!", id);
> > return NULL;
> > +
> > +gotit:
> > + postcopy_hook_early_receive(mis,
> > + (offset + (*rb)->offset) >> TARGET_PAGE_BITS);
> > + return memory_region_get_ram_ptr(block->mr) + offset;
> > +
> > }
> >
> > /*
> > @@ -1515,6 +1539,13 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
> > ram_addr_t addr;
> > int flags, ret = 0;
> > static uint64_t seq_iter;
> > + /*
> > + * System is running in postcopy mode, page inserts to host memory must be
> > + * atomic
> > + */
> > + MigrationIncomingState *mis = migration_incoming_get_current();
> > + bool postcopy_running = mis->postcopy_ram_state >=
> > + POSTCOPY_RAM_INCOMING_LISTENING;
> >
> > seq_iter++;
> >
> > @@ -1523,6 +1554,7 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
> > }
> >
> > while (!ret) {
> > + RAMBlock *rb = 0; /* =0 needed to silence compiler */
> > addr = qemu_get_be64(f);
> >
> > flags = addr & ~TARGET_PAGE_MASK;
> > @@ -1570,7 +1602,7 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
> > void *host;
> > uint8_t ch;
> >
> > - host = host_from_stream_offset(f, addr, flags);
> > + host = host_from_stream_offset(f, mis, addr, flags, &rb);
> > if (!host) {
> > error_report("Illegal RAM offset " RAM_ADDR_FMT, addr);
> > ret = -EINVAL;
> > @@ -1578,20 +1610,66 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
> > }
> >
> > ch = qemu_get_byte(f);
> > - ram_handle_compressed(host, ch, TARGET_PAGE_SIZE);
> > + if (!postcopy_running) {
> > + ram_handle_compressed(host, ch, TARGET_PAGE_SIZE);
> > + } else {
> > + if (!ch) {
> > + ret = postcopy_place_zero_page(mis, host,
> > + (addr + rb->offset) >> TARGET_PAGE_BITS);
> > + } else {
> > + void *tmp;
> > + tmp = postcopy_get_tmp_page(mis, (addr + rb->offset) >>
> > + TARGET_PAGE_BITS);
> > +
> > + if (!tmp) {
> > + return -ENOMEM;
> > + }
> > + memset(tmp, ch, TARGET_PAGE_SIZE);
> > + ret = postcopy_place_page(mis, host, tmp,
> > + (addr + rb->offset) >> TARGET_PAGE_BITS);
> > + }
> > + if (ret) {
> > + error_report("ram_load: Failure in postcopy compress @"
> > + "%zx/%p;%s+%zx",
> > + addr, host, rb->idstr, rb->offset);
> > + return ret;
> > + }
> > + }
>
> Might be nicer to fold this logic into ram_handle_compressed(), since
> there's no obvious reason it should not be used for the postcopy path.
Hmm, that would be true, except ram_handle_compressed is also called from
the RDMA code (that postcopy doesn't yet support) and when it does it's
data path might be a bit different as well.
> > } else if (flags & RAM_SAVE_FLAG_PAGE) {
> > void *host;
> >
> > - host = host_from_stream_offset(f, addr, flags);
> > + host = host_from_stream_offset(f, mis, addr, flags, &rb);
> > if (!host) {
> > error_report("Illegal RAM offset " RAM_ADDR_FMT, addr);
> > ret = -EINVAL;
> > break;
> > }
> >
> > - qemu_get_buffer(f, host, TARGET_PAGE_SIZE);
> > + if (!postcopy_running) {
> > + qemu_get_buffer(f, host, TARGET_PAGE_SIZE);
> > + } else {
> > + void *tmp = postcopy_get_tmp_page(mis, (addr + rb->offset) >>
> > + TARGET_PAGE_BITS);
> > +
> > + if (!tmp) {
> > + return -ENOMEM;
> > + }
> > + qemu_get_buffer(f, tmp, TARGET_PAGE_SIZE);
> > + ret = postcopy_place_page(mis, host, tmp,
> > + (addr + rb->offset) >> TARGET_PAGE_BITS);
> > + if (ret) {
> > + error_report("ram_load: Failure in postcopy simple"
> > + "@%zx/%p;%s+%zx",
> > + addr, host, rb->idstr, rb->offset);
> > + return ret;
> > + }
> > + }
> > } else if (flags & RAM_SAVE_FLAG_XBZRLE) {
> > - void *host = host_from_stream_offset(f, addr, flags);
> > + if (postcopy_running) {
> > + error_report("XBZRLE RAM block in postcopy mode @%zx\n", addr);
> > + return -EINVAL;
> > + }
>
> Hrm, there doesn't seem like an inherent reason XBZRLE shouldn't be
> possible in postcopy. Obviously a temporary buffer would be
> necessary.
This is only disabling it in the postcopy stage; so the precopy stage at the beginning
still uses it. In postcopy, we only ever send a page once, so we won't be sending
the page and then sending an XBZRLE fixup for it. If the page was already sent
in precopy then it won't get sent again.
Dave
>
> > + void *host = host_from_stream_offset(f, mis, addr, flags, &rb);
> > if (!host) {
> > error_report("Illegal RAM offset " RAM_ADDR_FMT, addr);
> > ret = -EINVAL;
>
> --
> David Gibson | I'll have my music baroque, and my code
> david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
> | _way_ _around_!
> http://www.ozlabs.org/~dgibson
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2014-11-25 18:14 UTC|newest]
Thread overview: 204+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-03 17:47 [Qemu-devel] [PATCH v4 00/47] Postcopy implementation Dr. David Alan Gilbert (git)
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 01/47] QEMUSizedBuffer based QEMUFile Dr. David Alan Gilbert (git)
2014-10-08 2:10 ` zhanghailiang
2014-11-03 0:53 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 02/47] Tests: QEMUSizedBuffer/QEMUBuffer Dr. David Alan Gilbert (git)
2014-11-03 1:02 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 03/47] Start documenting how postcopy works Dr. David Alan Gilbert (git)
2014-11-03 1:31 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 04/47] qemu_ram_foreach_block: pass up error value, and down the ramblock name Dr. David Alan Gilbert (git)
2014-11-03 2:34 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 05/47] improve DPRINTF macros, add to savevm Dr. David Alan Gilbert (git)
2014-11-03 2:35 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 06/47] Add qemu_get_counted_string to read a string prefixed by a count byte Dr. David Alan Gilbert (git)
2014-11-03 2:39 ` David Gibson
2014-11-25 16:13 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 07/47] Create MigrationIncomingState Dr. David Alan Gilbert (git)
2014-11-03 2:45 ` David Gibson
2014-11-04 19:06 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 08/47] socket shutdown Dr. David Alan Gilbert (git)
2014-10-04 18:09 ` Paolo Bonzini
2014-10-07 10:00 ` Dr. David Alan Gilbert
2014-10-07 11:10 ` Paolo Bonzini
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 09/47] Provide runtime Target page information Dr. David Alan Gilbert (git)
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 10/47] Return path: Open a return path on QEMUFile for sockets Dr. David Alan Gilbert (git)
2014-11-03 3:05 ` David Gibson
2014-11-03 19:04 ` Dr. David Alan Gilbert
2014-11-18 4:34 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 11/47] Return path: socket_writev_buffer: Block even on non-blocking fd's Dr. David Alan Gilbert (git)
2014-11-03 3:10 ` David Gibson
2014-11-03 18:59 ` Dr. David Alan Gilbert
2014-11-18 3:54 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 12/47] Handle bi-directional communication for fd migration Dr. David Alan Gilbert (git)
2014-11-03 3:12 ` David Gibson
2014-11-03 13:53 ` Cristian Klein
2014-11-18 3:53 ` David Gibson
2014-11-19 17:27 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 13/47] Migration commands Dr. David Alan Gilbert (git)
2014-11-03 3:14 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 14/47] Return path: Control commands Dr. David Alan Gilbert (git)
2014-10-04 18:08 ` Paolo Bonzini
2014-10-23 16:23 ` Dr. David Alan Gilbert
2014-10-23 20:15 ` Paolo Bonzini
2014-11-03 3:20 ` David Gibson
2014-11-04 18:58 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 15/47] Return path: Send responses from destination to source Dr. David Alan Gilbert (git)
2014-11-03 3:22 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 16/47] Return path: Source handling of return path Dr. David Alan Gilbert (git)
2014-10-04 18:14 ` Paolo Bonzini
2014-10-23 18:00 ` Dr. David Alan Gilbert
2014-10-24 10:04 ` Paolo Bonzini
2014-10-16 8:26 ` zhanghailiang
2014-10-16 8:35 ` Dr. David Alan Gilbert
2014-10-16 9:09 ` zhanghailiang
2014-11-03 3:47 ` David Gibson
2014-11-25 15:44 ` Dr. David Alan Gilbert
2014-11-03 3:46 ` David Gibson
2014-11-03 13:22 ` Dr. David Alan Gilbert
2014-11-18 3:52 ` David Gibson
2014-11-19 17:06 ` Dr. David Alan Gilbert
2014-11-19 21:12 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 17/47] qemu_loadvm errors and debug Dr. David Alan Gilbert (git)
2014-11-03 3:49 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 18/47] ram_debug_dump_bitmap: Dump a migration bitmap as text Dr. David Alan Gilbert (git)
2014-11-03 3:58 ` David Gibson
2014-11-19 17:35 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 19/47] Rework loadvm path for subloops Dr. David Alan Gilbert (git)
2014-10-04 16:46 ` Paolo Bonzini
2014-10-07 8:58 ` Dr. David Alan Gilbert
2014-10-07 10:12 ` Paolo Bonzini
2014-10-07 10:21 ` Dr. David Alan Gilbert
2014-11-03 5:08 ` David Gibson
2014-11-19 17:50 ` Dr. David Alan Gilbert
2014-11-21 6:53 ` David Gibson
2014-12-11 14:47 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 20/47] Add migration-capability boolean for postcopy-ram Dr. David Alan Gilbert (git)
2014-10-06 18:59 ` Eric Blake
2014-10-06 19:07 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 21/47] Add wrappers and handlers for sending/receiving the postcopy-ram migration messages Dr. David Alan Gilbert (git)
2014-11-03 5:51 ` David Gibson
2014-12-17 14:50 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 22/47] QEMU_VM_CMD_PACKAGED: Send a packaged chunk of migration stream Dr. David Alan Gilbert (git)
2014-11-04 1:28 ` David Gibson
2014-11-04 10:19 ` Dr. David Alan Gilbert
2014-11-18 4:36 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 23/47] migrate_init: Call from savevm Dr. David Alan Gilbert (git)
2014-10-08 2:28 ` zhanghailiang
2014-11-04 1:29 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 24/47] Allow savevm handlers to state whether they could go into postcopy Dr. David Alan Gilbert (git)
2014-11-04 1:33 ` David Gibson
2014-11-19 17:53 ` Dr. David Alan Gilbert
2014-11-21 6:58 ` David Gibson
2014-11-25 19:58 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 25/47] postcopy: OS support test Dr. David Alan Gilbert (git)
2014-11-04 1:40 ` David Gibson
2014-11-25 17:34 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 26/47] migrate_start_postcopy: Command to trigger transition to postcopy Dr. David Alan Gilbert (git)
2014-11-04 1:47 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 27/47] MIG_STATE_POSTCOPY_ACTIVE: Add new migration state Dr. David Alan Gilbert (git)
2014-11-04 1:49 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 28/47] qemu_savevm_state_complete: Postcopy changes Dr. David Alan Gilbert (git)
2014-11-04 2:18 ` David Gibson
2014-12-17 16:14 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 29/47] Postcopy page-map-incoming (PMI) structure Dr. David Alan Gilbert (git)
2014-11-04 3:09 ` David Gibson
2014-11-19 18:46 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 30/47] Postcopy: Maintain sentmap and calculate discard Dr. David Alan Gilbert (git)
2014-11-05 6:38 ` David Gibson
2014-12-17 16:48 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 31/47] postcopy: Incoming initialisation Dr. David Alan Gilbert (git)
2014-11-05 6:47 ` David Gibson
2014-12-17 17:21 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 32/47] postcopy: ram_enable_notify to switch on userfault Dr. David Alan Gilbert (git)
2014-10-04 16:42 ` Paolo Bonzini
2014-10-06 19:00 ` Dr. David Alan Gilbert
2014-11-05 6:49 ` David Gibson
2014-11-19 18:59 ` Dr. David Alan Gilbert
2014-11-19 21:17 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 33/47] Postcopy: Postcopy startup in migration thread Dr. David Alan Gilbert (git)
2014-10-04 16:27 ` Paolo Bonzini
2014-11-20 11:45 ` Dr. David Alan Gilbert
2014-11-21 12:01 ` Paolo Bonzini
2014-11-21 12:07 ` Dr. David Alan Gilbert
2014-11-20 17:12 ` Dr. David Alan Gilbert
2014-11-20 17:19 ` Paolo Bonzini
2014-11-24 18:26 ` Dr. David Alan Gilbert
2014-11-10 6:05 ` David Gibson
2015-01-05 16:06 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 34/47] Postcopy: Create a fault handler thread before marking the ram as userfault Dr. David Alan Gilbert (git)
2014-11-10 6:10 ` David Gibson
2014-11-19 18:56 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 35/47] Page request: Add MIG_RPCOMM_REQPAGES reverse command Dr. David Alan Gilbert (git)
2014-11-10 6:19 ` David Gibson
2014-11-19 20:01 ` Dr. David Alan Gilbert
2014-11-19 21:48 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 36/47] Page request: Process incoming page request Dr. David Alan Gilbert (git)
2014-10-08 2:31 ` zhanghailiang
2014-10-08 7:49 ` Dr. David Alan Gilbert
2014-10-08 8:07 ` Paolo Bonzini
2014-10-08 8:10 ` zhanghailiang
2014-10-08 8:18 ` Dr. David Alan Gilbert
2014-11-10 6:31 ` David Gibson
2014-11-17 19:07 ` Dr. David Alan Gilbert
2014-11-18 4:38 ` David Gibson
2014-11-19 19:37 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 37/47] Page request: Consume pages off the post-copy queue Dr. David Alan Gilbert (git)
2014-10-04 18:04 ` Paolo Bonzini
2014-10-07 11:35 ` Dr. David Alan Gilbert
2014-11-11 1:13 ` David Gibson
2015-01-14 20:13 ` Dr. David Alan Gilbert
2015-01-27 4:38 ` David Gibson
2015-01-27 9:40 ` Dr. David Alan Gilbert
2015-01-28 5:33 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 38/47] Add assertion to check migration_dirty_pages Dr. David Alan Gilbert (git)
2014-10-04 18:32 ` Paolo Bonzini
2014-10-06 18:51 ` Dr. David Alan Gilbert
2014-10-06 20:30 ` Paolo Bonzini
2014-11-11 1:14 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 39/47] postcopy_ram.c: place_page and helpers Dr. David Alan Gilbert (git)
2014-11-11 1:39 ` David Gibson
2015-01-15 18:14 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 40/47] Postcopy: Use helpers to map pages during migration Dr. David Alan Gilbert (git)
2014-11-13 2:53 ` David Gibson
2014-11-25 18:14 ` Dr. David Alan Gilbert [this message]
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 41/47] qemu_ram_block_from_host Dr. David Alan Gilbert (git)
2014-11-13 2:59 ` David Gibson
2014-11-25 18:55 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 42/47] Don't sync dirty bitmaps in postcopy Dr. David Alan Gilbert (git)
2014-11-13 3:01 ` David Gibson
2014-11-25 16:25 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 43/47] Host page!=target page: Cleanup bitmaps Dr. David Alan Gilbert (git)
2014-11-13 3:10 ` David Gibson
2014-12-17 18:21 ` Dr. David Alan Gilbert
2015-01-27 4:50 ` David Gibson
2015-01-27 10:04 ` Dr. David Alan Gilbert
2015-01-28 5:36 ` David Gibson
2015-01-27 10:20 ` Peter Maydell
2015-01-27 11:50 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 44/47] Postcopy; Handle userfault requests Dr. David Alan Gilbert (git)
2014-11-13 3:23 ` David Gibson
2015-01-05 17:13 ` Dr. David Alan Gilbert
2015-01-27 4:33 ` David Gibson
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 45/47] Start up a postcopy/listener thread ready for incoming page data Dr. David Alan Gilbert (git)
2014-11-13 3:29 ` David Gibson
2014-11-19 19:40 ` Dr. David Alan Gilbert
2014-11-21 8:36 ` David Gibson
2014-11-21 10:17 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 46/47] postcopy: Wire up loadvm_postcopy_ram_handle_{run, end} commands Dr. David Alan Gilbert (git)
2014-10-04 17:51 ` Paolo Bonzini
2014-10-23 12:18 ` Dr. David Alan Gilbert
2014-10-03 17:47 ` [Qemu-devel] [PATCH v4 47/47] End of migration for postcopy Dr. David Alan Gilbert (git)
2014-10-04 17:49 ` Paolo Bonzini
2014-10-23 14:24 ` Dr. David Alan Gilbert
2014-10-04 18:31 ` Paolo Bonzini
2014-10-07 10:29 ` Dr. David Alan Gilbert
2014-10-07 11:12 ` Paolo Bonzini
2014-10-03 19:21 ` [Qemu-devel] [PATCH v4 00/47] Postcopy implementation Dr. David Alan Gilbert
2014-10-07 2:27 ` Cristian Klein
2014-10-07 8:12 ` Dr. David Alan Gilbert
2014-10-08 8:36 ` Cristian Klein
2014-11-21 3:48 ` zhanghailiang
2014-11-21 10:14 ` Dr. David Alan Gilbert
2014-11-24 8:10 ` zhanghailiang
2014-11-21 18:56 ` Andrea Arcangeli
2014-11-24 8:25 ` zhanghailiang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20141125181407.GB11112@work-vm \
--to=dgilbert@redhat.com \
--cc=aarcange@redhat.com \
--cc=amit.shah@redhat.com \
--cc=cristian.klein@cs.umu.se \
--cc=david@gibson.dropbear.id.au \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=yamahata@private.email.ne.jp \
--cc=yanghy@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).