From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ryan Harper Subject: [PATCH 2/2] xend: fix vcpu related items Date: Fri, 4 Nov 2005 16:41:41 -0600 Message-ID: <20051104224141.GA2092@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This patch fixes dom0 SMP vcpu hotplug. Currently, domains without config files (e.g. dom0) don't set info['vcpus'] correctly resulting in incorrect cpu availablity values in the store. This prevents hotplug from functioning. -- Ryan Harper Software Engineer; Linux Technology Center IBM Corp., Austin, Tx (512) 838-9253 T/L: 678-9253 ryanh@us.ibm.com diffstat output: XendDomainInfo.py | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) Signed-off-by: Ryan Harper --- diff -r 46f4f1eb70ca tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Fri Nov 4 21:27:11 2005 +++ b/tools/python/xen/xend/XendDomainInfo.py Fri Nov 4 16:13:22 2005 @@ -425,13 +425,20 @@ defaultInfo('on_crash', lambda: "restart") defaultInfo('cpu', lambda: None) defaultInfo('cpu_weight', lambda: 1.0) - defaultInfo('vcpus', lambda: int(1)) + + # 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']) - - self.info['vcpus'] = int(self.info['vcpus']) defaultInfo('max_vcpu_id', lambda: self.info['vcpus']-1) - defaultInfo('vcpu_avail', lambda: (1 << self.info['vcpus']) - 1) + defaultInfo('bootloader', lambda: None) defaultInfo('backend', lambda: []) defaultInfo('device', lambda: [])