From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Wei Liu <wei.liu2@citrix.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>,
Ian Campbell <Ian.Campbell@citrix.com>,
Xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH v9 10/15] tools/libxc: x86 HVM save code
Date: Mon, 13 Apr 2015 14:21:02 +0100 [thread overview]
Message-ID: <552BC2BE.2020406@citrix.com> (raw)
In-Reply-To: <87lhhwqkjs.fsf@vitty.brq.redhat.com>
On 13/04/15 13:28, Vitaly Kuznetsov wrote:
> Andrew Cooper <andrew.cooper3@citrix.com> writes:
>
>> +/*
>> + * Query for a range of HVM parameters and write an HVM_PARAMS record into the
>> + * stream.
>> + */
>> +static int write_hvm_params(struct xc_sr_context *ctx)
>> +{
>> + static const unsigned int params[] = {
>> + HVM_PARAM_STORE_PFN,
>> + HVM_PARAM_IOREQ_PFN,
>> + HVM_PARAM_BUFIOREQ_PFN,
>> + HVM_PARAM_PAGING_RING_PFN,
>> + HVM_PARAM_MONITOR_RING_PFN,
>> + HVM_PARAM_SHARING_RING_PFN,
>> + HVM_PARAM_VM86_TSS,
>> + HVM_PARAM_CONSOLE_PFN,
>> + HVM_PARAM_ACPI_IOPORTS_LOCATION,
>> + HVM_PARAM_VIRIDIAN,
>> + HVM_PARAM_IDENT_PT,
>> + HVM_PARAM_PAE_ENABLED,
>> + HVM_PARAM_VM_GENERATION_ID_ADDR,
>> + HVM_PARAM_IOREQ_SERVER_PFN,
>> + HVM_PARAM_NR_IOREQ_SERVER_PAGES,
>> + };
>> +
>> + xc_interface *xch = ctx->xch;
>> + struct xc_sr_rec_hvm_params_entry entries[ARRAY_SIZE(params)];
>> + struct xc_sr_rec_hvm_params hdr = {
>> + .count = 0,
>> + };
>> + struct xc_sr_record rec = {
>> + .type = REC_TYPE_HVM_PARAMS,
>> + .length = sizeof(hdr),
>> + .data = &hdr,
>> + };
>> + unsigned int i;
>> + int rc;
>> +
>> + for ( i = 0; i < ARRAY_SIZE(params); i++ )
>> + {
>> + uint32_t index = params[i];
>> + uint64_t value;
>> +
>> + rc = xc_hvm_param_get(xch, ctx->domid, index, &value);
>> + if ( rc )
>> + {
>> + PERROR("Failed to get HVMPARAM at index %u", index);
>> + return rc;
>> + }
>> +
>> + if ( value != 0 )
>> + {
>> + entries[hdr.count].index = index;
>> + entries[hdr.count].value = value;
>> + hdr.count++;
>> + }
>> + }
> While reviewing my 'soft reset' series Ian C raised a question about the
> unsafeness of sequential get/set of HVM params:
> http://lists.xen.org/archives/html/xen-devel/2015-01/msg01177.html
>
> In case the concern is valid I think the requirements for migration are
> even stricter as we can migrate live. In case it is not, would it be
> possible to move your params[] array to some common place so it can be
> reused?
This code currently mirrors what the old migration did. This was one
area we deliberately didn't try to clean up (we were focusing on a
functional replacement).
I am not a fan of hvm params. They are used as a dumping ground for
things which IMO should live elsewhere. The result is this mess,
without any clear direction of who owns which parameter, which should
move on migration, which shouldn't etc. There are many areas of the
toolstack which independently poke at the parameters.
I would be hesitant to blindly lift this code out, although it is
probably the best start you will find.
What is really needed is formal statement of who owns which hvm params,
and what their purpose is. That would at least be a good starting point
for evaluating questions like this.
~Andrew
next prev parent reply other threads:[~2015-04-13 13:21 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-10 17:15 [PATCH v9 00/15] Migration v2 (libxc) Andrew Cooper
2015-04-10 17:15 ` [PATCH v9 01/15] tools/libxc: Implement writev_exact() in the same style as write_exact() Andrew Cooper
2015-04-15 10:44 ` Ian Campbell
2015-04-10 17:15 ` [PATCH v9 02/15] libxc/progress: Extend the progress interface Andrew Cooper
2015-04-15 10:55 ` Ian Campbell
2015-04-20 13:15 ` Andrew Cooper
2015-04-22 15:38 ` Ian Campbell
2015-04-10 17:15 ` [PATCH v9 03/15] tools/libxc: Migration v2 framework Andrew Cooper
2015-04-15 10:57 ` Ian Campbell
2015-04-10 17:15 ` [PATCH v9 04/15] tools/libxc: C implementation of stream format Andrew Cooper
2015-04-15 10:59 ` Ian Campbell
2015-04-10 17:15 ` [PATCH v9 05/15] tools/libxc: noarch common code Andrew Cooper
2015-04-15 11:00 ` Ian Campbell
2015-04-10 17:15 ` [PATCH v9 06/15] tools/libxc: x86 " Andrew Cooper
2015-04-10 17:15 ` [PATCH v9 07/15] tools/libxc: x86 PV " Andrew Cooper
2015-04-15 11:07 ` Ian Campbell
2015-04-10 17:16 ` [PATCH v9 08/15] tools/libxc: x86 PV save code Andrew Cooper
2015-04-15 11:13 ` Ian Campbell
2015-04-15 11:41 ` Andrew Cooper
2015-04-15 11:52 ` Ian Campbell
2015-04-10 17:16 ` [PATCH v9 09/15] tools/libxc: x86 PV restore code Andrew Cooper
2015-04-15 11:22 ` Ian Campbell
2015-04-10 17:16 ` [PATCH v9 10/15] tools/libxc: x86 HVM save code Andrew Cooper
2015-04-13 12:28 ` Vitaly Kuznetsov
2015-04-13 13:21 ` Andrew Cooper [this message]
2015-04-15 11:29 ` Ian Campbell
2015-04-15 11:30 ` Ian Campbell
2015-04-10 17:16 ` [PATCH v9 11/15] tools/libxc: x86 HVM restore code Andrew Cooper
2015-04-15 11:31 ` Ian Campbell
2015-04-10 17:16 ` [PATCH v9 12/15] tools/libxc: noarch save code Andrew Cooper
2015-04-15 11:34 ` Ian Campbell
2015-04-10 17:16 ` [PATCH v9 13/15] tools/libxc: noarch restore code Andrew Cooper
2015-04-15 11:42 ` Ian Campbell
2015-04-15 11:50 ` Andrew Cooper
2015-04-15 11:53 ` Ian Campbell
2015-04-10 17:16 ` [PATCH v9 14/15] docs: libxc migration stream specification Andrew Cooper
2015-04-15 11:46 ` Ian Campbell
2015-04-15 12:05 ` Andrew Cooper
2015-04-15 12:11 ` Ian Campbell
2015-04-15 12:02 ` David Vrabel
2015-04-15 12:09 ` Andrew Cooper
2015-04-10 17:16 ` [PATCH v9 15/15] tools/libxc: Migration v2 compatibility for unmodified libxl Andrew Cooper
2015-04-15 11:51 ` Ian Campbell
2015-04-15 12:14 ` Andrew Cooper
2015-04-15 12:52 ` 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=552BC2BE.2020406@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=vkuznets@redhat.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.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.