[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Merged.
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID 009eb32c0ae47ee021b82932f02b382f56a9519b # Parent 210a5b625e30067c8f340452aa1020aa44325124 # Parent 5e111356ba17602f474e36da6571de490157981a Merged. diff -r 210a5b625e30 -r 009eb32c0ae4 linux-2.6-xen-sparse/arch/xen/kernel/reboot.c --- a/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c Tue Nov 15 18:08:11 2005 +++ b/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c Tue Nov 15 18:09:30 2005 @@ -188,7 +188,7 @@ xenbus_resume(); #ifdef CONFIG_SMP - for_each_present_cpu(i) + for_each_cpu(i) vcpu_prepare(i); out_reenable_cpus: diff -r 210a5b625e30 -r 009eb32c0ae4 linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c --- a/linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c Tue Nov 15 18:08:11 2005 +++ b/linux-2.6-xen-sparse/arch/xen/kernel/smpboot.c Tue Nov 15 18:09:30 2005 @@ -277,6 +277,18 @@ #ifdef CONFIG_HOTPLUG_CPU +/* + * Initialize cpu_present_map late to skip SMP boot code in init/main.c. + * But do it early enough to catch critical for_each_present_cpu() loops + * in i386-specific code. + */ +static int __init initialize_cpu_present_map(void) +{ + cpu_present_map = cpu_possible_map; + return 0; +} +core_initcall(initialize_cpu_present_map); + static void vcpu_hotplug(unsigned int cpu) { int err; @@ -293,7 +305,6 @@ } if (strcmp(state, "online") == 0) { - cpu_set(cpu, cpu_present_map); (void)cpu_up(cpu); } else if (strcmp(state, "offline") == 0) { (void)cpu_down(cpu); diff -r 210a5b625e30 -r 009eb32c0ae4 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Tue Nov 15 18:08:11 2005 +++ b/tools/python/xen/xend/XendDomainInfo.py Tue Nov 15 18:09:30 2005 @@ -437,10 +437,18 @@ defaultInfo('on_crash', lambda: "restart") defaultInfo('cpu', lambda: None) defaultInfo('cpu_weight', lambda: 1.0) - defaultInfo('vcpus', lambda: int(1)) - - self.info['vcpus'] = int(self.info['vcpus']) - + + # some domains don't have a config file (e.g. dom0 ) + # to set number of vcpus so we derive available cpus + # from max_vcpu_id which is present for running domains. + if not self.infoIsSet('vcpus') and self.infoIsSet('max_vcpu_id'): + avail = int(self.info['max_vcpu_id'])+1 + else: + avail = int(1) + + defaultInfo('vcpus', lambda: avail) + defaultInfo('online_vcpus', lambda: self.info['vcpus']) + defaultInfo('max_vcpu_id', lambda: self.info['vcpus']-1) defaultInfo('vcpu_avail', lambda: (1 << self.info['vcpus']) - 1) defaultInfo('memory', lambda: 0) @@ -927,6 +935,7 @@ if self.infoIsSet('cpu_time'): sxpr.append(['cpu_time', self.info['cpu_time']/1e9]) sxpr.append(['vcpus', self.info['vcpus']]) + sxpr.append(['online_vcpus', self.info['online_vcpus']]) if self.infoIsSet('start_time'): up_time = time.time() - self.info['start_time'] @@ -943,16 +952,13 @@ def getVCPUInfo(self): try: - def filter_cpumap(map, max): - return filter(lambda x: x >= 0, map[0:max]) - # We include the domain name and ID, to help xm. sxpr = ['domain', ['domid', self.domid], ['name', self.info['name']], - ['vcpu_count', self.info['vcpus']]] - - for i in range(0, self.info['vcpus']): + ['vcpu_count', self.info['online_vcpus']]] + + for i in range(0, self.info['max_vcpu_id']+1): info = xc.vcpu_getinfo(self.domid, i) sxpr.append(['vcpu', @@ -962,8 +968,7 @@ ['running', info['running']], ['cpu_time', info['cpu_time'] / 1e9], ['cpu', info['cpu']], - ['cpumap', filter_cpumap(info['cpumap'], - self.info['vcpus'])]]) + ['cpumap', info['cpumap']]]) return sxpr diff -r 210a5b625e30 -r 009eb32c0ae4 tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py Tue Nov 15 18:08:11 2005 +++ b/tools/python/xen/xm/main.py Tue Nov 15 18:09:30 2005 @@ -260,13 +260,13 @@ return t(sxp.child_value(info, n, d)) return { - 'dom' : get_info('domid', int, -1), - 'name' : get_info('name', str, '??'), - 'mem' : get_info('memory', int, 0), - 'vcpus' : get_info('vcpus', int, 0), - 'state' : get_info('state', str, '??'), - 'cpu_time' : get_info('cpu_time', float, 0), - 'ssidref' : get_info('ssidref', int, 0), + 'dom' : get_info('domid', int, -1), + 'name' : get_info('name', str, '??'), + 'mem' : get_info('memory', int, 0), + 'vcpus' : get_info('online_vcpus', int, 0), + 'state' : get_info('state', str, '??'), + 'cpu_time' : get_info('cpu_time', float, 0), + 'ssidref' : get_info('ssidref', int, 0), } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |