From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH] numa: fix problems with memory-less nodes Date: Tue, 12 Jan 2010 17:30:09 +0100 Message-ID: <4B4CA391.2040005@amd.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050406010607050209000500" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org --------------050406010607050209000500 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Hi, If we decided to not report memory-less nodes in physinfo we should also skip them in the node_to_{cpu,memory,dma32_mem} Python lists. Currently Xen will not start guests on machines with memory-less nodes which are not the last ones. On an 8-node machine with empty nodes 4 and 5 "xm info" was reporting wrongly, also the node assignment algorithm crashed with a division by zero error. The attached patch fixes this by skipping empty nodes in the enumeration of resources. Regards, Andre. Signed-off-by: Andre Przywara -- Andre Przywara AMD-Operating System Research Center (OSRC), Dresden, Germany Tel: +49 351 448 3567 12 ----to satisfy European Law for business letters: Advanced Micro Devices GmbH Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen Geschaeftsfuehrer: Andrew Bowd; Thomas M. McCoy; Giuliano Meroni Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632 --------------050406010607050209000500 Content-Type: text/x-patch; name="physinfo_empty_numa_nodes.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="physinfo_empty_numa_nodes.patch" diff -r 0e3910f1de64 tools/python/xen/lowlevel/xc/xc.c --- a/tools/python/xen/lowlevel/xc/xc.c Tue Jan 12 07:17:40 2010 +0000 +++ b/tools/python/xen/lowlevel/xc/xc.c Tue Jan 12 17:28:55 2010 +0100 @@ -1129,20 +1129,23 @@ Py_DECREF(pyint); node_exists = 1; } - PyList_Append(node_to_cpu_obj, cpus); + if (node_exists) + PyList_Append(node_to_cpu_obj, cpus); Py_DECREF(cpus); /* Memory. */ xc_availheap(self->xc_handle, 0, 0, i, &free_heap); node_exists = node_exists || (free_heap != 0); pyint = PyInt_FromLong(free_heap / 1024); - PyList_Append(node_to_memory_obj, pyint); + if (node_exists) + PyList_Append(node_to_memory_obj, pyint); Py_DECREF(pyint); /* DMA memory. */ xc_availheap(self->xc_handle, 0, 32, i, &free_heap); pyint = PyInt_FromLong(free_heap / 1024); - PyList_Append(node_to_dma32_mem_obj, pyint); + if (node_exists) + PyList_Append(node_to_dma32_mem_obj, pyint); Py_DECREF(pyint); if ( node_exists ) --------------050406010607050209000500 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------050406010607050209000500--