On Wed, May 22, 2013 at 12:49:37PM +0200, Michal Hocko wrote: >On Wed 22-05-13 17:29:27, Wanpeng Li wrote: >> 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. >> >> cat /proc/meminfo >> 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 > >Ok, so the HighTotal is higher than MemTotal but it would have been more >straightforward to show number of HighTotal before hotremove, show how >much memory has been removed and the number after. > >It is not clear which stable kernels need this fix as well. > THanks for your review, Michal, I will update soon. ;-) >> >> Signed-off-by: Wanpeng Li <liwanp@xxxxxxxxxxxxxxxxxx> > >Anyway >Reviewed-by: Michal Hocko <mhocko@xxxxxxx> > >with a nit pick bellow > >> --- >> mm/page_alloc.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/mm/page_alloc.c b/mm/page_alloc.c >> index 98cbdf6..80474b2 100644 >> --- a/mm/page_alloc.c >> +++ b/mm/page_alloc.c >> @@ -6140,6 +6140,10 @@ __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--; >> +#ifdef CONFIG_HIGHMEM >> + if (PageHighMem(page)) >> + totalhigh_pages -= 1 << order; >> +#endif > >ifdef shouldn't be necessary as PageHighMem should default to false for >!CONFIG_HIGHMEM AFAICS. > >> for (i = 0; i < (1 << order); i++) >> SetPageReserved((page+i)); >> pfn += (1 << order); >> -- >> 1.8.1.2 >> >> -- >> To unsubscribe, send a message with 'unsubscribe linux-mm' in >> the body to majordomo@xxxxxxxxx. For more info on Linux MM, >> see: http://www.linux-mm.org/ . >> Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> > >-- >Michal Hocko >SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>