From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>,
Ian Campbell <ian.campbell@citrix.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Ian Jackson <ian.jackson@eu.citrix.com>,
Jan Beulich <jbeulich@suse.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH v4 1/4] x86/HVM: update the start info structure layout
Date: Wed, 17 Feb 2016 11:45:14 +0100 [thread overview]
Message-ID: <20160217104514.GD3716@var.bordeaux.inria.fr> (raw)
In-Reply-To: <1455644269-40358-2-git-send-email-roger.pau@citrix.com>
Roger Pau Monne, on Tue 16 Feb 2016 18:37:46 +0100, wrote:
> After some discussion around the new boot ABI consensus has been reached
> about the layout and contents of the start info. The following patch updates
> the layout to what has been agreed.
>
> Also, the new layout is described in binary terms in order to avoid issues
> with alignments when using C structs.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
> ---
> Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> Cc: Ian Campbell <ian.campbell@citrix.com>
> Cc: Wei Liu <wei.liu2@citrix.com>
> Cc: Jan Beulich <jbeulich@suse.com>
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> tools/libxc/include/xc_dom.h | 31 +++++++++++++++++++++++++
> xen/include/public/xen.h | 55 ++++++++++++++++++++++++++++++--------------
> 2 files changed, 69 insertions(+), 17 deletions(-)
>
> diff --git a/tools/libxc/include/xc_dom.h b/tools/libxc/include/xc_dom.h
> index cac4698..6ebe946 100644
> --- a/tools/libxc/include/xc_dom.h
> +++ b/tools/libxc/include/xc_dom.h
> @@ -216,6 +216,37 @@ struct xc_dom_image {
> struct xc_hvm_firmware_module smbios_module;
> };
>
> +#if defined(__i386__) || defined(__x86_64__)
> +/* C representation of the x86/HVM start info layout.
> + *
> + * The canonical definition of this layout resides in public/xen.h, this
> + * is just a way to represent the layout described there using C types.
> + *
> + * NB: the packed attribute is not really needed, but it helps us enforce
> + * the fact this this is just a representation, and it might indeed
> + * be required in the future if there are alignment changes.
> + */
> +struct hvm_start_info {
> + uint32_t magic; /* Contains the magic value 0x336ec578 */
> + /* ("xEn3" with the 0x80 bit of the "E" set).*/
> + uint32_t version; /* Version of this structure. */
> + 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. */
> + uint32_t rsdp_paddr; /* Physical address of the RSDP ACPI data */
> + /* structure. */
> +} __attribute__((packed));
> +
> +struct hvm_modlist_entry {
> + uint64_t paddr; /* Physical address of the module. */
> + uint64_t size; /* Size of the module in bytes. */
> + uint64_t cmdline_paddr; /* Physical address of the command line. */
> + uint64_t reserved;
> +} __attribute__((packed));
> +#endif /* x86 */
> +
> /* --- pluggable kernel loader ------------------------------------- */
>
> struct xc_dom_loader {
> diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
> index 7b629b1..6ba060f 100644
> --- a/xen/include/public/xen.h
> +++ b/xen/include/public/xen.h
> @@ -787,25 +787,46 @@ typedef struct start_info start_info_t;
> /*
> * Start of day structure passed to PVH guests in %ebx.
> *
> - * NOTE: nothing will be loaded at physical address 0, so
> - * a 0 value in any of the address fields should be treated
> - * as not present.
> + * NOTE: nothing will be loaded at physical address 0, so a 0 value in any
> + * of the address fields should be treated as not present.
> + *
> + * 0 +----------------+
> + * | magic | Contains the magic value HVM_START_MAGIC_VALUE
> + * | | ("xEn3" with the 0x80 bit of the "E" set).
> + * 4 +----------------+
> + * | version | Version of this structure. Current version is 0. New
> + * | | versions are guaranteed to be backwards-compatible.
> + * 8 +----------------+
> + * | flags | SIF_xxx flags.
> + * 12 +----------------+
> + * | cmdline_paddr | Physical address of the command line,
> + * | | a zero-terminated ASCII string.
> + * 16 +----------------+
> + * | nr_modules | Number of modules passed to the kernel.
> + * 20 +----------------+
> + * | modlist_paddr | Physical address of an array of modules
> + * | | (layout of the structure below).
> + * 24 +----------------+
> + * | rsdp_paddr | Physical address of the RSDP ACPI data structure.
> + * 28 +----------------+
> + *
> + * The layout of each entry in the module structure is the following:
> + *
> + * 0 +----------------+
> + * | paddr | Physical address of the module.
> + * 8 +----------------+
> + * | size | Size of the module in bytes.
> + * 16 +----------------+
> + * | cmdline_paddr | Physical address of the command line,
> + * | | a zero-terminated ASCII string.
> + * 24 +----------------+
> + * | reserved |
> + * 32 +----------------+
> + *
> + * The address and size of the modules is a 64bit unsigned integer. However
> + * Xen will always try to place all modules below the 4GiB boundary.
> */
> -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. */
> -};
>
> /* New console union for dom0 introduced in 0x00030203. */
> #if __XEN_INTERFACE_VERSION__ < 0x00030203
> --
> 2.5.4 (Apple Git-61)
>
--
Samuel
<N> un driver qui fait quoi, alors ?
<y> ben pour les bips
<s> pour passer les oops en morse
-+- #ens-mim - vive les rapports de bug -+-
next prev parent reply other threads:[~2016-02-17 10:45 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-16 17:37 [PATCH v4 0/4] Assorted fixes and improvements Roger Pau Monne
2016-02-16 17:37 ` [PATCH v4 1/4] x86/HVM: update the start info structure layout Roger Pau Monne
2016-02-16 19:13 ` Andrew Cooper
2016-02-16 20:06 ` Konrad Rzeszutek Wilk
2016-02-17 10:01 ` Roger Pau Monné
2016-02-16 21:26 ` Boris Ostrovsky
2016-02-17 9:58 ` Jan Beulich
2016-02-17 10:05 ` Roger Pau Monné
2016-02-17 14:39 ` Boris Ostrovsky
2016-02-17 14:54 ` Jan Beulich
2016-02-17 10:45 ` Samuel Thibault [this message]
2016-02-17 13:00 ` Jan Beulich
2016-02-16 17:37 ` [PATCH v4 2/4] libxl: introduce LIBXL_VGA_INTERFACE_TYPE_UNKNOWN Roger Pau Monne
2016-02-24 12:08 ` Wei Liu
2016-03-01 16:06 ` Ian Jackson
2016-02-16 17:37 ` [PATCH v4 3/4] libelf: rewrite symtab/strtab loading Roger Pau Monne
2016-02-26 13:15 ` Jan Beulich
2016-02-26 17:02 ` Roger Pau Monné
2016-02-29 9:31 ` Jan Beulich
2016-02-29 10:57 ` Roger Pau Monné
2016-02-29 12:14 ` Jan Beulich
2016-02-29 16:20 ` Roger Pau Monné
2016-02-29 16:41 ` Jan Beulich
2016-02-16 17:37 ` [PATCH v4 4/4] libxl: fix cd-eject Roger Pau Monne
2016-02-16 17:58 ` Ian Jackson
2016-02-17 11:20 ` Roger Pau Monné
2016-02-17 11:42 ` Ian Campbell
2016-02-17 12:15 ` Ian Jackson
2016-02-17 17:20 ` [PATCH v6] libxl: allow 'phy' backend to use empty files Roger Pau Monne
2016-02-18 10:27 ` Alex Braunegg
2016-02-19 17:30 ` Ian Jackson
2016-02-19 17:41 ` Roger Pau Monné
2016-02-19 18:01 ` [PATCH v7] " Roger Pau Monne
2016-03-01 9:51 ` Roger Pau Monné
2016-03-03 15:41 ` Ian Jackson
2016-03-31 16:20 ` Roger Pau Monné
2016-04-01 14:06 ` Ian Jackson
2016-04-05 16:48 ` [PATCH v6] " George Dunlap
2016-04-05 21:45 ` Alex Braunegg
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=20160217104514.GD3716@var.bordeaux.inria.fr \
--to=samuel.thibault@ens-lyon.org \
--cc=andrew.cooper3@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jbeulich@suse.com \
--cc=roger.pau@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 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).