Merge branch 'akpm' (patches from Andrew)
Merge fixes from Andrew Morton: "4 fixes" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: mem-hotplug: use nodes that contain memory as mask in new_node_page() scripts/recordmcount.c: account for .softirqentry.text dma-mapping.h: preserve unmap info for CONFIG_DMA_API_DEBUG mm,ksm: fix endless looping in allocating memory when ksm enable
This commit is contained in:
commit
53061afee4
|
@ -718,7 +718,7 @@ static inline int dma_mmap_wc(struct device *dev,
|
|||
#define dma_mmap_writecombine dma_mmap_wc
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NEED_DMA_MAP_STATE
|
||||
#if defined(CONFIG_NEED_DMA_MAP_STATE) || defined(CONFIG_DMA_API_DEBUG)
|
||||
#define DEFINE_DMA_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME
|
||||
#define DEFINE_DMA_UNMAP_LEN(LEN_NAME) __u32 LEN_NAME
|
||||
#define dma_unmap_addr(PTR, ADDR_NAME) ((PTR)->ADDR_NAME)
|
||||
|
|
3
mm/ksm.c
3
mm/ksm.c
|
@ -283,7 +283,8 @@ static inline struct rmap_item *alloc_rmap_item(void)
|
|||
{
|
||||
struct rmap_item *rmap_item;
|
||||
|
||||
rmap_item = kmem_cache_zalloc(rmap_item_cache, GFP_KERNEL);
|
||||
rmap_item = kmem_cache_zalloc(rmap_item_cache, GFP_KERNEL |
|
||||
__GFP_NORETRY | __GFP_NOWARN);
|
||||
if (rmap_item)
|
||||
ksm_rmap_items++;
|
||||
return rmap_item;
|
||||
|
|
|
@ -1555,8 +1555,8 @@ static struct page *new_node_page(struct page *page, unsigned long private,
|
|||
{
|
||||
gfp_t gfp_mask = GFP_USER | __GFP_MOVABLE;
|
||||
int nid = page_to_nid(page);
|
||||
nodemask_t nmask = node_online_map;
|
||||
struct page *new_page;
|
||||
nodemask_t nmask = node_states[N_MEMORY];
|
||||
struct page *new_page = NULL;
|
||||
|
||||
/*
|
||||
* TODO: allocate a destination hugepage from a nearest neighbor node,
|
||||
|
@ -1567,14 +1567,14 @@ static struct page *new_node_page(struct page *page, unsigned long private,
|
|||
return alloc_huge_page_node(page_hstate(compound_head(page)),
|
||||
next_node_in(nid, nmask));
|
||||
|
||||
if (nid != next_node_in(nid, nmask))
|
||||
node_clear(nid, nmask);
|
||||
node_clear(nid, nmask);
|
||||
|
||||
if (PageHighMem(page)
|
||||
|| (zone_idx(page_zone(page)) == ZONE_MOVABLE))
|
||||
gfp_mask |= __GFP_HIGHMEM;
|
||||
|
||||
new_page = __alloc_pages_nodemask(gfp_mask, 0,
|
||||
if (!nodes_empty(nmask))
|
||||
new_page = __alloc_pages_nodemask(gfp_mask, 0,
|
||||
node_zonelist(nid, gfp_mask), &nmask);
|
||||
if (!new_page)
|
||||
new_page = __alloc_pages(gfp_mask, 0,
|
||||
|
|
|
@ -363,6 +363,7 @@ is_mcounted_section_name(char const *const txtname)
|
|||
strcmp(".sched.text", txtname) == 0 ||
|
||||
strcmp(".spinlock.text", txtname) == 0 ||
|
||||
strcmp(".irqentry.text", txtname) == 0 ||
|
||||
strcmp(".softirqentry.text", txtname) == 0 ||
|
||||
strcmp(".kprobes.text", txtname) == 0 ||
|
||||
strcmp(".text.unlikely", txtname) == 0;
|
||||
}
|
||||
|
|
|
@ -134,6 +134,7 @@ my %text_sections = (
|
|||
".sched.text" => 1,
|
||||
".spinlock.text" => 1,
|
||||
".irqentry.text" => 1,
|
||||
".softirqentry.text" => 1,
|
||||
".kprobes.text" => 1,
|
||||
".text.unlikely" => 1,
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue