Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754309Ab3EZF66 (ORCPT ); Sun, 26 May 2013 01:58:58 -0400 Received: from e23smtp07.au.ibm.com ([202.81.31.140]:39073 "EHLO e23smtp07.au.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753355Ab3EZF6y (ORCPT ); Sun, 26 May 2013 01:58:54 -0400 From: Wanpeng Li To: Andrew Morton Cc: Michal Hocko , KAMEZAWA Hiroyuki , KOSAKI Motohiro , David Rientjes , Jiang Liu , Tang Chen , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , , Wanpeng Li Subject: [PATCH v3 1/6] mm/memory-hotplug: fix lowmem count overflow when offline pages Date: Sun, 26 May 2013 13:58:36 +0800 Message-Id: <1369547921-24264-1-git-send-email-liwanp@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.5.4 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 13052605-0260-0000-0000-0000030E0CFF Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2245 Lines: 80 Changelog: v1 -> v2: * show number of HighTotal before hotremove * remove CONFIG_HIGHMEM * cc stable kernels * add Michal reviewed-by Logic memory-remove code fails to correctly account the Total High Memory when a memory block which contains High Memory is offlined as shown in the example below. The following patch fixes it. Stable for 2.6.24+. Before logic memory remove: MemTotal: 7603740 kB MemFree: 6329612 kB Buffers: 94352 kB Cached: 872008 kB SwapCached: 0 kB Active: 626932 kB Inactive: 519216 kB Active(anon): 180776 kB Inactive(anon): 222944 kB Active(file): 446156 kB Inactive(file): 296272 kB Unevictable: 0 kB Mlocked: 0 kB HighTotal: 7294672 kB HighFree: 5704696 kB LowTotal: 309068 kB LowFree: 624916 kB After logic memory remove: MemTotal: 7079452 kB MemFree: 5805976 kB Buffers: 94372 kB Cached: 872000 kB SwapCached: 0 kB Active: 626936 kB Inactive: 519236 kB Active(anon): 180780 kB Inactive(anon): 222944 kB Active(file): 446156 kB Inactive(file): 296292 kB Unevictable: 0 kB Mlocked: 0 kB HighTotal: 7294672 kB HighFree: 5181024 kB LowTotal: 4294752076 kB LowFree: 624952 kB Reviewed-by: Michal Hocko Signed-off-by: Wanpeng Li --- mm/page_alloc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 98cbdf6..23b921f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -6140,6 +6140,8 @@ __offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn) list_del(&page->lru); rmv_page_order(page); zone->free_area[order].nr_free--; + if (PageHighMem(page)) + totalhigh_pages -= 1 << order; for (i = 0; i < (1 << order); i++) SetPageReserved((page+i)); pfn += (1 << order); -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/