All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>, Wei Liu <wei.liu2@citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>
Subject: [PATCH 10/12] tools/xl: add support for setting generic per-domain parameters
Date: Tue, 18 Sep 2018 08:03:07 +0200	[thread overview]
Message-ID: <20180918060309.7186-11-jgross@suse.com> (raw)
In-Reply-To: <20180918060309.7186-1-jgross@suse.com>

Add a new xl command "domain-set-parameters" and domain config file
support for setting per-domain generic parameters.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 docs/man/xl.cfg.pod.5.in    | 12 ++++++++++++
 docs/man/xl.pod.1.in        | 19 ++++++++++++++++++
 tools/libxl/libxl.h         | 10 ++++++++++
 tools/libxl/libxl_create.c  | 10 ++++++++++
 tools/libxl/libxl_domain.c  | 47 +++++++++++++++++++++++++++++++++++++++++++++
 tools/libxl/libxl_types.idl |  1 +
 tools/xl/xl.h               |  1 +
 tools/xl/xl_cmdtable.c      |  6 ++++++
 tools/xl/xl_parse.c         |  3 +++
 tools/xl/xl_vmcontrol.c     | 25 ++++++++++++++++++++++++
 10 files changed, 134 insertions(+)

diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in
index b72718151b..c97ae77129 100644
--- a/docs/man/xl.cfg.pod.5.in
+++ b/docs/man/xl.cfg.pod.5.in
@@ -604,6 +604,18 @@ option should only be used with a trusted device tree.
 Note that the partial device tree should avoid using the phandle 65000
 which is reserved by the toolstack.
 
+=item B<parameters="PARAMS">
+
+Specifies generic parameters for the domain. C<PARAMS> is a list of
+parameter settings in the form of "name[=value]" separated by blanks.
+The following parameter settings are supported:
+
+=over 4
+
+NONE
+
+=back
+
 =back
 
 =head2 Devices
diff --git a/docs/man/xl.pod.1.in b/docs/man/xl.pod.1.in
index a2ddc4b2e0..7ab3e304d7 100644
--- a/docs/man/xl.pod.1.in
+++ b/docs/man/xl.pod.1.in
@@ -263,6 +263,25 @@ using a hardware domain separated from domain 0.
 
 =back
 
+=item B<domain-set-parameters> [I<OPTIONS>] I<domain-id> I<params>
+
+Sets generic parameters I<params> for I<domain-id>.
+
+See the L<xl.cfg(5)> manpage for supported parameters.
+
+B<OPTIONS>
+
+=over 4
+
+=item I<-t>
+
+Set the parameter only temporary. The parameter isn't added to the domain
+config data, so it won't persist across migration or domain save/restore.
+
+=back
+
+=back
+
 =item B<domid> I<domain-name>
 
 Converts a domain name to a domain id.
diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h
index bd26d9fd4a..a3c87407a5 100644
--- a/tools/libxl/libxl.h
+++ b/tools/libxl/libxl.h
@@ -1164,6 +1164,13 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst, const libxl_mac *src);
  */
 #define LIBXL_HAVE_PVCALLS 1
 
+/*
+ * LIBXL_HAVE_DOMAIN_SET_PARAMETERS
+ *
+ * If this is defined setting per-domain parameters is supported.
+ */
+#define LIBXL_HAVE_DOMAIN_SET_PARAMETERS 1
+
 /*
  * LIBXL_HAVE_CPUPOOL_SET_PARAMETERS
  *
@@ -1554,6 +1561,9 @@ int libxl_domain_destroy(libxl_ctx *ctx, uint32_t domid,
                          LIBXL_EXTERNAL_CALLERS_ONLY;
 int libxl_domain_preserve(libxl_ctx *ctx, uint32_t domid, libxl_domain_create_info *info, const char *name_suffix, libxl_uuid new_uuid);
 
+int libxl_domain_set_parameters(libxl_ctx *ctx, uint32_t domid, char *params,
+                                bool temp);
+
 /* get max. number of cpus supported by hypervisor */
 int libxl_get_max_cpus(libxl_ctx *ctx);
 
diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index dcfde7787e..1eb0e8f639 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -597,6 +597,16 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config,
             goto out;
         }
 
+        if (d_config->b_info.parameters) {
+            ret = xc_set_domain_parameters(ctx->xch, *domid,
+                                           d_config->b_info.parameters);
+            if (ret < 0) {
+                LOGED(ERROR, *domid, "fail to set domain parameters");
+                rc = ERROR_FAIL;
+                goto out;
+            }
+        }
+
         rc = libxl__arch_domain_save_config(gc, d_config, state, &create);
         if (rc < 0)
             goto out;
diff --git a/tools/libxl/libxl_domain.c b/tools/libxl/libxl_domain.c
index 3377bba994..e0f78ac489 100644
--- a/tools/libxl/libxl_domain.c
+++ b/tools/libxl/libxl_domain.c
@@ -1773,6 +1773,53 @@ out:
     return rc;
 }
 
+int libxl_domain_set_parameters(libxl_ctx *ctx, uint32_t domid, char *params,
+                                bool temp)
+{
+    libxl__domain_userdata_lock *lock = NULL;
+    libxl_domain_config d_config;
+    GC_INIT(ctx);
+    int rc;
+
+    libxl_domain_config_init(&d_config);
+
+    rc = xc_set_domain_parameters(ctx->xch, domid, params);
+    if (rc) {
+        LOGEV(ERROR, rc, "Error setting domain parameters");
+        rc = ERROR_FAIL;
+        goto out;
+    }
+
+    if (!temp) {
+        lock = libxl__lock_domain_userdata(gc, domid);
+        if (!lock) {
+            rc = ERROR_LOCK_FAIL;
+            goto out;
+        }
+
+        rc = libxl__get_domain_configuration(gc, domid, &d_config);
+        if (rc) goto out;
+
+        if (d_config.b_info.parameters) {
+            d_config.b_info.parameters =
+                libxl__realloc(gc, d_config.b_info.parameters,
+                               strlen(d_config.b_info.parameters) +
+                               strlen(params) + 2);
+            strcat(d_config.b_info.parameters, " ");
+            strcat(d_config.b_info.parameters, params);
+        } else
+            d_config.b_info.parameters = libxl__strdup(gc, params);
+
+        rc = libxl__set_domain_configuration(gc, domid, &d_config);
+    }
+
+out:
+    if (lock) libxl__unlock_domain_userdata(lock);
+    libxl_domain_config_dispose(&d_config);
+    GC_FREE;
+    return rc;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index 2cceb8c057..382a6c1d6e 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -488,6 +488,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
 
     ("max_grant_frames",    uint32, {'init_val': 'LIBXL_MAX_GRANT_FRAMES_DEFAULT'}),
     ("max_maptrack_frames", uint32, {'init_val': 'LIBXL_MAX_MAPTRACK_FRAMES_DEFAULT'}),
+    ("parameters",      string),
     
     ("device_model_version", libxl_device_model_version),
     ("device_model_stubdomain", libxl_defbool),
diff --git a/tools/xl/xl.h b/tools/xl/xl.h
index a51acc4256..3153a35f22 100644
--- a/tools/xl/xl.h
+++ b/tools/xl/xl.h
@@ -151,6 +151,7 @@ int main_sched_credit2(int argc, char **argv);
 int main_sched_rtds(int argc, char **argv);
 int main_domid(int argc, char **argv);
 int main_domname(int argc, char **argv);
+int main_domainsetparameters(int argc, char **argv);
 int main_rename(int argc, char **argv);
 int main_trigger(int argc, char **argv);
 int main_sysrq(int argc, char **argv);
diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c
index 3a469dacc3..41e5bd27a3 100644
--- a/tools/xl/xl_cmdtable.c
+++ b/tools/xl/xl_cmdtable.c
@@ -285,6 +285,12 @@ struct cmd_spec cmd_table[] = {
       "-b BUDGET, --budget=BUDGET     Budget (us)\n"
       "-e Extratime, --extratime=Extratime Extratime (1=yes, 0=no)\n"
     },
+    { "domain-set-parameters",
+      &main_domainsetparameters, 0, 1,
+      "Sets generic parameters for a domain",
+      "[-t] <Domain> <Params>",
+      "  -t                           Set parameter only temporary",
+    },
     { "domid",
       &main_domid, 0, 0,
       "Convert a domain name to domain id",
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 971ec1bc56..0a6fe141b9 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1558,6 +1558,9 @@ void parse_config_data(const char *config_source,
 
     xlu_cfg_get_defbool(config, "nestedhvm", &b_info->nested_hvm, 0);
 
+    if (!xlu_cfg_get_string (config, "parameters", &buf, 0))
+        xlu_cfg_replace_string(config, "parameters", &b_info->parameters, 0);
+
     switch(b_info->type) {
     case LIBXL_DOMAIN_TYPE_HVM:
         kernel_basename = libxl_basename(b_info->kernel);
diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c
index a1d633795c..8fa2338621 100644
--- a/tools/xl/xl_vmcontrol.c
+++ b/tools/xl/xl_vmcontrol.c
@@ -275,6 +275,31 @@ int main_reboot(int argc, char **argv)
     return main_shutdown_or_reboot(1, argc, argv);
 }
 
+int main_domainsetparameters(int argc, char **argv)
+{
+    int opt;
+    char *params;
+    uint32_t domid;
+    bool temp = false;
+
+    SWITCH_FOREACH_OPT(opt, "t", NULL, "domain-set-parameters", 2) {
+    case 't':
+        temp = true;
+        break;
+    }
+
+    domid = find_domain(argv[optind]);
+    params = argv[++optind];
+
+    if (libxl_domain_set_parameters(ctx, domid, params, temp)) {
+        fprintf(stderr, "cannot set parameters: %s\n", params);
+        fprintf(stderr, "Use \"xl dmesg\" to look for possible reason.\n");
+        return EXIT_FAILURE;
+    }
+
+    return EXIT_SUCCESS;
+}
+
 static void evdisable_disk_ejects(libxl_evgen_disk_eject **diskws,
                                  int num_disks)
 {
-- 
2.16.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  parent reply	other threads:[~2018-09-18  6:03 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-18  6:02 [PATCH 00/12] add per-domain and per-cpupool generic parameters Juergen Gross
2018-09-18  6:02 ` [PATCH 01/12] xen: use macros for filling parameter definition blocks Juergen Gross
2018-09-26 15:32   ` Dario Faggioli
2018-10-04 15:37   ` Jan Beulich
2018-09-18  6:02 ` [PATCH 02/12] xen: use a structure to define parsing parameters Juergen Gross
2018-09-26 15:17   ` Dario Faggioli
2018-10-04 15:40   ` Jan Beulich
2018-09-18  6:03 ` [PATCH 03/12] xen: add support for parameter scopes Juergen Gross
2018-09-18  6:03 ` [PATCH 04/12] xen: add a generic flags field to parameter definitions Juergen Gross
2018-09-18  6:03 ` [PATCH 05/12] xen: add hypercall interfaces for domain and cpupool parameter setting Juergen Gross
2018-09-18 21:23   ` Daniel De Graaf
2018-09-19  5:14     ` Juergen Gross
2018-09-26 17:06   ` Dario Faggioli
2018-09-18  6:03 ` [PATCH 06/12] xen: add domain specific parameter support Juergen Gross
2018-09-18  6:03 ` [PATCH 07/12] " Juergen Gross
2018-09-26 16:58   ` Dario Faggioli
2018-09-18  6:03 ` [PATCH 08/12] tools/libxc: add per domain/cpupool " Juergen Gross
2018-09-18  6:03 ` [PATCH 09/12] tools/xl: add support for setting generic per-cpupool parameters Juergen Gross
2018-09-26 17:17   ` Dario Faggioli
2018-09-27  5:14     ` Juergen Gross
2018-09-18  6:03 ` Juergen Gross [this message]
2018-09-18  6:03 ` [PATCH 11/12] x86: add domain type flags for domain parameters Juergen Gross
2018-09-18  6:03 ` [PATCH 12/12] x86/xpti: add per-domain parameter for controlling xpti Juergen Gross
2018-09-18 10:32 ` [PATCH 00/12] add per-domain and per-cpupool generic parameters Jan Beulich
2018-09-18 11:10   ` Juergen Gross
     [not found]     ` <5?==?UTF-8?Q?BA0DF9602000078001=3d=3fUTF-8=3fQ=3fE9448@suse.com>
     [not found]       ` <6d56ad90-782?==?UTF-8?Q?5-adb7-f4e5-6c3ceb3210f6@suse.com>
     [not found]         ` <001ab73a-078d-4ec1-4acd-2fb43?==?UTF-8?Q?89e8867@citrix.com>
2018-09-18 11:18     ` George Dunlap
2018-09-18 11:30       ` Juergen Gross
2018-09-18 11:20     ` Jan Beulich
     [not found]     ` <5?= =?UTF-8?Q?BA0DF9602000078001=3d=3fUTF-8=3fQ=3fE9448@suse.com>
     [not found]       ` <6d56ad90-782?= =?UTF-8?Q?5-adb7-f4e5-6c3ceb3210f6@suse.com>
     [not found]         ` <001ab73a-078d-4ec1-4acd-2fb43?= =?UTF-8?Q?89e8867@citrix.com>
     [not found]           ` <20180919172818.3aksiju4s3ipw42p@zion.uk.xens?= =?UTF-8?Q?ource.com>
2018-09-19 17:58             ` Juergen Gross
     [not found]               ` <20180920160629.j?==?UTF-8?Q?ullgb435zi7bcbr@zi=3d=3fUTF-8=3fQ=3fon.uk.xensource.com>
     [not found]                 ` <eba521d?==?UTF-8?Q?2-f6c5-5096-82c2-af5983ed2372@suse.com>
2018-09-20 16:06               ` Wei Liu
     [not found]               ` <20180920160629.j?= =?UTF-8?Q?ullgb435zi7bcbr@zi=3d=3fUTF-8=3fQ=3fon.uk.xensource.com>
     [not found]                 ` <eba521d?= =?UTF-8?Q?2-f6c5-5096-82c2-af5983ed2372@suse.com>
     [not found]                   ` <20180921085240.dqzt5pomt?= =?UTF-8?Q?nfjs665@zion.uk.xensource.com>
2018-09-27  5:58                     ` Juergen Gross
2018-10-03 10:58                       ` Wei Liu
     [not found] ` <5BA0D44602000078001E93EA@suse.com>
2018-09-18 11:02   ` Juergen Gross
2018-09-18 11:19     ` Jan Beulich
2018-09-18 11:20       ` George Dunlap
2018-09-18 11:23         ` Jan Beulich
2018-09-18 11:29           ` George Dunlap
2018-09-18 11:34             ` Juergen Gross
2018-09-18 11:52             ` Jan Beulich
2018-09-18 11:24         ` Juergen Gross
     [not found]   ` <f8bc94ca-9eee-a5a2-5c32-0c?= =?UTF-8?Q?a1ed0cbf5d@suse.com>
     [not found]     ` <5BA0DF3702000078001E9444@suse.com>
2018-09-18 11:26       ` Juergen Gross
2018-09-18 11:47         ` Jan Beulich
     [not found]   ` <f8bc94ca=ef=bf=bd9eee?= =?UTF-8?B?77+9YTVhMu+/vTVjMzLvv70wY2ExZWQwY2JmNWRAc3VzZS5jb20+IDw1QkEwREYz?= =?UTF-8?Q?702000078001E9444@prv1=ef=bf=bdmh.provo.novell.com>
     [not found]     ` <78501912-e58?= =?UTF-8?Q?6-faa9-3569-3b2fd2fef9f5@citrix.com>
     [not found]       ` <5BA0E01902000078001E9468@su?= =?UTF-8?Q?se.com>
2018-09-18 11:28         ` Juergen Gross
     [not found] <20180918060309.7186=ef=bf=bd1=ef=bf=bdjgross@suse.com?= =?UTF-8?Q?>
     [not found] ` <5BA0D44602000078001E93EA@prv1=ef=bf=bdmh.provo.novell.com>
     [not found]   ` <7c?==?UTF-8?Q?b2a460-095c-27c8-a4cf-47ef8e7850d5@suse.com>
     [not found]   ` <7c?= =?UTF-8?Q?b2a460-095c-27c8-a4cf-47ef8e7850d5@suse.com>
     [not found]     ` <5BA0DF9602000078001?= =?UTF-8?Q?E9448@suse.com>
2018-09-18 11:32       ` Juergen Gross
     [not found]         ` <001ab73a-07?==?UTF-8?Q?8d-4ec1-4acd-2fb4389e8867@citrix.com>
     [not found]           ` <20180919172818.3aksiju4s3i?==?UTF-8?Q?pw42p@zion.uk.xens=3d=3fUTF-8=3fQ=3fource.com>
     [not found]             ` <fffd7e59-e437-8ed?==?UTF-8?Q?9-b228-b537fde050cd@suse.com>
2018-09-18 13:25         ` George Dunlap
2018-09-19 17:28           ` Wei Liu
     [not found]         ` <?= =?UTF-8?Q?001ab73a-078d-4ec1-4acd-2fb4389e8867@citrix.com>
2018-09-18 13:36           ` Juergen Gross
     [not found]           ` <0a89246d-00a6-d?= =?UTF-8?Q?04a-4bce-3f0b98839d39@suse.com>
2018-09-18 13:57             ` George Dunlap
2018-09-26 15:10               ` Dario Faggioli
     [not found]             ` <d698d8c9-2582-6314-10cb-ecb9535f?= =?UTF-8?Q?62e0@citrix.com>
2018-09-18 14:57               ` Juergen Gross
2018-09-18 15:21                 ` George Dunlap
     [not found]               ` <7785b4d9724db9224ca8bed58d0f061ce1d67b71.camel@?= =?UTF-8?Q?suse.com>
2018-09-27  6:10                 ` Juergen Gross
     [not found]         ` <001ab73a-07?= =?UTF-8?Q?8d-4ec1-4acd-2fb4389e8867@citrix.com>
     [not found]           ` <20180919172818.3aksiju4s3i?= =?UTF-8?Q?pw42p@zion.uk.xens=3d=3fUTF-8=3fQ=3fource.com>
     [not found]             ` <fffd7e59-e437-8ed?= =?UTF-8?Q?9-b228-b537fde050cd@suse.com>
     [not found]               ` <20180920160629.jullgb435zi7bcbr@zi?= =?UTF-8?Q?on.uk.xensource.com>
2018-09-21  5:23                 ` Juergen Gross
2018-09-21  8:52                   ` Wei Liu
2018-09-26 17:30                     ` Dario Faggioli
2018-10-03 11:00                       ` Wei Liu
2018-10-03 11:07                         ` Juergen Gross
2018-10-03 11:27                           ` Wei Liu
     [not found] <7cb2a460-095c-27c8-a4cf-47ef8e7?=850d5@suse.com>
     [not found] <20180918060309.7186=3def=3dbf=3dbd1=3def=3dbf=3dbdjgr?= =?UTF-8?Q?oss@suse.com=3f=3d>
     [not found] <20180918060309.7186=3d3def=3d3dbf=3d3dbd1=3d3def=3d3d?= =?UTF-8?Q?bf=3d3dbdjgr=3f=3doss@suse.com=3f=3d>
     [not found] ` <5BA0D44602000078001E93EA@p?= =?UTF-8?Q?rv1=ef=bf=bdmh.provo.novell.com>
     [not found]   ` <7cb2a460-095c-27c8-a4cf-47ef8e7?= =?UTF-8?Q?850d5@suse.com>
     [not found] <7cb2a460-095c-2?==?UTF-8?Q?7c8-a4cf-47ef8e7850d5@suse.com>
     [not found] ` <5BA0DF9602000078001=3d=3fUTF-8?==?UTF-8?Q?=3fQ=3fE9448@suse.com>
     [not found] <20180918060309.7186=3d3def=3d3dbf=3d3dbd1=3d3def=3d3d?==?UTF-8?Q?bf=3d3dbdjgr=3f=3doss@suse.com=3f=3d>
     [not found] ` <5BA0D44602000078001E93EA@p?==?UTF-8?Q?rv1=ef=bf=bdmh.provo.novell.com>
     [not found]   ` <7cb2a460-095c-27c8-a4cf-47ef8e7?==?UTF-8?Q?850d5@suse.com>
     [not found] <20180918060309.7186=3def=3dbf=3dbd1=3def=3dbf=3dbdjgr?==?UTF-8?Q?oss@suse.com=3f=3d>
     [not found] <20180918060309.7186=3d3d3def=3d3d3dbf=3d3d3dbd1=3d3d3?= =?UTF-8?Q?def=3d3d3d=3f=3dbf=3d3dbdjgr=3f=3doss@suse.com=3f=3d>
     [not found] ` <5BA0D44602?= =?UTF-8?Q?000078001E93EA@prv1=ef=bf=bdmh.provo.novell.com>
     [not found]   ` <7cb2a460-095c-2?= =?UTF-8?Q?7c8-a4cf-47ef8e7850d5@suse.com>
     [not found]     ` <5BA0DF9602000078001=3d=3fUTF-8?= =?UTF-8?Q?=3fQ=3fE9448@suse.com>

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=20180918060309.7186-11-jgross@suse.com \
    --to=jgross@suse.com \
    --cc=ian.jackson@eu.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.