From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [v4][PATCH 16/19] tools/libxl: extend XENMEM_set_memory_map Date: Thu, 25 Jun 2015 12:33:29 +0100 Message-ID: <20150625113329.GL6545@zion.uk.xensource.com> References: <1435053450-25131-1-git-send-email-tiejun.chen@intel.com> <1435053450-25131-17-git-send-email-tiejun.chen@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1435053450-25131-17-git-send-email-tiejun.chen@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Tiejun Chen Cc: Wei Liu , Stefano Stabellini , Ian Jackson , Ian Campbell , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org The subject line should be changed. You're not extending that hypercall. libxl: construct e820 map with RDM information for HVM guest On Tue, Jun 23, 2015 at 05:57:27PM +0800, Tiejun Chen wrote: > Here we'll construct a basic guest e820 table via > XENMEM_set_memory_map. This table includes lowmem, highmem > and RDMs if they exist. And hvmloader would need this info > later. > I have one question. When RDM is disabled, the generated e820 map should look exactly the same as before (i.e. without this patch), right? Whatever the answer is, please say that in your commit log. > CC: Ian Jackson > CC: Stefano Stabellini > CC: Ian Campbell > CC: Wei Liu > Signed-off-by: Tiejun Chen > --- > v4: > > * Use goto style error handling. > * Instead of NOGC, we shoud use libxl__malloc(gc,XXX) to allocate local e820. > > tools/libxl/libxl_dom.c | 5 +++ > tools/libxl/libxl_internal.h | 24 +++++++++++++ > tools/libxl/libxl_x86.c | 83 ++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 112 insertions(+) > > diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c > index 0987991..bc8fd5b 100644 > --- a/tools/libxl/libxl_dom.c > +++ b/tools/libxl/libxl_dom.c > @@ -1004,6 +1004,11 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid, > goto out; > } > > + if (libxl__domain_construct_e820(gc, d_config, domid, &args)) { > + LOG(ERROR, "setting domain memory map failed"); > + goto out; > + } > + > ret = hvm_build_set_params(ctx->xch, domid, info, state->store_port, > &state->store_mfn, state->console_port, > &state->console_mfn, state->store_domid, > diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h > index c0acf11..ae2f5e0 100644 > --- a/tools/libxl/libxl_internal.h > +++ b/tools/libxl/libxl_internal.h > @@ -3714,6 +3714,30 @@ static inline void libxl__update_config_vtpm(libxl__gc *gc, > */ > void libxl__bitmap_copy_best_effort(libxl__gc *gc, libxl_bitmap *dptr, > const libxl_bitmap *sptr); > + > +/* > + * Here we're just trying to set these kinds of e820 mappings: > + * > + * #1. Low memory region > + * > + * Low RAM starts at least from 1M to make sure all standard regions > + * of the PC memory map, like BIOS, VGA memory-mapped I/O and vgabios, > + * have enough space. > + * Note: Those stuffs below 1M are still constructed with multiple > + * e820 entries by hvmloader. At this point we don't change anything. > + * > + * #2. RDM region if it exists > + * > + * #3. High memory region if it exists > + * > + * Note: these regions are not overlapping since we already check > + * to adjust them. Please refer to libxl__domain_device_construct_rdm(). > + */ > +int libxl__domain_construct_e820(libxl__gc *gc, hidden Wei.