From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH v2 26/30] tools/libxc: Expose the automatically generated cpu featuremask information Date: Fri, 5 Feb 2016 16:12:45 +0000 Message-ID: <20160205161245.GG23178@citrix.com> References: <1454679743-18133-1-git-send-email-andrew.cooper3@citrix.com> <1454679743-18133-27-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1454679743-18133-27-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Andrew Cooper Cc: Wei Liu , Ian Jackson , Ian Campbell , Xen-devel List-Id: xen-devel@lists.xenproject.org On Fri, Feb 05, 2016 at 01:42:19PM +0000, Andrew Cooper wrote: > Signed-off-by: Andrew Cooper > --- > CC: Ian Campbell > CC: Ian Jackson > CC: Wei Liu > > New in v2 > --- > tools/libxc/Makefile | 9 ++++++ > tools/libxc/include/xenctrl.h | 14 ++++++++ > tools/libxc/xc_cpuid_x86.c | 75 +++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 98 insertions(+) > > diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile > index 0a8614c..30de3fe 100644 > --- a/tools/libxc/Makefile > +++ b/tools/libxc/Makefile > @@ -145,6 +145,15 @@ $(eval $(genpath-target)) > > xc_private.h: _paths.h > > +ifeq ($(CONFIG_X86),y) > + > +_xc_cpuid_autogen.h: $(XEN_ROOT)/xen/include/public/arch-x86/cpufeatureset.h $(XEN_ROOT)/xen/tools/gen-cpuid.py > + $(PYTHON) $(XEN_ROOT)/xen/tools/gen-cpuid.py -i $^ -o $@.new I don't seem to see this file in tree or in this series. And I think ultimately that file should be maintained by x86 maintainers. > + $(call move-if-changed,$@.new,$@) > + > +build: _xc_cpuid_autogen.h > +endif > + > $(CTRL_LIB_OBJS) $(GUEST_LIB_OBJS) \ > $(CTRL_PIC_OBJS) $(GUEST_PIC_OBJS): xc_private.h > > diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h > index 5a7500a..1da372d 100644 > --- a/tools/libxc/include/xenctrl.h > +++ b/tools/libxc/include/xenctrl.h > @@ -2574,6 +2574,20 @@ int xc_psr_cat_get_l3_info(xc_interface *xch, uint32_t socket, > > int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, > uint32_t *nr_features, uint32_t *featureset); > + > +uint32_t xc_get_cpu_featureset_size(void); > + > +enum xc_static_cpu_featuremask { > + XC_FEATUREMASK_KNOWN, > + XC_FEATUREMASK_INVERTED, > + XC_FEATUREMASK_PV, > + XC_FEATUREMASK_HVM_SHADOW, > + XC_FEATUREMASK_HVM_HAP, > + XC_FEATUREMASK_DEEP_FEATURES, > +}; > +const uint32_t *xc_get_static_cpu_featuremask(enum xc_static_cpu_featuremask); > +const uint32_t *xc_get_feature_deep_deps(uint32_t feature); > + > #endif > > /* Compat shims */ > diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c > index 348cbdd..7ef37d2 100644 > --- a/tools/libxc/xc_cpuid_x86.c > +++ b/tools/libxc/xc_cpuid_x86.c > @@ -22,6 +22,7 @@ > #include > #include > #include "xc_private.h" > +#include "_xc_cpuid_autogen.h" > #include > #include > > @@ -60,6 +61,80 @@ int xc_get_cpu_featureset(xc_interface *xch, uint32_t index, > return ret; > } > > +uint32_t xc_get_cpu_featureset_size(void) > +{ > + return FEATURESET_NR_ENTRIES; > +} > + > +const uint32_t *xc_get_static_cpu_featuremask( > + enum xc_static_cpu_featuremask mask) I can only get a vague idea how these functions are supposed to work. I think I will leave this to hypervisor maintainers. Wei.