From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Wei Liu <wei.liu2@citrix.com>,
Ian Campbell <ian.campbell@citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Ian Jackson <ian.jackson@eu.citrix.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH v6 26/29] libxc/xen: introduce a start info structure for HVMlite guests
Date: Mon, 28 Sep 2015 18:51:38 +0200 [thread overview]
Message-ID: <5609701A.3070103@citrix.com> (raw)
In-Reply-To: <5600442B02000078000A424F@prv-mh.provo.novell.com>
El 21/09/15 a les 17.53, Jan Beulich ha escrit:
>>>> On 04.09.15 at 14:09, <roger.pau@citrix.com> wrote:
>
> First of all - I suppose it is intentional for this to not consider the Dom0
> side (yet)?
Yes, let's leave Dom0 for a later patch series please, this is already
big enough.
>> --- a/tools/libxc/xc_dom_x86.c
>> +++ b/tools/libxc/xc_dom_x86.c
>> @@ -560,7 +560,70 @@ static int alloc_magic_pages_hvm(struct xc_dom_image *dom)
>> xc_hvm_param_set(xch, domid, HVM_PARAM_SHARING_RING_PFN,
>> special_pfn(SPECIALPAGE_SHARING));
>>
>> - if ( dom->device_model )
>> + if ( !dom->device_model )
>> + {
>> + struct xc_dom_seg seg;
>> + struct hvm_start_info *start_info;
>> + char *cmdline;
>> + struct hvm_modlist_entry *modlist;
>> + void *start_page;
>> + size_t cmdline_size = 0;
>> + size_t start_info_size = sizeof(*start_info);
>> +
>> + if ( dom->cmdline )
>> + {
>> + cmdline_size = ROUNDUP(strlen(dom->cmdline) + 1, 8);
>> + start_info_size += cmdline_size;
>> +
>> + }
>> + if ( dom->ramdisk_blob )
>> + start_info_size += sizeof(*modlist); /* Limited to one module. */
>> +
>> + rc = xc_dom_alloc_segment(dom, &seg, "HVMlite start info", 0,
>> + start_info_size);
>> + if ( rc != 0 )
>> + {
>> + DOMPRINTF("Unable to reserve memory for the start info");
>> + goto out;
>> + }
>> +
>> + start_page = xc_map_foreign_range(xch, domid, start_info_size,
>> + PROT_READ | PROT_WRITE,
>> + seg.pfn);
>> + if ( start_page == NULL )
>> + {
>> + DOMPRINTF("Unable to map HVM start info page");
>> + goto error_out;
>> + }
>> +
>> + start_info = start_page;
>> + cmdline = start_page + sizeof(*start_info);
>> + modlist = start_page + sizeof(*start_info) + cmdline_size;
>> +
>> + if ( dom->cmdline )
>> + {
>> + strncpy(cmdline, dom->cmdline, MAX_GUEST_CMDLINE);
>> + cmdline[MAX_GUEST_CMDLINE - 1] = '\0';
>> + start_info->cmdline_paddr = (seg.pfn << PAGE_SHIFT) +
>
> Not knowing much about the tools interface used for allocation
> above: Does that interface guarantee this shift (and another
> one below) to not overflow?
I can add a check to make sure pfn are always below the 4GB boundary.
>> + ((xen_pfn_t)cmdline - (xen_pfn_t)start_info);
>
> xen_pfn_t? Aren't these byte addresses?
Right, these are not pfns.
>> --- a/xen/include/public/xen.h
>> +++ b/xen/include/public/xen.h
>> @@ -784,6 +784,25 @@ struct start_info {
>> };
>> typedef struct start_info start_info_t;
>>
>> +/*
>> + * Start of day structure passed to PVH guests in %ebx.
>> + */
>
> This is a single line comment.
Ack.
>> +struct hvm_start_info {
>> +#define HVM_START_MAGIC_VALUE 0x336ec578
>> + uint32_t magic; /* Contains the magic value 0x336ec578 */
>> + /* ("xEn3" with the 0x80 bit of the "E" set).*/
>> + uint32_t flags; /* SIF_xxx flags. */
>> + uint32_t cmdline_paddr; /* Physical address of the command line. */
>> + uint32_t nr_modules; /* Number of modules passed to the kernel. */
>> + uint32_t modlist_paddr; /* Physical address of an array of */
>> + /* hvm_modlist_entry. */
>> +};
>> +
>> +struct hvm_modlist_entry {
>> + uint32_t paddr; /* Physical address of the module. */
>> + uint32_t size; /* Size of the module in bytes. */
>> +};
>
> Iirc this already went back and forth, but - is this meant to be an
> x86-specific interface? If not, should we really limit physical
> addresses to 32 bits here?
That's what I though initially (x86 only), and nobody on the ARM side
expressed interest in using it there. Ian, Stefano, do you foresee this
being used for ARM also?
> Also this now sits inside a XEN_HAVE_PV_GUEST_ENTRY conditional
> - is that intended?
That's hard to tell, I would consider a guest/kernel using this
structure a PV guest (PVH), but I'm not sure if we can make a clear cut
here.
Roger.
next prev parent reply other threads:[~2015-09-28 16:51 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-04 12:08 [PATCH v6 00/29] Introduce HVM without dm and new boot ABI Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 01/29] libxc: split x86 HVM setup_guest into smaller logical functions Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 02/29] libxc: unify xc_dom_p2m_{host/guest} Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 03/29] libxc: introduce the notion of a container type Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 04/29] libxc: introduce a domain loader for HVM guest firmware Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 05/29] libxc: make arch_setup_meminit a xc_dom_arch hook Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 06/29] libxc: make arch_setup_boot{init/late} xc_dom_arch hooks Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 07/29] libxc: rework BSP initialization Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 08/29] libxc: introduce a xc_dom_arch for hvm-3.0-x86_32 guests Roger Pau Monne
2015-09-18 15:53 ` Anthony PERARD
2015-09-23 10:32 ` Roger Pau Monné
2015-09-04 12:08 ` [PATCH v6 09/29] libxl: switch HVM domain building to use xc_dom_* helpers Roger Pau Monne
2015-09-18 15:53 ` Anthony PERARD
2015-09-23 10:38 ` Roger Pau Monné
2015-09-04 12:08 ` [PATCH v6 10/29] libxc: remove dead HVM building code Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 11/29] xen/x86: add bitmap of enabled emulated devices Roger Pau Monne
2015-09-04 12:25 ` Wei Liu
2015-09-04 13:51 ` Roger Pau Monné
2015-09-04 13:55 ` Jan Beulich
2015-09-04 22:41 ` Andrew Cooper
2015-09-23 11:43 ` Roger Pau Monné
2015-09-04 13:56 ` Wei Liu
2015-09-09 14:27 ` Wei Liu
2015-09-16 9:50 ` Jan Beulich
2015-09-23 12:35 ` Roger Pau Monné
2015-09-23 13:24 ` Jan Beulich
2015-09-23 15:02 ` Roger Pau Monné
2015-09-16 10:10 ` Jan Beulich
2015-09-23 12:42 ` Roger Pau Monné
2015-09-23 12:46 ` Andrew Cooper
2015-09-04 12:08 ` [PATCH v6 12/29] xen/x86: allow disabling the emulated local apic Roger Pau Monne
2015-09-16 10:05 ` Jan Beulich
2015-09-23 15:45 ` Roger Pau Monné
2015-09-24 7:57 ` Jan Beulich
2015-09-25 9:00 ` Roger Pau Monné
2015-09-04 12:08 ` [PATCH v6 13/29] xen/x86: allow disabling the emulated HPET Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 14/29] xen/x86: allow disabling the pmtimer Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 15/29] xen/x86: allow disabling the emulated RTC Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 16/29] xen/x86: allow disabling the emulated IO APIC Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 17/29] xen/x86: allow disabling the emulated PIC Roger Pau Monne
2015-09-21 14:34 ` Jan Beulich
2015-09-25 15:01 ` Roger Pau Monné
2015-09-04 12:08 ` [PATCH v6 18/29] xen/x86: allow disabling the emulated pmu Roger Pau Monne
2015-09-21 14:36 ` Jan Beulich
2015-09-21 14:48 ` Boris Ostrovsky
2015-09-25 15:07 ` Roger Pau Monné
2015-09-25 15:13 ` Jan Beulich
2015-09-25 15:22 ` Roger Pau Monné
2015-09-25 15:41 ` Boris Ostrovsky
2015-09-04 12:08 ` [PATCH v6 19/29] xen/x86: allow disabling the emulated VGA Roger Pau Monne
2015-09-04 12:08 ` [PATCH v6 20/29] xen/x86: allow disabling the emulated IOMMU Roger Pau Monne
2015-09-28 13:58 ` Aravind Gopalakrishnan
2015-09-04 12:09 ` [PATCH v6 21/29] xen/x86: allow disabling all emulated devices inside of Xen Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 22/29] elfnotes: intorduce a new PHYS_ENTRY elfnote Roger Pau Monne
2015-09-21 14:47 ` Jan Beulich
2015-09-28 10:35 ` Roger Pau Monné
2015-09-28 10:56 ` Jan Beulich
2015-09-28 10:59 ` Andrew Cooper
2015-09-04 12:09 ` [PATCH v6 23/29] libxc: allow creating domains without emulated devices Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 24/29] xen/x86: allow HVM guests to use hypercalls to bring up vCPUs Roger Pau Monne
2015-09-21 15:44 ` Jan Beulich
2015-09-25 15:16 ` Andrew Cooper
2015-09-25 15:52 ` Jan Beulich
2015-09-28 16:09 ` Roger Pau Monné
2015-09-29 7:09 ` Jan Beulich
2015-09-29 8:53 ` Tim Deegan
2015-09-29 10:00 ` Andrew Cooper
2015-09-29 10:07 ` Jan Beulich
2015-09-29 10:25 ` Andrew Cooper
2015-09-29 10:33 ` Jan Beulich
2015-09-29 10:37 ` Andrew Cooper
2015-09-29 10:48 ` Jan Beulich
2015-09-29 14:01 ` Roger Pau Monné
2015-09-29 15:29 ` Jan Beulich
2015-09-29 16:01 ` Roger Pau Monné
2015-09-29 16:20 ` Jan Beulich
2015-09-29 16:49 ` Roger Pau Monné
2015-09-29 16:58 ` Roger Pau Monné
2015-09-30 10:03 ` Jan Beulich
2015-09-30 11:37 ` Roger Pau Monné
2015-09-30 11:49 ` Andrew Cooper
2015-09-30 11:54 ` Jan Beulich
2015-09-30 12:19 ` Roger Pau Monné
2015-09-30 12:35 ` Jan Beulich
2015-09-30 12:50 ` Andrew Cooper
2015-09-30 15:33 ` Roger Pau Monné
2015-09-30 14:23 ` Roger Pau Monné
2015-09-30 15:41 ` Jan Beulich
2015-09-04 12:09 ` [PATCH v6 25/29] xenconsole: try to attach to PV console if HVM fails Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 26/29] libxc/xen: introduce a start info structure for HVMlite guests Roger Pau Monne
2015-09-10 16:00 ` Wei Liu
2015-09-21 15:53 ` Jan Beulich
2015-09-28 16:51 ` Roger Pau Monné [this message]
2015-09-04 12:09 ` [PATCH v6 27/29] libxc: switch xc_dom_elfloader to be used with HVMlite domains Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 28/29] libxl: allow the creation of HVM domains without a device model Roger Pau Monne
2015-09-04 12:09 ` [PATCH v6 29/29] libxl: add support for migrating HVM guests " Roger Pau Monne
2015-09-10 16:00 ` Wei Liu
2015-09-10 16:30 ` Andrew Cooper
2015-09-11 13:04 ` [PATCH v6 00/29] 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=5609701A.3070103@citrix.com \
--to=roger.pau@citrix.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=stefano.stabellini@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.