|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] Revert "tools/dombuilder: Fix asymmetry when setting up console and xenstore rings"
commit cc2dc90434f6f75885eba6d8d2186951c56f550f
Author: Wei Liu <wei.liu2@xxxxxxxxxx>
AuthorDate: Mon Nov 6 14:52:20 2017 +0000
Commit: Wei Liu <wei.liu2@xxxxxxxxxx>
CommitDate: Mon Nov 6 14:52:20 2017 +0000
Revert "tools/dombuilder: Fix asymmetry when setting up console and
xenstore rings"
This reverts commit 87b0ae7e8277d2fa13486ce2e11a941e55f8df40.
Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
tools/libxc/include/xc_dom.h | 12 ++++--------
tools/libxc/xc_dom_arm.c | 2 +-
tools/libxc/xc_dom_boot.c | 39 ---------------------------------------
tools/libxc/xc_dom_compat_linux.c | 2 --
tools/libxc/xc_dom_core.c | 5 -----
tools/libxc/xc_dom_x86.c | 4 ----
tools/libxl/libxl_dom.c | 28 ++++++++++++++++++----------
tools/libxl/libxl_internal.h | 1 +
8 files changed, 24 insertions(+), 69 deletions(-)
diff --git a/tools/libxc/include/xc_dom.h b/tools/libxc/include/xc_dom.h
index a1c3de2..5907559 100644
--- a/tools/libxc/include/xc_dom.h
+++ b/tools/libxc/include/xc_dom.h
@@ -20,8 +20,6 @@
#include <xenguest.h>
#define INVALID_PFN ((xen_pfn_t)-1)
-#define INVALID_EVTCHN (~0u)
-#define INVALID_DOMID (~0)
#define X86_HVM_NR_SPECIAL_PAGES 8
#define X86_HVM_END_SPECIAL_REGION 0xff000u
@@ -106,16 +104,10 @@ struct xc_dom_image {
* Details for the toolstack-prepared rings.
*
* *_gfn fields are allocated by the domain builder.
- * *_{evtchn,domid} fields must be provided by the caller.
*/
xen_pfn_t console_gfn;
xen_pfn_t xenstore_gfn;
- unsigned int console_evtchn;
- unsigned int xenstore_evtchn;
- uint32_t console_domid;
- uint32_t xenstore_domid;
-
/*
* initrd parameters as specified in start_info page
* Depending on capabilities of the booted kernel this may be a virtual
@@ -173,6 +165,10 @@ struct xc_dom_image {
/* misc xen domain config stuff */
unsigned long flags;
+ unsigned int console_evtchn;
+ unsigned int xenstore_evtchn;
+ uint32_t console_domid;
+ uint32_t xenstore_domid;
xen_pfn_t shared_info_mfn;
xc_interface *xch;
diff --git a/tools/libxc/xc_dom_arm.c b/tools/libxc/xc_dom_arm.c
index 2134ce4..2fe75cd 100644
--- a/tools/libxc/xc_dom_arm.c
+++ b/tools/libxc/xc_dom_arm.c
@@ -99,7 +99,7 @@ static int alloc_magic_pages(struct xc_dom_image *dom)
dom->xenstore_gfn);
xc_hvm_param_set(dom->xch, dom->guest_domid, HVM_PARAM_MONITOR_RING_PFN,
base + MEMACCESS_PFN_OFFSET);
-
+ /* allocated by toolstack */
xc_hvm_param_set(dom->xch, dom->guest_domid, HVM_PARAM_CONSOLE_EVTCHN,
dom->console_evtchn);
xc_hvm_param_set(dom->xch, dom->guest_domid, HVM_PARAM_STORE_EVTCHN,
diff --git a/tools/libxc/xc_dom_boot.c b/tools/libxc/xc_dom_boot.c
index 75836bd..bbf98b6 100644
--- a/tools/libxc/xc_dom_boot.c
+++ b/tools/libxc/xc_dom_boot.c
@@ -163,42 +163,6 @@ void *xc_dom_boot_domU_map(struct xc_dom_image *dom,
xen_pfn_t pfn,
return ptr;
}
-static int xc_dom_check_required_fields(struct xc_dom_image *dom)
-{
- int rc = 0;
-
- if ( dom->console_evtchn == INVALID_EVTCHN )
- {
- xc_dom_panic(dom->xch, XC_INVALID_PARAM,
- "%s: Caller didn't set dom->console_evtchn", __func__);
- rc = -1;
- }
- if ( dom->console_domid == INVALID_DOMID )
- {
- xc_dom_panic(dom->xch, XC_INVALID_PARAM,
- "%s: Caller didn't set dom->console_domid", __func__);
- rc = -1;
- }
-
- if ( dom->xenstore_evtchn == INVALID_EVTCHN )
- {
- xc_dom_panic(dom->xch, XC_INVALID_PARAM,
- "%s: Caller didn't set dom->xenstore_evtchn", __func__);
- rc = -1;
- }
- if ( dom->xenstore_domid == INVALID_DOMID )
- {
- xc_dom_panic(dom->xch, XC_INVALID_PARAM,
- "%s: Caller didn't set dom->xenstore_domid", __func__);
- rc = -1;
- }
-
- if ( rc )
- errno = EINVAL;
-
- return rc;
-}
-
int xc_dom_boot_image(struct xc_dom_image *dom)
{
xc_dominfo_t info;
@@ -206,9 +170,6 @@ int xc_dom_boot_image(struct xc_dom_image *dom)
DOMPRINTF_CALLED(dom->xch);
- if ( (rc = xc_dom_check_required_fields(dom)) != 0 )
- return rc;
-
/* misc stuff*/
if ( (rc = dom->arch_hooks->bootearly(dom)) != 0 )
return rc;
diff --git a/tools/libxc/xc_dom_compat_linux.c
b/tools/libxc/xc_dom_compat_linux.c
index 2ad43e4..6d27ec2 100644
--- a/tools/libxc/xc_dom_compat_linux.c
+++ b/tools/libxc/xc_dom_compat_linux.c
@@ -61,9 +61,7 @@ int xc_linux_build(xc_interface *xch, uint32_t domid,
dom->flags |= flags;
dom->console_evtchn = console_evtchn;
- dom->console_domid = 0;
dom->xenstore_evtchn = store_evtchn;
- dom->xenstore_domid = 0;
if ( (rc = xc_dom_boot_xen_init(dom, xch, domid)) != 0 )
goto out;
diff --git a/tools/libxc/xc_dom_core.c b/tools/libxc/xc_dom_core.c
index 7087c50..b5f316a 100644
--- a/tools/libxc/xc_dom_core.c
+++ b/tools/libxc/xc_dom_core.c
@@ -779,11 +779,6 @@ struct xc_dom_image *xc_dom_allocate(xc_interface *xch,
dom->parms.elf_paddr_offset = UNSET_ADDR;
dom->parms.p2m_base = UNSET_ADDR;
- dom->console_evtchn = INVALID_EVTCHN;
- dom->xenstore_evtchn = INVALID_EVTCHN;
- dom->console_domid = INVALID_DOMID;
- dom->xenstore_domid = INVALID_DOMID;
-
dom->flags = SIF_VIRT_P2M_4TOOLS;
dom->alloc_malloc += sizeof(*dom);
diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c
index e26857d..c74fb96 100644
--- a/tools/libxc/xc_dom_x86.c
+++ b/tools/libxc/xc_dom_x86.c
@@ -617,8 +617,6 @@ static int alloc_magic_pages_hvm(struct xc_dom_image *dom)
dom->xenstore_gfn = special_pfn(SPECIALPAGE_XENSTORE);
xc_clear_domain_page(dom->xch, dom->guest_domid, dom->xenstore_gfn);
xc_hvm_param_set(xch, domid, HVM_PARAM_STORE_PFN, dom->xenstore_gfn);
- xc_hvm_param_set(dom->xch, dom->guest_domid, HVM_PARAM_STORE_EVTCHN,
- dom->xenstore_evtchn);
xc_hvm_param_set(xch, domid, HVM_PARAM_BUFIOREQ_PFN,
special_pfn(SPECIALPAGE_BUFIOREQ));
@@ -628,8 +626,6 @@ static int alloc_magic_pages_hvm(struct xc_dom_image *dom)
dom->console_gfn = special_pfn(SPECIALPAGE_CONSOLE);
xc_clear_domain_page(dom->xch, dom->guest_domid, dom->console_gfn);
xc_hvm_param_set(xch, domid, HVM_PARAM_CONSOLE_PFN, dom->console_gfn);
- xc_hvm_param_set(dom->xch, dom->guest_domid, HVM_PARAM_CONSOLE_EVTCHN,
- dom->console_evtchn);
xc_hvm_param_set(xch, domid, HVM_PARAM_PAGING_RING_PFN,
special_pfn(SPECIALPAGE_PAGING));
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index fcdeef0..0389a06 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -862,10 +862,14 @@ out:
}
static int hvm_build_set_params(xc_interface *handle, uint32_t domid,
- libxl_domain_build_info *info)
+ libxl_domain_build_info *info,
+ int store_evtchn, unsigned long *store_mfn,
+ int console_evtchn, unsigned long *console_mfn,
+ domid_t store_domid, domid_t console_domid)
{
struct hvm_info_table *va_hvm;
uint8_t *va_map, sum;
+ uint64_t str_mfn, cons_mfn;
int i;
if (info->type == LIBXL_DOMAIN_TYPE_HVM) {
@@ -886,6 +890,15 @@ static int hvm_build_set_params(xc_interface *handle,
uint32_t domid,
munmap(va_map, XC_PAGE_SIZE);
}
+ xc_hvm_param_get(handle, domid, HVM_PARAM_STORE_PFN, &str_mfn);
+ xc_hvm_param_get(handle, domid, HVM_PARAM_CONSOLE_PFN, &cons_mfn);
+ xc_hvm_param_set(handle, domid, HVM_PARAM_STORE_EVTCHN, store_evtchn);
+ xc_hvm_param_set(handle, domid, HVM_PARAM_CONSOLE_EVTCHN, console_evtchn);
+
+ *store_mfn = str_mfn;
+ *console_mfn = cons_mfn;
+
+ xc_dom_gnttab_hvm_seed(handle, domid, *console_mfn, *store_mfn,
console_domid, store_domid);
return 0;
}
@@ -1146,11 +1159,6 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
dom->container_type = XC_DOM_HVM_CONTAINER;
- dom->console_evtchn = state->console_port;
- dom->console_domid = state->console_domid;
- dom->xenstore_evtchn = state->store_port;
- dom->xenstore_domid = state->store_domid;
-
/* The params from the configuration file are in Mb, which are then
* multiplied by 1 Kb. This was then divided off when calling
* the old xc_hvm_build_target_mem() which then turned them to bytes.
@@ -1255,7 +1263,10 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
goto out;
}
- rc = hvm_build_set_params(ctx->xch, domid, info);
+ rc = hvm_build_set_params(ctx->xch, domid, info, state->store_port,
+ &state->store_mfn, state->console_port,
+ &state->console_mfn, state->store_domid,
+ state->console_domid);
if (rc != 0) {
LOG(ERROR, "hvm build set params failed");
goto out;
@@ -1267,9 +1278,6 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
goto out;
}
- state->console_mfn = dom->console_gfn;
- state->store_mfn = dom->xenstore_gfn;
-
xc_dom_release(dom);
return 0;
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index adb3627..bfa95d8 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -117,6 +117,7 @@
#define STUBDOM_SPECIAL_CONSOLES 3
#define TAP_DEVICE_SUFFIX "-emu"
#define DOMID_XS_PATH "domid"
+#define INVALID_DOMID ~0
/* Size macros. */
#define __AC(X,Y) (X##Y)
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |