All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Rita Sinha <rita.sinha89@gmail.com>, xen-devel@lists.xen.org
Subject: Re: [PATCH] Supporting reading of system information from BIOS.
Date: Tue, 14 Oct 2014 11:48:39 +0100	[thread overview]
Message-ID: <543CFF86.1060908@citrix.com> (raw)
In-Reply-To: <20141014044407.GA1448@chroot-build.noidalab.local>

On 14/10/14 05:44, Rita Sinha wrote:

Thanks for having a stab at this.  Some comments inline

> This patch is in response to http://wiki.xenproject.org/wiki/Outreach_Program_Projects#CPU.2FRAM.2FPCI_diagram_tool project for applying to OPW-Round9.It adds support for reading system architecture information from BIOS rather than from sysfs and proc interfaces since in a virtualisation enviroment, some of this information is no longer accurate, particularly any information based around numbers of cpus.

Would you mind formatting this to 80 columns wide?

Generally speaking, submission of patches need a Signed-off-by: tag.

> ---
>  dmidecode.pl | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 51 insertions(+)
>  create mode 100644 dmidecode.pl
>
> diff --git a/dmidecode.pl b/dmidecode.pl
> new file mode 100644
> index 0000000..76fdf78
> --- /dev/null
> +++ b/dmidecode.pl
> @@ -0,0 +1,51 @@
> +#!/usr/bin/perl
> +
> +# dmidecode.pl - a script to read the system architecture information
> +# directly from the BIOS.  Only for Linux.
> +#
> +# Rita Sinha (rita.sinha89@gmail.com)
> +# OPW Program-Round9
> +# 14/10/14
> +
> +`id -u` == 0 || die "must be run as root";
> +
> +open(DmiFh, "/usr/sbin/dmidecode |") or
> +  die "problem running dmidecode";
> +$DmiNumProcs = 0;
> +$DmiNumSockets = 0;
> +while(<DmiFh>)
> +  {
> +    next unless /Central Processor/;
> +    # We've found a processor (or at least a socket), keep going
> +    while(<DmiFh>)
> +	{
> +	  # Keep walking the dmidecode output to find out if
> +	  # the socket has a processor in it.
> +	  last if /^Handle/;
> +	  next unless /Status/;
> +	  $DmiNumSockets += 1;
> +	  /Populated/ and $DmiNumProcs += 1;
> +	  last;
> +	}
> +  }
> +close DmiFh;
> +
> +open(CpuInfoFh, "/proc/cpuinfo") || die "failed to open /proc/cpuinfo!";
> +$CpuInfoNumProcs = 0;
> +while(<CpuInfoFh>)
> +  {
> +    next unless /^processor.*:/;
> +    ($CpuInfoNumProcs) += (/^processor.*: (\d+)/);
> +  }
> +close CpuInfoFh;
> +
> +if ( $DmiNumProcs != $CpuInfoNumProcs )
> +  {
> +    print "Warning: dmidecode reports $DmiNumProcs processors, kernel reports $CpuInfoNumProcs processors.\n";
> +  }
> +
> +if ( $DmiNumProcs != $DmiNumSockets )
> +  {
> +    print "Info: dmidecode reports $DmiNumSockets cpu sockets, but only $DmiNumProcs processors.\n";
> +  }
> +

Running this script in dom0 yields:

[root@fusebot ~]# ./dmidecode.pl
Warning: dmidecode reports 1 processors, kernel reports 4 processors.

This is a Xeon E3-1240 v3 system where dom0 has 4 vcpus.

Under Xen, each vcpu appears as a separate processor, which is why
/proc/cpuinfo and dmidecode disagree about the processor count.  This
also goes to show that /proc/cpuinfo only sees the virtual layout, not
the physical layout.


I think it might be worth starting with a design of the first task we
discussed, including the indented source of the information to be used.

~Andrew

      parent reply	other threads:[~2014-10-14 10:48 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-14  4:44 [PATCH] Supporting reading of system information from BIOS Rita Sinha
2014-10-14  8:15 ` Matt Wilson
2014-10-14  8:43   ` Rita Sinha
2014-10-14 10:48 ` Andrew Cooper [this message]

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=543CFF86.1060908@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=rita.sinha89@gmail.com \
    --cc=xen-devel@lists.xen.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.