All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ruediger Meier <sweet_f_a@gmx.de>
To: util-linux@vger.kernel.org
Cc: Stanislav Brabec <sbrabec@suse.cz>, Petr Uzel <petr.uzel@suse.cz>
Subject: Re: [PATCH 3/5] lscpu: detect OS/400 and pHyp hypervisors
Date: Thu, 22 May 2014 01:03:43 +0200	[thread overview]
Message-ID: <201405220103.43871.sweet_f_a@gmx.de> (raw)
In-Reply-To: <1400600551-7227-4-git-send-email-sweet_f_a@gmx.de>

On Tuesday 20 May 2014, Ruediger Meier wrote:
> From: Ruediger Meier <ruediger.meier@ga-group.nl>
> 
> This patch comes from openSUSE / SLE. Original author was probably
> Petr Uzel.
> Internal SUSE references: fate310255, sr226509
> 
> CC: Stanislav Brabec <sbrabec@suse.cz>
> CC: Petr Uzel <petr.uzel@suse.cz>
> Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
> ---
>  sys-utils/lscpu.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
>  sys-utils/lscpu.h |  4 +++-
>  2 files changed, 52 insertions(+), 2 deletions(-)
> 
> diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c
> index 0203916..b9e07e6 100644
> --- a/sys-utils/lscpu.c
> +++ b/sys-utils/lscpu.c
> @@ -60,6 +60,7 @@
>  #define _PATH_PROC_STATUS	"/proc/self/status"
>  #define _PATH_PROC_VZ	"/proc/vz"
>  #define _PATH_PROC_BC	"/proc/bc"
> +#define _PATH_PROC_DEVICETREE	"/proc/device-tree"
>  #define _PATH_DEV_MEM 		"/dev/mem"
>  
>  /* virtualization types */
> @@ -88,7 +89,9 @@ const char *hv_vendors[] = {
>  	[HYPER_INNOTEK]	= "Innotek GmbH",
>  	[HYPER_HITACHI]	= "Hitachi",
>  	[HYPER_PARALLELS] = "Parallels",
> -	[HYPER_VBOX]	= "Oracle"
> +	[HYPER_VBOX]	= "Oracle",
> +	[HYPER_OS400]	= "OS/400",
> +	[HYPER_PHYP]	= "pHyp"
>  };
>  
>  const int hv_vendor_pci[] = {
> @@ -574,6 +577,51 @@ read_hypervisor_cpuid(struct lscpu_desc *desc)
>  static void
>  read_hypervisor_cpuid(struct lscpu_desc *desc __attribute__((__unused__)))
>  {
> +#ifdef __powerpc__
> +	/* powerpc:
> +	 * IBM iSeries: legacy, if /proc/iSeries exists, its para-virtualized on top of OS/400

According to this comment ...

> +	 * IBM pSeries: always has a hypervisor
> +	 *              if partition-name is "full", its kind of "bare-metal": full-system-partition
> +	 *              otherwise its some partition created by Hardware Management Console
> +	 *              in any case, its always some sort of HVM
> +	 * KVM: "linux,kvm" in /hypervisor/compatible indicates a KVM guest
> +	 * Xen: not in use, not detected
> +	 */
> +	if (path_exist("/proc/iSeries")) {
> +		desc->hyper = HYPER_OS400;
> +		desc->virtype = VIRT_FULL;

... shouldn't this be VIRT_PARA? Somebody who knows this may correct this.

> +	} else if (path_exist(_PATH_PROC_DEVICETREE "/ibm,partition-name")) {
> +		FILE *fd;
> +		desc->hyper = HYPER_PHYP;
> +		desc->virtype = VIRT_FULL;

Maybe more obvious here for pSeries where p seems to stand for para
http://www.ibm.com/developerworks/aix/library/au-syspvirtualization/index.html?S_TACT=105AGX99&S_CMP=CP

> +		fd = fopen(_PATH_PROC_DEVICETREE "/ibm,partition-name", "r");
> +		if (fd) {
> +			char buf[256];
> +			if (fscanf(fd, "%s", buf) == 1 && !strcmp(buf, "full"))
> +				desc->virtype = VIRT_NONE;
> +			fclose(fd);
> +		}
> +	} else if (path_exist(_PATH_PROC_DEVICETREE "/hypervisor/compatible")) {
> +		FILE *fd;
> +		fd = fopen(_PATH_PROC_DEVICETREE "/hypervisor/compatible", "r");
> +		if (fd) {
> +			char buf[256];
> +			int i;
> +			memset(buf, 0, sizeof(buf));
> +			fread(buf, sizeof(buf) - 1, 1, fd);
> +			fclose(fd);
> +			for (i = 0; i < sizeof(buf);) {
> +				if (!strcmp(&buf[i], "linux,kvm")) {
> +					desc->hyper = HYPER_KVM;
> +					desc->virtype = VIRT_FULL;
> +					break;
> +				}
> +				i += strlen(&buf[i]);
> +				i++;
> +			}
> +		}
> +	}
> +#endif
>  }
>  #endif
>  
> diff --git a/sys-utils/lscpu.h b/sys-utils/lscpu.h
> index 7bb538d..6c25c4f 100644
> --- a/sys-utils/lscpu.h
> +++ b/sys-utils/lscpu.h
> @@ -14,7 +14,9 @@ enum {
>  	HYPER_INNOTEK,		/* VBOX */
>  	HYPER_HITACHI,
>  	HYPER_PARALLELS,	/* OpenVZ/VIrtuozzo */
> -	HYPER_VBOX
> +	HYPER_VBOX,
> +	HYPER_OS400,
> +	HYPER_PHYP
>  };
>  
>  extern int read_hypervisor_dmi(void);

  parent reply	other threads:[~2014-05-21 23:03 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-20 15:42 [PATCH 0/5] lscpu: improve hypervisor detection Ruediger Meier
2014-05-20 15:42 ` [PATCH 1/5] lscpu: minor cleanup and " Ruediger Meier
2014-05-20 15:42 ` [PATCH 2/5] tests: add vbox lscpu dump Ruediger Meier
2014-05-20 15:42 ` [PATCH 3/5] lscpu: detect OS/400 and pHyp hypervisors Ruediger Meier
2014-05-21  7:37   ` Karel Zak
2014-05-21  9:43     ` Ruediger Meier
2014-05-21 12:41       ` Karel Zak
2014-05-21 23:03   ` Ruediger Meier [this message]
2014-05-22  8:48     ` Karel Zak
2014-05-22  9:08       ` Heiko Carstens
2014-05-22  9:30         ` Alexander Graf
2014-05-28 21:54           ` Ruediger Meier
2014-05-28 22:29             ` Alexander Graf
2014-05-20 15:42 ` [PATCH 4/5] lscpu: improve vmware detection Ruediger Meier
2014-05-20 18:40   ` Ruediger Meier
2014-05-20 15:42 ` [PATCH 5/5] lscpu: avoid compiler warnings Ruediger Meier
2014-05-21  8:10   ` Karel Zak
2014-05-20 16:34 ` [PATCH 0/5] lscpu: improve hypervisor detection Stanislav Brabec
2014-05-20 18:13   ` Ruediger Meier
2014-05-21  8:24   ` Karel Zak
2014-05-21 22:29 ` Ruediger Meier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201405220103.43871.sweet_f_a@gmx.de \
    --to=sweet_f_a@gmx.de \
    --cc=petr.uzel@suse.cz \
    --cc=sbrabec@suse.cz \
    --cc=util-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.