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
|