[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen staging] tools/libxl: Plumb domain_create_state down into libxl__build_pre()



commit aacc143006429de46932aabae17c13846c71fa45
Author:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Thu Jan 2 21:37:36 2020 +0000
Commit:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Thu Jan 16 19:26:09 2020 +0000

    tools/libxl: Plumb domain_create_state down into libxl__build_pre()
    
    To fix CPUID handling, libxl__build_pre() is going to have to distinguish
    between a brand new VM vs one which is being migrated-in/resumed.
    
    No functional change.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 tools/libxl/libxl_create.c   | 16 ++++++++--------
 tools/libxl/libxl_dm.c       |  5 +++--
 tools/libxl/libxl_dom.c      |  4 +++-
 tools/libxl/libxl_internal.h | 11 ++++-------
 4 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index 32d45dcef0..69fceff061 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -431,17 +431,17 @@ static void init_console_info(libxl__gc *gc,
        Only 'channels' when mapped to consoles have a string name. */
 }
 
-int libxl__domain_build(libxl__gc *gc,
-                        libxl_domain_config *d_config,
-                        uint32_t domid,
-                        libxl__domain_build_state *state)
+int libxl__domain_build(libxl__gc *gc, uint32_t domid,
+                        libxl__domain_create_state *dcs)
 {
+    libxl_domain_config *d_config = dcs->guest_config;
     libxl_domain_build_info *const info = &d_config->b_info;
+    libxl__domain_build_state *state = &dcs->build_state;
     char **vments = NULL, **localents = NULL;
     struct timeval start_time;
     int i, ret;
 
-    ret = libxl__build_pre(gc, domid, d_config, state);
+    ret = libxl__build_pre(gc, domid, dcs);
     if (ret)
         goto out;
 
@@ -1218,7 +1218,7 @@ static void domcreate_bootloader_done(libxl__egc *egc,
     dcs->sdss.callback = domcreate_devmodel_started;
 
     if (restore_fd < 0 && dcs->domid_soft_reset == INVALID_DOMID) {
-        rc = libxl__domain_build(gc, d_config, domid, state);
+        rc = libxl__domain_build(gc, domid, dcs);
         domcreate_rebuild_done(egc, dcs, rc);
         return;
     }
@@ -1244,7 +1244,7 @@ static void domcreate_bootloader_done(libxl__egc *egc,
         goto out;
     }
 
-    rc = libxl__build_pre(gc, domid, d_config, state);
+    rc = libxl__build_pre(gc, domid, dcs);
     if (rc)
         goto out;
 
@@ -1554,7 +1554,7 @@ static void domcreate_launch_dm(libxl__egc *egc, 
libxl__multidev *multidev,
 
         dcs->sdss.dm.guest_domid = domid;
         if (libxl_defbool_val(d_config->b_info.device_model_stubdomain))
-            libxl__spawn_stub_dm(egc, &dcs->sdss);
+            libxl__spawn_stub_dm(egc, dcs);
         else
             libxl__spawn_local_dm(egc, &dcs->sdss.dm);
 
diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c
index e92e412c1b..3f08ccad1b 100644
--- a/tools/libxl/libxl_dm.c
+++ b/tools/libxl/libxl_dm.c
@@ -2097,8 +2097,9 @@ char *libxl__stub_dm_name(libxl__gc *gc, const char 
*guest_name)
     return GCSPRINTF("%s-dm", guest_name);
 }
 
-void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss)
+void libxl__spawn_stub_dm(libxl__egc *egc, libxl__domain_create_state *dcs)
 {
+    libxl__stub_dm_spawn_state *sdss = &dcs->sdss;
     STATE_AO_GC(sdss->dm.spawn.ao);
     libxl_ctx *ctx = libxl__gc_owner(gc);
     int ret;
@@ -2197,7 +2198,7 @@ void libxl__spawn_stub_dm(libxl__egc *egc, 
libxl__stub_dm_spawn_state *sdss)
     if (ret)
         goto out;
     uint32_t dm_domid = sdss->pvqemu.guest_domid;
-    ret = libxl__domain_build(gc, dm_config, dm_domid, stubdom_state);
+    ret = libxl__domain_build(gc, dm_domid, dcs);
     if (ret)
         goto out;
 
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index cdb294ab8d..e0b6d4a8d3 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -387,9 +387,11 @@ static void hvm_set_conf_params(xc_interface *handle, 
uint32_t domid,
 }
 
 int libxl__build_pre(libxl__gc *gc, uint32_t domid,
-              libxl_domain_config *d_config, libxl__domain_build_state *state)
+                     libxl__domain_create_state *dcs)
 {
+    libxl_domain_config *d_config = dcs->guest_config;
     libxl_domain_build_info *const info = &d_config->b_info;
+    libxl__domain_build_state *state = &dcs->build_state;
     libxl_ctx *ctx = libxl__gc_owner(gc);
     char *xs_domid, *con_domid;
     int rc;
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
index ba8c9b41ab..d919f91882 100644
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -1389,8 +1389,7 @@ _hidden void 
libxl__domain_build_state_init(libxl__domain_build_state *s);
 _hidden void libxl__domain_build_state_dispose(libxl__domain_build_state *s);
 
 _hidden int libxl__build_pre(libxl__gc *gc, uint32_t domid,
-              libxl_domain_config * const d_config,
-              libxl__domain_build_state *state);
+                             libxl__domain_create_state *dcs);
 _hidden int libxl__build_post(libxl__gc *gc, uint32_t domid,
                libxl_domain_build_info *info, libxl__domain_build_state *state,
                char **vms_ents, char **local_ents);
@@ -1960,10 +1959,8 @@ _hidden int libxl__domain_make(libxl__gc *gc,
                                libxl__domain_build_state *state,
                                uint32_t *domid);
 
-_hidden int libxl__domain_build(libxl__gc *gc,
-                                libxl_domain_config *d_config,
-                                uint32_t domid,
-                                libxl__domain_build_state *state);
+_hidden int libxl__domain_build(libxl__gc *gc, uint32_t domid,
+                                libxl__domain_create_state *dcs);
 
 /* for device model creation */
 _hidden const char *libxl__domain_device_model(libxl__gc *gc,
@@ -4113,7 +4110,7 @@ typedef struct {
     libxl__xswait_state xswait;
 } libxl__stub_dm_spawn_state;
 
-_hidden void libxl__spawn_stub_dm(libxl__egc *egc, 
libxl__stub_dm_spawn_state*);
+_hidden void libxl__spawn_stub_dm(libxl__egc *egc, libxl__domain_create_state 
*dcs);
 
 _hidden char *libxl__stub_dm_name(libxl__gc *gc, const char * guest_name);
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.