-----Original Message-----
> Date: Fri, 01 Dec 2017 09:52:26 +0100
> From: Thomas Monjalon <tho...@monjalon.net>
> To: Jerin Jacob <jerin.ja...@caviumnetworks.com>
> Cc: dev@dpdk.org, chao...@linux.vnet.ibm.com
> Subject: Re: [dpdk-dev] [PATCH] eal/x86: get hypervisor name
> 
> 01/12/2017 09:12, Jerin Jacob:
> > -----Original Message-----
> > > Date: Thu, 30 Nov 2017 22:47:20 +0100
> > > From: Thomas Monjalon <tho...@monjalon.net>
> > > To: dev@dpdk.org
> > > Subject: [dpdk-dev] [PATCH] eal/x86: get hypervisor name
> > > X-Mailer: git-send-email 2.15.0
> > > 
> > > The CPUID instruction is catched by hypervisor which can return
> > > a flag indicating one is running, and its name.
> > > 
> > > Suggested-by: Stephen Hemminger <sthem...@microsoft.com>
> > > Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
> > > ---
> > > warning: to be tested
> > > ---
> > >  lib/librte_eal/common/arch/arm/rte_cpuflags.c      |  6 +++++
> > >  lib/librte_eal/common/arch/ppc_64/rte_cpuflags.c   |  6 +++++
> > >  lib/librte_eal/common/arch/x86/rte_cpuflags.c      | 30 
> > > ++++++++++++++++++++++
> > >  .../common/include/arch/x86/rte_cpuflags.h         |  1 +
> > >  .../common/include/generic/rte_cpuflags.h          | 14 ++++++++++
> > >  lib/librte_eal/rte_eal_version.map                 |  9 ++++++-
> > >  6 files changed, 65 insertions(+), 1 deletion(-)
> > >   RTE_CPUFLAG_FPU,                    /**< FPU */
> > > diff --git a/lib/librte_eal/common/include/generic/rte_cpuflags.h 
> > > b/lib/librte_eal/common/include/generic/rte_cpuflags.h
> > > index c1c5551fc..3832fb851 100644
> > > --- a/lib/librte_eal/common/include/generic/rte_cpuflags.h
> > > +++ b/lib/librte_eal/common/include/generic/rte_cpuflags.h
> > > @@ -93,4 +93,18 @@ rte_cpu_check_supported(void);
> > >  int
> > >  rte_cpu_is_supported(void);
> > >  
> > > +enum rte_hypervisor {
> > > + RTE_HYPERVISOR_NONE,
> > > + RTE_HYPERVISOR_KVM,
> > > + RTE_HYPERVISOR_HYPERV,
> > > + RTE_HYPERVISOR_VMWARE,
> > > + RTE_HYPERVISOR_UNKNOWN
> > > +};
> > > +
> > > +/**
> > > + * Get the type of hypervisor it is running on.
> > > + */
> > > +enum rte_hypervisor
> > > +rte_hypervisor_get_name(void);
> > 
> > Cc: chao...@linux.vnet.ibm.com
> > 
> > IMO, cpu_flag area is the not the correct abstraction to get
> > the hypervisor name. It is x86 specific. I think, correct
> > usage will be to call hypervisor specific APIs like KVM_GET_API_VERSION
> > https://lwn.net/Articles/658511/
> 
> I think it is quite logical because the CPU is virtualized by the hypervisor.
> It is similar to get the CPU model, but for a different ring level.

At least on non x86, it is not exposed as CPU flags. IMO,
*hypervisor*.h file makes more sense rather than rte_cpuflags.h.

> 
> > BTW, What is the need for an DPDK application to know the 
> > hypervisor name? What action an DPDK application should
> > take based on hypervisor name? if is not interest of data plane
> > application why it needs to be abstracted in DPDK?
> 
> I see two usages for now.
> We can automate the use of the specific VMware TSC (it is an option 
> currently).

In my view this use case needed by the DPDK "implementation" not the
"application". So internal API makes more sense to me.

> We can adapt the device management policy on Hyper-V without waiting a device 
> scan.

I am not sure about this? Looks like a candidate for library implementation
not for the "application"


Reply via email to