[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: [Xen-staging] [xen-unstable] Added some more fields to host_cpu.



Hi Ewan,

   There are a couple problems with this patch for non-x86 (and maybe
even on x86), see below:

On Tue, 2007-02-27 at 01:56 +0000, Xen staging patchbot-unstable wrote:
> diff -r e7b2a282c9e7 -r 50e0616fd012 tools/python/xen/xend/XendNode.py
> --- a/tools/python/xen/xend/XendNode.py       Mon Feb 26 17:20:36 2007 +0000
> +++ b/tools/python/xen/xend/XendNode.py       Tue Feb 27 00:37:27 2007 +0000
> @@ -81,7 +81,7 @@ class XendNode:
>          for cpu_uuid, cpu in saved_cpus.items():
>              self.cpus[cpu_uuid] = cpu
>  
> -        # verify we have enough cpus here
> +        cpuinfo = parse_proc_cpuinfo()
>          physinfo = self.physinfo_dict()
>          cpu_count = physinfo['nr_cpus']
>          cpu_features = physinfo['hw_caps']
> @@ -91,12 +91,23 @@ class XendNode:
>          if cpu_count != len(self.cpus):
>              self.cpus = {}
>              for i in range(cpu_count):
> -                cpu_uuid = uuid.createString()
> -                cpu_info = {'uuid': cpu_uuid,
> -                            'host': self.uuid,
> -                            'number': i,
> -                            'features': cpu_features}
> -                self.cpus[cpu_uuid] = cpu_info
> +                u = uuid.createString()
> +                self.cpus[u] = {'uuid': u, 'number': i }
> +
> +        for u in self.cpus.keys():
> +            log.error(self.cpus[u])
> +            number = self.cpus[u]['number']
> +            log.error(number)
> +            log.error(cpuinfo)
> +            self.cpus[u].update(
> +                { 'host'     : self.uuid,
> +                  'features' : cpu_features,
> +                  'speed'    : int(float(cpuinfo[number]['cpu MHz'])),
> +                  'vendor'   : cpuinfo[number]['vendor_id'],
> +                  'modelname': cpuinfo[number]['model name'],
> +                  'stepping' : cpuinfo[number]['stepping'],
> +                  'flags'    : cpuinfo[number]['flags'],
> +                })

   On ia64, dom0 doesn't automatically get vcpus for each physical cpu,
so the first problem is that we're not going to have a /proc/cpuinfo
entry for every cpu in self.cpus.keys.  I think it's likely x86 could
run into this problem too if a cpu was hotplugged or booted with the
dom0_max_vcpus options.

   The second problem is that /proc/cpuinfo fields are very architecture
specific.  I'd suggest importing arch and having separate cases for x86,
ia64, and powerpc.  For ia64, think the most appropriate mapping would
be:

                self.cpus[u].update(
                    { 'host'     : self.uuid,
                      'features' : cpu_features,
                      'speed'    : int(float(cpuinfo[0]['cpu MHz'])),
                      'vendor'   : cpuinfo[0]['vendor'],
                      'modelname': cpuinfo[0]['family'],
                      'stepping' : cpuinfo[0]['model'],
                      'flags'    : cpuinfo[0]['features'],
                    })

Hollis or Jimi might be able to chime in with identifiers that would
work on powerpc.  Thanks,

        Alex
-- 
Alex Williamson                             HP Open Source & Linux Org.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.