[dpdk-dev] [PATCH] eal/x86: get hypervisor name

Jerin Jacob jerin.jacob at caviumnetworks.com
Fri Dec 1 09:12:35 CET 2017


-----Original Message-----
> Date: Thu, 30 Nov 2017 22:47:20 +0100
> From: Thomas Monjalon <thomas at monjalon.net>
> To: dev at 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 <sthemmin at microsoft.com>
> Signed-off-by: Thomas Monjalon <thomas at 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: chaozhu at 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/

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?



More information about the dev mailing list