From: Roger Pau Monne Date: Fri, 2 Oct 2015 15:48:35 +0000 (+0200) Subject: libxc: introduce the notion of a container type X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~2416 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=20dd1725e6bc80cff3c1c7c1b0d842e7dc6d3754;p=xen.git libxc: introduce the notion of a container type Introduce the notion of a container type into xc_dom_image. This will be needed by later changes that will also use xc_dom_image in order to build HVM guests. Signed-off-by: Roger Pau Monné Reviewed-by: Andrew Cooper Acked-by: Wei Liu Cc: Ian Jackson Cc: Stefano Stabellini Cc: Ian Campbell Cc: Wei Liu --- diff --git a/tools/libxc/include/xc_dom.h b/tools/libxc/include/xc_dom.h index e794a1340d..30fa8c5e4a 100644 --- a/tools/libxc/include/xc_dom.h +++ b/tools/libxc/include/xc_dom.h @@ -177,6 +177,12 @@ struct xc_dom_image { struct xc_dom_arch *arch_hooks; /* allocate up to virt_alloc_end */ int (*allocate) (struct xc_dom_image * dom, xen_vaddr_t up_to); + + /* Container type (HVM or PV). */ + enum { + XC_DOM_PV_CONTAINER, + XC_DOM_HVM_CONTAINER, + } container_type; }; /* --- pluggable kernel loader ------------------------------------- */ diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c index f3962cd491..d306475eb6 100644 --- a/tools/libxc/xc_dom_x86.c +++ b/tools/libxc/xc_dom_x86.c @@ -1069,6 +1069,10 @@ int arch_setup_bootlate(struct xc_dom_image *dom) int xc_dom_feature_translated(struct xc_dom_image *dom) { + /* Guests running inside HVM containers are always auto-translated. */ + if ( dom->container_type == XC_DOM_HVM_CONTAINER ) + return 1; + return elf_xen_feature_get(XENFEAT_auto_translated_physmap, dom->f_active); } diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 4c7698c285..2b92d484ee 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -618,6 +618,7 @@ int libxl__build_pv(libxl__gc *gc, uint32_t domid, } dom->pvh_enabled = state->pvh_enabled; + dom->container_type = XC_DOM_PV_CONTAINER; LOG(DEBUG, "pv kernel mapped %d path %s", state->pv_kernel.mapped, state->pv_kernel.path);