• Pavel Tatashin's avatar
    mm/memory_hotplug: optimize probe routine · b77eab70
    Pavel Tatashin authored
    When memory is hotplugged pages_correctly_reserved() is called to verify
    that the added memory is present, this routine traverses through every
    struct page and verifies that PageReserved() is set.  This is a slow
    operation especially if a large amount of memory is added.
    
    Instead of checking every page, it is enough to simply check that the
    section is present, has mapping (struct page array is allocated), and
    the mapping is online.
    
    In addition, we should not excpect that probe routine sets flags in
    struct page, as the struct pages have not yet been initialized.  The
    initialization should be done in __init_single_page(), the same as
    during boot.
    
    Link: http://lkml.kernel.org/r/20180215165920.8570-5-pasha.tatashin@oracle.comSigned-off-by: default avatarPavel Tatashin <pasha.tatashin@oracle.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Bharata B Rao <bharata@linux.vnet.ibm.com>
    Cc: Daniel Jordan <daniel.m.jordan@oracle.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Steven Sistare <steven.sistare@oracle.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b77eab70
memory.c 20.6 KB