All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org
Cc: Ian Jackson <ian.jackson@eu.citrix.com>,
	Wei Liu <wei.liu2@citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>
Subject: Re: [PATCH v7 32/32] libxl: add support for migrating HVM guests without a device model
Date: Thu, 8 Oct 2015 18:10:34 +0200	[thread overview]
Message-ID: <5616957A.4080303@citrix.com> (raw)
In-Reply-To: <560ED365.3020802@citrix.com>

El 02/10/15 a les 20.56, Andrew Cooper ha escrit:
> On 02/10/15 16:49, Roger Pau Monne wrote:
>> Only some minor libxl changes are needed in order to be able to migrate HVM
>> guests without a device model, no hypervisor changes are needed.
>>
>> This change prevents sending the emulator context if the device model
>> version is set to none.
>>
>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
>> Cc: Ian Campbell <ian.campbell@citrix.com>
>> Cc: Wei Liu <wei.liu2@citrix.com>
>> ---
>>  tools/libxl/libxl_dom.c          | 3 +++
>>  tools/libxl/libxl_dom_suspend.c  | 2 ++
>>  tools/libxl/libxl_stream_write.c | 8 +++++++-
>>  3 files changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
>> index 7e8ae14..b40d744 100644
>> --- a/tools/libxl/libxl_dom.c
>> +++ b/tools/libxl/libxl_dom.c
>> @@ -1310,6 +1310,9 @@ void libxl__domain_suspend_common_switch_qemu_logdirty
>>      case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN:
>>          domain_suspend_switch_qemu_xen_logdirty(domid, enable, shs);
>>          break;
>> +    case LIBXL_DEVICE_MODEL_VERSION_NONE:
>> +        libxl__xc_domain_saverestore_async_callback_done(egc, shs, 0);
>> +        break;
>>      default:
>>          LOG(ERROR,"logdirty switch failed"
>>              ", no valid device model version found, abandoning suspend");
>> diff --git a/tools/libxl/libxl_dom_suspend.c b/tools/libxl/libxl_dom_suspend.c
>> index 4cc01ad..3313ad1 100644
>> --- a/tools/libxl/libxl_dom_suspend.c
>> +++ b/tools/libxl/libxl_dom_suspend.c
>> @@ -43,6 +43,8 @@ int libxl__domain_suspend_device_model(libxl__gc *gc,
>>          if (ret)
>>              unlink(filename);
>>          break;
>> +    case LIBXL_DEVICE_MODEL_VERSION_NONE:
>> +        break;
>>      default:
>>          return ERROR_INVAL;
>>      }
>> diff --git a/tools/libxl/libxl_stream_write.c b/tools/libxl/libxl_stream_write.c
>> index 52a60d7..5551560 100644
>> --- a/tools/libxl/libxl_stream_write.c
>> +++ b/tools/libxl/libxl_stream_write.c
>> @@ -232,6 +232,9 @@ void libxl__stream_write_start(libxl__egc *egc,
>>              stream->emu_sub_hdr.id = EMULATOR_QEMU_UPSTREAM;
>>              break;
>>  
>> +        case LIBXL_DEVICE_MODEL_VERSION_NONE:
>> +            break;
>> +
>>          default:
>>              rc = ERROR_FAIL;
>>              LOG(ERROR, "Unknown emulator for HVM domain");
>> @@ -387,8 +390,11 @@ static void emulator_xenstore_record_done(libxl__egc *egc,
>>                                            libxl__stream_write_state *stream)
>>  {
>>      libxl__domain_suspend_state *dss = stream->dss;
>> +    STATE_AO_GC(stream->ao);
>>  
>> -    if (dss->type == LIBXL_DOMAIN_TYPE_HVM)
>> +    if (dss->type == LIBXL_DOMAIN_TYPE_HVM &&
>> +        libxl__device_model_version_running(gc, dss->domid) !=
>> +        LIBXL_DEVICE_MODEL_VERSION_NONE)
>>          write_emulator_context_record(egc, stream);
>>      else {
>>          if (stream->in_checkpoint)
> 
> I think a few more changes are needed to make this robust.
> 
> write_emulator_xenstore_record() needs an early check for
> LIBXL_DEVICE_MODEL_VERSION_NONE and omit the call to
> libxl__save_emulator_xenstore_data() (which is only needed because
> qemu-upstream has a layering violation in its save format)
> 
> Instead of patching emulator_xenstore_record_done(), in the hunk above,
> I would suggest having another early check and continue in
> write_emulator_context_record()

I've done so and bailed early on both functions, without touching
emulator_xenstore_record_done.

> Also, you need to patch the EMULATOR_* cases in
> libxl_stream_read.c:process_record() to bail with a hard error if
> records received for a domain configured to have no emulators.

Ack, I've added checks in both REC_TYPE_EMULATOR_XENSTORE_DATA and
REC_TYPE_EMULATOR_CONTEXT. Will send a new version.

Thanks, Roger.


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  reply	other threads:[~2015-10-08 16:10 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-02 15:48 [PATCH v7 00/32] Introduce HVM without dm and new boot ABI Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 01/32] xen/vcpu: add missing dummy_vcpu_info to compat VCPUOP_initialise Roger Pau Monne
2015-10-02 18:21   ` Andrew Cooper
2015-10-05 10:05   ` Jan Beulich
2015-10-05 16:18     ` Roger Pau Monné
2015-10-02 15:48 ` [PATCH v7 02/32] libxc: split x86 HVM setup_guest into smaller logical functions Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 03/32] libxc: unify xc_dom_p2m_{host/guest} Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 04/32] libxc: introduce the notion of a container type Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 05/32] libxc: introduce a domain loader for HVM guest firmware Roger Pau Monne
2015-10-07 16:55   ` [PATCH v8 " Roger Pau Monne
2015-10-08  9:22     ` Ian Campbell
2015-10-08  9:26       ` Roger Pau Monné
2015-10-08 10:12     ` Ian Campbell
2015-10-08 10:43       ` Roger Pau Monné
2015-10-08 11:04         ` Ian Campbell
2015-10-08 11:12           ` Andrew Cooper
2015-10-08 11:13           ` Wei Liu
2015-10-02 15:48 ` [PATCH v7 06/32] libxc: make arch_setup_meminit a xc_dom_arch hook Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 07/32] libxc: make arch_setup_boot{init/late} xc_dom_arch hooks Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 08/32] libxc: rework BSP initialization Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 09/32] libxc: introduce a xc_dom_arch for hvm-3.0-x86_32 guests Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 10/32] libxl: switch HVM domain building to use xc_dom_* helpers Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 11/32] libxc: remove dead HVM building code Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 12/32] xen/x86: add bitmap of enabled emulated devices Roger Pau Monne
2015-10-05  9:34   ` Andrew Cooper
2015-10-05 16:40     ` Roger Pau Monné
2015-10-05 16:43       ` Andrew Cooper
2015-10-06 11:05     ` George Dunlap
2015-10-07 11:55       ` Roger Pau Monné
2015-10-07 12:15         ` Jan Beulich
2015-10-07 13:32         ` George Dunlap
2015-10-07 14:01           ` Andrew Cooper
2015-10-08  9:13             ` Roger Pau Monné
2015-10-08 10:23   ` Jan Beulich
2015-10-08 10:35     ` Roger Pau Monné
2015-10-15  1:48   ` Boris Ostrovsky
2015-10-15  7:34     ` Jan Beulich
2015-10-30 12:00     ` Roger Pau Monné
2015-10-02 15:48 ` [PATCH v7 13/32] xen/vlapic: fixes for HVM code when running without a vlapic Roger Pau Monne
2015-10-02 18:23   ` Andrew Cooper
2015-10-05 10:14     ` Jan Beulich
2015-10-02 20:33   ` Boris Ostrovsky
2015-10-08 10:36   ` Jan Beulich
2015-10-02 15:48 ` [PATCH v7 14/32] xen/x86: allow disabling the emulated local apic Roger Pau Monne
2015-10-05  9:41   ` Andrew Cooper
2015-10-14 14:33   ` Jan Beulich
2015-10-02 15:48 ` [PATCH v7 15/32] xen/x86: allow disabling the emulated HPET Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 16/32] xen/x86: allow disabling the pmtimer Roger Pau Monne
2015-10-05  9:42   ` Andrew Cooper
2015-10-14 14:37   ` Jan Beulich
2015-10-30 12:50     ` Roger Pau Monné
2015-10-30 13:16       ` Jan Beulich
2015-10-30 15:36         ` Andrew Cooper
2015-11-03  7:21           ` Jan Beulich
2015-11-03 10:57             ` Andrew Cooper
2015-11-03 12:41               ` Jan Beulich
2015-11-04 16:05                 ` Roger Pau Monné
2015-11-04 16:17                   ` Jan Beulich
2015-11-05 14:13                     ` Andrew Cooper
2015-11-05 14:12                 ` Andrew Cooper
2015-10-02 15:48 ` [PATCH v7 17/32] xen/x86: allow disabling the emulated RTC Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 18/32] xen/x86: allow disabling the emulated IO APIC Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 19/32] xen/x86: allow disabling the emulated PIC Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 20/32] xen/x86: set the vPMU interface based on the presence of a lapic Roger Pau Monne
2015-10-14 14:41   ` Jan Beulich
2015-10-14 14:59     ` Boris Ostrovsky
2015-10-14 15:06       ` Roger Pau Monné
2015-10-14 15:10         ` Boris Ostrovsky
2015-10-02 15:48 ` [PATCH v7 21/32] xen/x86: allow disabling the emulated VGA Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 22/32] xen/x86: allow disabling the emulated IOMMU Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 23/32] xen/x86: make sure the HVM callback vector is correctly set Roger Pau Monne
2015-10-02 18:37   ` Andrew Cooper
2015-10-05 16:44     ` Roger Pau Monné
2015-10-14 15:54   ` Jan Beulich
2015-10-14 16:01     ` Andrew Cooper
2015-10-15 11:30       ` Paul Durrant
2015-10-30 15:34         ` Roger Pau Monné
2015-10-30 15:38           ` Andrew Cooper
2015-10-02 15:48 ` [PATCH v7 24/32] xen/x86: allow disabling all emulated devices inside of Xen Roger Pau Monne
2015-10-19 14:23   ` Jan Beulich
2015-10-30 16:20     ` Roger Pau Monné
2015-10-30 16:27       ` Jan Beulich
2015-10-02 15:48 ` [PATCH v7 25/32] elfnotes: intorduce a new PHYS_ENTRY elfnote Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 26/32] libxc: allow creating domains without emulated devices Roger Pau Monne
2015-10-02 15:48 ` [PATCH v7 27/32] xen/x86: allow HVM guests to use hypercalls to bring up vCPUs Roger Pau Monne
2015-10-05 10:28   ` Andrew Cooper
2015-10-08 13:35     ` Roger Pau Monné
2015-10-08 15:21       ` Jan Beulich
2015-10-08 15:33         ` Andrew Cooper
2015-10-19 15:48   ` Jan Beulich
2015-11-05 12:06     ` Roger Pau Monné
2015-10-02 15:48 ` [PATCH v7 28/32] xenconsole: try to attach to PV console if HVM fails Roger Pau Monne
2015-10-02 15:49 ` [PATCH v7 29/32] libxc/xen: introduce a start info structure for HVMlite guests Roger Pau Monne
2015-10-05 10:36   ` Andrew Cooper
2015-10-05 16:47     ` Roger Pau Monné
2015-10-06  9:26   ` Wei Liu
2015-10-02 15:49 ` [PATCH v7 30/32] libxc: switch xc_dom_elfloader to be used with HVMlite domains Roger Pau Monne
2015-10-02 15:49 ` [PATCH v7 31/32] libxl: allow the creation of HVM domains without a device model Roger Pau Monne
2015-10-08 14:36   ` Ian Campbell
2015-10-08 16:27     ` Roger Pau Monné
2015-10-08 16:39       ` Ian Campbell
2015-10-02 15:49 ` [PATCH v7 32/32] libxl: add support for migrating HVM guests " Roger Pau Monne
2015-10-02 18:56   ` Andrew Cooper
2015-10-08 16:10     ` Roger Pau Monné [this message]
2015-10-08 11:46 ` [PATCH v7 00/32] Introduce HVM without dm and new boot ABI Ian Campbell

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=5616957A.4080303@citrix.com \
    --to=roger.pau@citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.