mm: meminit: inline some helper functions
early_pfn_in_nid() and meminit_pfn_in_nid() are small functions that are unnecessarily visible outside memory initialisation. As well as unnecessary visibility, it's unnecessary function call overhead when initialising pages. This patch moves the helpers inline. [akpm@linux-foundation.org: fix build] [mhocko@suse.cz: fix build] Signed-off-by: Mel Gorman <mgorman@suse.de> Tested-by: Nate Zimmer <nzimmer@sgi.com> Tested-by: Waiman Long <waiman.long@hp.com> Tested-by: Daniel J Blueman <daniel@numascale.com> Acked-by: Pekka Enberg <penberg@kernel.org> Cc: Robin Holt <robinmholt@gmail.com> Cc: Nate Zimmer <nzimmer@sgi.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Waiman Long <waiman.long@hp.com> Cc: Scott Norton <scott.norton@hp.com> Cc: "Luck, Tony" <tony.luck@intel.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Michal Hocko <mhocko@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
8a942fdea5
commit
75a592a471
|
@ -1227,15 +1227,6 @@ struct mminit_pfnnid_cache {
|
|||
int last_nid;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_NODES_SPAN_OTHER_NODES
|
||||
bool early_pfn_in_nid(unsigned long pfn, int nid);
|
||||
bool meminit_pfn_in_nid(unsigned long pfn, int node,
|
||||
struct mminit_pfnnid_cache *state);
|
||||
#else
|
||||
#define early_pfn_in_nid(pfn, nid) (1)
|
||||
#define meminit_pfn_in_nid(pfn, nid, state) (1)
|
||||
#endif
|
||||
|
||||
#ifndef early_pfn_valid
|
||||
#define early_pfn_valid(pfn) (1)
|
||||
#endif
|
||||
|
|
|
@ -899,6 +899,58 @@ void __init __free_pages_bootmem(struct page *page, unsigned long pfn,
|
|||
__free_pages(page, order);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID) || \
|
||||
defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP)
|
||||
/* Only safe to use early in boot when initialisation is single-threaded */
|
||||
static struct mminit_pfnnid_cache early_pfnnid_cache __meminitdata;
|
||||
|
||||
int __meminit early_pfn_to_nid(unsigned long pfn)
|
||||
{
|
||||
int nid;
|
||||
|
||||
/* The system will behave unpredictably otherwise */
|
||||
BUG_ON(system_state != SYSTEM_BOOTING);
|
||||
|
||||
nid = __early_pfn_to_nid(pfn, &early_pfnnid_cache);
|
||||
if (nid >= 0)
|
||||
return nid;
|
||||
/* just returns 0 */
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NODES_SPAN_OTHER_NODES
|
||||
static inline bool __meminit meminit_pfn_in_nid(unsigned long pfn, int node,
|
||||
struct mminit_pfnnid_cache *state)
|
||||
{
|
||||
int nid;
|
||||
|
||||
nid = __early_pfn_to_nid(pfn, state);
|
||||
if (nid >= 0 && nid != node)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Only safe to use early in boot when initialisation is single-threaded */
|
||||
static inline bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
|
||||
{
|
||||
return meminit_pfn_in_nid(pfn, node, &early_pfnnid_cache);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
static inline bool __meminit meminit_pfn_in_nid(unsigned long pfn, int node,
|
||||
struct mminit_pfnnid_cache *state)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CONFIG_CMA
|
||||
/* Free whole pageblock and set its migration type to MIGRATE_CMA. */
|
||||
void __init init_cma_reserved_pageblock(struct page *page)
|
||||
|
@ -4575,43 +4627,6 @@ int __meminit __early_pfn_to_nid(unsigned long pfn,
|
|||
}
|
||||
#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
|
||||
|
||||
static struct mminit_pfnnid_cache early_pfnnid_cache __meminitdata;
|
||||
|
||||
/* Only safe to use early in boot when initialisation is single-threaded */
|
||||
int __meminit early_pfn_to_nid(unsigned long pfn)
|
||||
{
|
||||
int nid;
|
||||
|
||||
/* The system will behave unpredictably otherwise */
|
||||
BUG_ON(system_state != SYSTEM_BOOTING);
|
||||
|
||||
nid = __early_pfn_to_nid(pfn, &early_pfnnid_cache);
|
||||
if (nid >= 0)
|
||||
return nid;
|
||||
/* just returns 0 */
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NODES_SPAN_OTHER_NODES
|
||||
bool __meminit meminit_pfn_in_nid(unsigned long pfn, int node,
|
||||
struct mminit_pfnnid_cache *state)
|
||||
{
|
||||
int nid;
|
||||
|
||||
nid = __early_pfn_to_nid(pfn, state);
|
||||
if (nid >= 0 && nid != node)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Only safe to use early in boot when initialisation is single-threaded */
|
||||
bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
|
||||
{
|
||||
return meminit_pfn_in_nid(pfn, node, &early_pfnnid_cache);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* free_bootmem_with_active_regions - Call memblock_free_early_nid for each active range
|
||||
* @nid: The node to free memory on. If MAX_NUMNODES, all nodes are freed.
|
||||
|
|
Loading…
Reference in New Issue