From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Xiaowei" Subject: x86 numa: fix nodes' memory parsing when SRAT table includes future-hotplug memory range Date: Wed, 12 Aug 2009 17:31:46 +0800 Message-ID: <4A828C02.2070107@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010303040803000608030206" 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: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------010303040803000608030206 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit A node's future-hotplug memory range starts from very high end normally, e.g. 1TB, and is not continuous with its current existing memory range. It should not be covered by the global variable 'nodes' as it assumes the node's memory is continuous. Otherwise it can make nodes' memory ranges become very big and overlapped, and populate_memnodemap() fails. We can ignore future-hotplug memory range for now. Physical memory hotplug support in future will handle it. Signed-off-by: Yang Xiaowei Thanks, Xiaowei --------------010303040803000608030206 Content-Type: text/x-patch; name="hotplug.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="hotplug.patch" diff -r e35a1c004fc2 xen/arch/x86/srat.c --- a/xen/arch/x86/srat.c Tue Aug 11 07:36:26 2009 +0100 +++ b/xen/arch/x86/srat.c Wed Aug 12 17:06:48 2009 +0800 @@ -189,10 +189,21 @@ bad_srat(); return; } - /* It is fine to add this area to the nodes data it will be used later*/ - if (ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) - printk(KERN_INFO "SRAT: hot plug zone found %"PRIx64" - %"PRIx64" \n", + if (ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) { + if (page_is_ram_type(paddr_to_pfn(start), RAM_TYPE_CONVENTIONAL)) + printk(KERN_INFO "SRAT: hot-pluggable zone found %"PRIx64" - %"PRIx64" \n", start, end); + else { + /* TODO: This range contains no existing memory yet, + * and shouldn't be included in nodes' [start, end]. It + * will be covered with physical memory hotplug support + * in future. + */ + printk(KERN_INFO "SRAT: future hotplug zone found %"PRIx64" - %"PRIx64" \n", + start, end); + return; + } + } i = conflicting_nodes(start, end); if (i == node) { printk(KERN_WARNING --------------010303040803000608030206 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 --------------010303040803000608030206--