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

Re: [Xen-devel] [PATCH RFC 12/31] tools: Utility for dealing with featuresets



On Wed, 2015-12-16 at 21:24 +0000, Andrew Cooper wrote:
> It is able to reports the current featuresets; both the static masks and
> dynamic featuresets from Xen, or to decode an arbitrary featureset into
> `/proc/cpuinfo` style strings.

More than adding a utility does this not also arrange for a whole bunch of
new functionality to be compiled into libxc? That's worth mentioning here.

And doesn't it do so in a non-library namespaced way (e.g.
withÂcalculate_featuresets() and decode_featureset() being exposed by the
library)?

Granted there's lots of that sort of thing already, but should we really be
making it worse?

libelf avoids this by namespacing itself as a quasi-standalone library in
both the tools and hypervisor contexts.

> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> ---
> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> CC: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
> Â.gitignoreÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂÂ1 +
> Âtools/libxc/MakefileÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂÂ6 +
> Âtools/misc/MakefileÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ|ÂÂÂ6 +
> Âtools/misc/xen-cpuid.cÂÂÂÂÂÂÂÂÂÂÂÂÂ| 392
> +++++++++++++++++++++++++++++++++++++
> Âxen/arch/x86/cpuid/cpuid-private.h |ÂÂÂ9 +-
> Â5 files changed, 413 insertions(+), 1 deletion(-)
> Âcreate mode 100644 tools/misc/xen-cpuid.c
> 
> diff --git a/.gitignore b/.gitignore
> index 9ead7c4..63944b5 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -167,6 +167,7 @@ tools/misc/cpuperf/cpuperf-perfcntr
> Âtools/misc/cpuperf/cpuperf-xen
> Âtools/misc/xc_shadow
> Âtools/misc/xen_cpuperf
> +tools/misc/xen-cpuid
> Âtools/misc/xen-detect
> Âtools/misc/xen-tmem-list-parse
> Âtools/misc/xenperf
> diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile
> index a0f899b..83547e1 100644
> --- a/tools/libxc/Makefile
> +++ b/tools/libxc/Makefile
> @@ -79,6 +79,12 @@ GUEST_SRCS-y += $(ELF_SRCS-y)
> Â$(patsubst %.c,%.o,$(ELF_SRCS-y)): CFLAGS += -Wno-pointer-sign
> Â$(patsubst %.c,%.opic,$(ELF_SRCS-y)): CFLAGS += -Wno-pointer-sign
> Â
> +ifeq ($(CONFIG_X86),y)
> +vpath %.c ../../xen/arch/x86/cpuid
> +CFLAGS += -I../../xen/arch/x86/cpuid
> +CTRL_SRCS-y += cpuid.c
> +endif
> +
> Â# new domain builder
> ÂGUEST_SRCS-yÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ+= xc_dom_core.c xc_dom_boot.c
> ÂGUEST_SRCS-yÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ+= xc_dom_elfloader.c
> diff --git a/tools/misc/Makefile b/tools/misc/Makefile
> index c4490f3..eb7649d 100644
> --- a/tools/misc/Makefile
> +++ b/tools/misc/Makefile
> @@ -9,6 +9,7 @@ CFLAGS += $(CFLAGS_xeninclude)
> ÂCFLAGS += $(CFLAGS_libxenstore)
> Â
> Â# Everything to be installed in regular bin/
> +INSTALL_BIN-$(CONFIG_X86)ÂÂÂÂÂÂ+= xen-cpuid
> ÂINSTALL_BIN-$(CONFIG_X86)ÂÂÂÂÂÂ+= xen-detect
> ÂINSTALL_BINÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ+= xencons
> ÂINSTALL_BINÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ+= xencov_split
> @@ -67,6 +68,11 @@ clean:
> Â.PHONY: distclean
> Âdistclean: clean
> Â
> +xen-cpuid.o: CFLAGS += -I$(XEN_ROOT)/xen/arch/x86/cpuid
> +xen-cpuid.o: CFLAGS += -I$(XEN_ROOT)/tools/libxc
> +xen-cpuid: xen-cpuid.o
> +     $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS)
> +
> Âxen-hvmctx: xen-hvmctx.o
> Â     $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS)
> Â
> diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c
> new file mode 100644
> index 0000000..e0cd6bb
> --- /dev/null
> +++ b/tools/misc/xen-cpuid.c
> @@ -0,0 +1,392 @@
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <err.h>
> +#include <getopt.h>
> +#include <string.h>
> +
> +#include <xenctrl.h>
> +#include "cpuid-private.h"
> +
> +static uint32_t nr_features = XEN_NR_FEATURESET_ENTRIES;
> +
> +static const char *str_1d[32] =

If these are to be Xen's names could they come from the common cpuid
location such that other users of these interfaces (including Xen itself)
can use consistent names?

(and then naturally be part of the autogeneration which has been discussed)
> + option_error:
> +ÂÂÂÂÂÂÂÂÂÂÂÂprintf("Usage: %s [ info | detail | <featureset>* ]\n", argv[0]);

What format does <featureset> take?


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

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