[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH 3/8] xl/parse: introduce cpu_topology to guest config
Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx> --- docs/man/xl.cfg.pod.5.in | 21 +++++++++++++++++++++ tools/libxl/libxl_types.idl | 7 +++++++ tools/xl/xl_parse.c | 19 +++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in index b7b91d8..8ff401e 100644 --- a/docs/man/xl.cfg.pod.5.in +++ b/docs/man/xl.cfg.pod.5.in @@ -501,6 +501,27 @@ Boot the guest using the OVMF UEFI firmware. Load the specified file as firmware for the guest. +=item B<cpu_topology="CPU_TOPOLOGY_SPEC"> + +Each B<CPU_TOPOLOGY_SPEC> is a comma-separated list of C<KEY=VALUE> +settings from the following list: + +=over 4 + +=item B<cores=NUMBER> +specify the number of cores in each socket. + +=item B<threads=NUMBER> +specify the number of threads in each core. + +=item B<real_threads=NUMBER> +specify the real number of threads in each core. This field can be used +to expose only part of threads in one core. For example, though the CPUID +instruction indicates that each core has two threads, but only one thread +of each core is exposed to the guest. + +=back + =back =head4 PVH guest options diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index a239324..8c80e67 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -457,6 +457,12 @@ libxl_altp2m_mode = Enumeration("altp2m_mode", [ (3, "limited"), ], init_val = "LIBXL_ALTP2M_MODE_DISABLED") +libxl_cpu_topology = Struct("cpu_topology", [ + ("cores", uint8), + ("threads", uint8), + ("real_threads", uint8), + ]) + libxl_domain_build_info = Struct("domain_build_info",[ ("max_vcpus", integer), ("avail_vcpus", libxl_bitmap), @@ -581,6 +587,7 @@ libxl_domain_build_info = Struct("domain_build_info",[ ("rdm", libxl_rdm_reserve), ("rdm_mem_boundary_memkb", MemKB), ("mca_caps", uint64), + ("cpu_topology", libxl_cpu_topology), ])), ("pv", Struct(None, [("kernel", string), ("slack_memkb", MemKB), diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index 9a692d5..9b76920 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -1373,6 +1373,25 @@ void parse_config_data(const char *config_source, */ } + if (!xlu_cfg_get_string(config, "cpu_topology", &buf, 0)) + { + char *buf2, *p, *oparg, *strtok_ptr; + + buf2 = strdup(buf); + + for (p = strtok_r(buf2, ",", &strtok_ptr); p; + p = strtok_r(NULL, ",", &strtok_ptr)) { + if (MATCH_OPTION("cores", p, oparg)) { + b_info->u.hvm.cpu_topology.cores = parse_ulong(oparg); + } else if (MATCH_OPTION("threads", p, oparg)) { + b_info->u.hvm.cpu_topology.threads = parse_ulong(oparg); + } else if (MATCH_OPTION("real_threads", p, oparg)) { + b_info->u.hvm.cpu_topology.real_threads = + parse_ulong(oparg); + } + } + } + break; case LIBXL_DOMAIN_TYPE_PVH: case LIBXL_DOMAIN_TYPE_PV: -- 1.8.3.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |