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.coop...@citrix.com> > --- > CC: Ian Campbell <ian.campb...@citrix.com> > CC: Ian Jackson <ian.jack...@eu.citrix.com> > CC: Wei Liu <wei.l...@citrix.com> > --- > .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@lists.xen.org http://lists.xen.org/xen-devel