aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-07-01 20:47:51 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-07-01 20:47:51 -0400
commit2d01eedf1d14432f4db5388a49dc5596a8c5bd02 (patch)
tree646525acc0475b2899827c1bfbd25f05ec1b8092 /include/linux
parent6ac15baacb6ecd87c66209627753b96ded3b4515 (diff)
parentabdd4a7025282fbe3737e1bcb5f51afc8d8ea1b8 (diff)
Merge branch 'akpm' (patches from Andrew)
Merge third patchbomb from Andrew Morton: - the rest of MM - scripts/gdb updates - ipc/ updates - lib/ updates - MAINTAINERS updates - various other misc things * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (67 commits) genalloc: rename of_get_named_gen_pool() to of_gen_pool_get() genalloc: rename dev_get_gen_pool() to gen_pool_get() x86: opt into HAVE_COPY_THREAD_TLS, for both 32-bit and 64-bit MAINTAINERS: add zpool MAINTAINERS: BCACHE: Kent Overstreet has changed email address MAINTAINERS: move Jens Osterkamp to CREDITS MAINTAINERS: remove unused nbd.h pattern MAINTAINERS: update brcm gpio filename pattern MAINTAINERS: update brcm dts pattern MAINTAINERS: update sound soc intel patterns MAINTAINERS: remove website for paride MAINTAINERS: update Emulex ocrdma email addresses bcache: use kvfree() in various places libcxgbi: use kvfree() in cxgbi_free_big_mem() target: use kvfree() in session alloc and free IB/ehca: use kvfree() in ipz_queue_{cd}tor() drm/nouveau/gem: use kvfree() in u_free() drm: use kvfree() in drm_free_large() cxgb4: use kvfree() in t4_free_mem() cxgb3: use kvfree() in cxgb_free_mem() ...
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/genalloc.h6
-rw-r--r--include/linux/gfp.h8
-rw-r--r--include/linux/kernel.h3
-rw-r--r--include/linux/memblock.h18
-rw-r--r--include/linux/mm.h8
-rw-r--r--include/linux/mmzone.h23
-rw-r--r--include/linux/scatterlist.h7
7 files changed, 61 insertions, 12 deletions
diff --git a/include/linux/genalloc.h b/include/linux/genalloc.h
index 1ccaab44abcc..5383bb1394a1 100644
--- a/include/linux/genalloc.h
+++ b/include/linux/genalloc.h
@@ -119,16 +119,16 @@ extern unsigned long gen_pool_best_fit(unsigned long *map, unsigned long size,
119 119
120extern struct gen_pool *devm_gen_pool_create(struct device *dev, 120extern struct gen_pool *devm_gen_pool_create(struct device *dev,
121 int min_alloc_order, int nid); 121 int min_alloc_order, int nid);
122extern struct gen_pool *dev_get_gen_pool(struct device *dev); 122extern struct gen_pool *gen_pool_get(struct device *dev);
123 123
124bool addr_in_gen_pool(struct gen_pool *pool, unsigned long start, 124bool addr_in_gen_pool(struct gen_pool *pool, unsigned long start,
125 size_t size); 125 size_t size);
126 126
127#ifdef CONFIG_OF 127#ifdef CONFIG_OF
128extern struct gen_pool *of_get_named_gen_pool(struct device_node *np, 128extern struct gen_pool *of_gen_pool_get(struct device_node *np,
129 const char *propname, int index); 129 const char *propname, int index);
130#else 130#else
131static inline struct gen_pool *of_get_named_gen_pool(struct device_node *np, 131static inline struct gen_pool *of_gen_pool_get(struct device_node *np,
132 const char *propname, int index) 132 const char *propname, int index)
133{ 133{
134 return NULL; 134 return NULL;
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index 6ba7cf23748f..ad35f300b9a4 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -384,6 +384,14 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp);
384void drain_all_pages(struct zone *zone); 384void drain_all_pages(struct zone *zone);
385void drain_local_pages(struct zone *zone); 385void drain_local_pages(struct zone *zone);
386 386
387#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
388void page_alloc_init_late(void);
389#else
390static inline void page_alloc_init_late(void)
391{
392}
393#endif
394
387/* 395/*
388 * gfp_allowed_mask is set to GFP_BOOT_MASK during early boot to restrict what 396 * gfp_allowed_mask is set to GFP_BOOT_MASK during early boot to restrict what
389 * GFP flags are used before interrupts are enabled. Once interrupts are 397 * GFP flags are used before interrupts are enabled. Once interrupts are
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index cfa9351c7536..5f0be58640ea 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -439,6 +439,9 @@ extern int panic_on_unrecovered_nmi;
439extern int panic_on_io_nmi; 439extern int panic_on_io_nmi;
440extern int panic_on_warn; 440extern int panic_on_warn;
441extern int sysctl_panic_on_stackoverflow; 441extern int sysctl_panic_on_stackoverflow;
442
443extern bool crash_kexec_post_notifiers;
444
442/* 445/*
443 * Only to be used by arch init code. If the user over-wrote the default 446 * Only to be used by arch init code. If the user over-wrote the default
444 * CONFIG_PANIC_TIMEOUT, honor it. 447 * CONFIG_PANIC_TIMEOUT, honor it.
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index 0215ffd63069..cc4b01972060 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -101,6 +101,9 @@ void __next_mem_range_rev(u64 *idx, int nid, ulong flags,
101 struct memblock_type *type_b, phys_addr_t *out_start, 101 struct memblock_type *type_b, phys_addr_t *out_start,
102 phys_addr_t *out_end, int *out_nid); 102 phys_addr_t *out_end, int *out_nid);
103 103
104void __next_reserved_mem_region(u64 *idx, phys_addr_t *out_start,
105 phys_addr_t *out_end);
106
104/** 107/**
105 * for_each_mem_range - iterate through memblock areas from type_a and not 108 * for_each_mem_range - iterate through memblock areas from type_a and not
106 * included in type_b. Or just type_a if type_b is NULL. 109 * included in type_b. Or just type_a if type_b is NULL.
@@ -142,6 +145,21 @@ void __next_mem_range_rev(u64 *idx, int nid, ulong flags,
142 __next_mem_range_rev(&i, nid, flags, type_a, type_b, \ 145 __next_mem_range_rev(&i, nid, flags, type_a, type_b, \
143 p_start, p_end, p_nid)) 146 p_start, p_end, p_nid))
144 147
148/**
149 * for_each_reserved_mem_region - iterate over all reserved memblock areas
150 * @i: u64 used as loop variable
151 * @p_start: ptr to phys_addr_t for start address of the range, can be %NULL
152 * @p_end: ptr to phys_addr_t for end address of the range, can be %NULL
153 *
154 * Walks over reserved areas of memblock. Available as soon as memblock
155 * is initialized.
156 */
157#define for_each_reserved_mem_region(i, p_start, p_end) \
158 for (i = 0UL, \
159 __next_reserved_mem_region(&i, p_start, p_end); \
160 i != (u64)ULLONG_MAX; \
161 __next_reserved_mem_region(&i, p_start, p_end))
162
145#ifdef CONFIG_MOVABLE_NODE 163#ifdef CONFIG_MOVABLE_NODE
146static inline bool memblock_is_hotpluggable(struct memblock_region *m) 164static inline bool memblock_is_hotpluggable(struct memblock_region *m)
147{ 165{
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 99959a34f4f1..2e872f92dbac 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1635,6 +1635,8 @@ extern void free_highmem_page(struct page *page);
1635extern void adjust_managed_page_count(struct page *page, long count); 1635extern void adjust_managed_page_count(struct page *page, long count);
1636extern void mem_init_print_info(const char *str); 1636extern void mem_init_print_info(const char *str);
1637 1637
1638extern void reserve_bootmem_region(unsigned long start, unsigned long end);
1639
1638/* Free the reserved page into the buddy system, so it gets managed. */ 1640/* Free the reserved page into the buddy system, so it gets managed. */
1639static inline void __free_reserved_page(struct page *page) 1641static inline void __free_reserved_page(struct page *page)
1640{ 1642{
@@ -1724,7 +1726,8 @@ extern void sparse_memory_present_with_active_regions(int nid);
1724 1726
1725#if !defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) && \ 1727#if !defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) && \
1726 !defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID) 1728 !defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID)
1727static inline int __early_pfn_to_nid(unsigned long pfn) 1729static inline int __early_pfn_to_nid(unsigned long pfn,
1730 struct mminit_pfnnid_cache *state)
1728{ 1731{
1729 return 0; 1732 return 0;
1730} 1733}
@@ -1732,7 +1735,8 @@ static inline int __early_pfn_to_nid(unsigned long pfn)
1732/* please see mm/page_alloc.c */ 1735/* please see mm/page_alloc.c */
1733extern int __meminit early_pfn_to_nid(unsigned long pfn); 1736extern int __meminit early_pfn_to_nid(unsigned long pfn);
1734/* there is a per-arch backend function. */ 1737/* there is a per-arch backend function. */
1735extern int __meminit __early_pfn_to_nid(unsigned long pfn); 1738extern int __meminit __early_pfn_to_nid(unsigned long pfn,
1739 struct mminit_pfnnid_cache *state);
1736#endif 1740#endif
1737 1741
1738extern void set_dma_reserve(unsigned long new_dma_reserve); 1742extern void set_dma_reserve(unsigned long new_dma_reserve);
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 54d74f6eb233..754c25966a0a 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -762,6 +762,14 @@ typedef struct pglist_data {
762 /* Number of pages migrated during the rate limiting time interval */ 762 /* Number of pages migrated during the rate limiting time interval */
763 unsigned long numabalancing_migrate_nr_pages; 763 unsigned long numabalancing_migrate_nr_pages;
764#endif 764#endif
765
766#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
767 /*
768 * If memory initialisation on large machines is deferred then this
769 * is the first PFN that needs to be initialised.
770 */
771 unsigned long first_deferred_pfn;
772#endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
765} pg_data_t; 773} pg_data_t;
766 774
767#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages) 775#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
@@ -1216,11 +1224,16 @@ void sparse_init(void);
1216#define sparse_index_init(_sec, _nid) do {} while (0) 1224#define sparse_index_init(_sec, _nid) do {} while (0)
1217#endif /* CONFIG_SPARSEMEM */ 1225#endif /* CONFIG_SPARSEMEM */
1218 1226
1219#ifdef CONFIG_NODES_SPAN_OTHER_NODES 1227/*
1220bool early_pfn_in_nid(unsigned long pfn, int nid); 1228 * During memory init memblocks map pfns to nids. The search is expensive and
1221#else 1229 * this caches recent lookups. The implementation of __early_pfn_to_nid
1222#define early_pfn_in_nid(pfn, nid) (1) 1230 * may treat start/end as pfns or sections.
1223#endif 1231 */
1232struct mminit_pfnnid_cache {
1233 unsigned long last_start;
1234 unsigned long last_end;
1235 int last_nid;
1236};
1224 1237
1225#ifndef early_pfn_valid 1238#ifndef early_pfn_valid
1226#define early_pfn_valid(pfn) (1) 1239#define early_pfn_valid(pfn) (1)
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
index 50a8486c524b..9b1ef0c820a7 100644
--- a/include/linux/scatterlist.h
+++ b/include/linux/scatterlist.h
@@ -265,13 +265,16 @@ int sg_alloc_table_from_pages(struct sg_table *sgt,
265 unsigned long offset, unsigned long size, 265 unsigned long offset, unsigned long size,
266 gfp_t gfp_mask); 266 gfp_t gfp_mask);
267 267
268size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, void *buf,
269 size_t buflen, off_t skip, bool to_buffer);
270
268size_