[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |