diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-01 20:47:51 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-01 20:47:51 -0400 |
| commit | 2d01eedf1d14432f4db5388a49dc5596a8c5bd02 (patch) | |
| tree | 646525acc0475b2899827c1bfbd25f05ec1b8092 /include/linux | |
| parent | 6ac15baacb6ecd87c66209627753b96ded3b4515 (diff) | |
| parent | abdd4a7025282fbe3737e1bcb5f51afc8d8ea1b8 (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.h | 6 | ||||
| -rw-r--r-- | include/linux/gfp.h | 8 | ||||
| -rw-r--r-- | include/linux/kernel.h | 3 | ||||
| -rw-r--r-- | include/linux/memblock.h | 18 | ||||
| -rw-r--r-- | include/linux/mm.h | 8 | ||||
| -rw-r--r-- | include/linux/mmzone.h | 23 | ||||
| -rw-r--r-- | include/linux/scatterlist.h | 7 |
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 | ||
| 120 | extern struct gen_pool *devm_gen_pool_create(struct device *dev, | 120 | extern struct gen_pool *devm_gen_pool_create(struct device *dev, |
| 121 | int min_alloc_order, int nid); | 121 | int min_alloc_order, int nid); |
| 122 | extern struct gen_pool *dev_get_gen_pool(struct device *dev); | 122 | extern struct gen_pool *gen_pool_get(struct device *dev); |
| 123 | 123 | ||
| 124 | bool addr_in_gen_pool(struct gen_pool *pool, unsigned long start, | 124 | bool 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 |
| 128 | extern struct gen_pool *of_get_named_gen_pool(struct device_node *np, | 128 | extern 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 |
| 131 | static inline struct gen_pool *of_get_named_gen_pool(struct device_node *np, | 131 | static 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); | |||
| 384 | void drain_all_pages(struct zone *zone); | 384 | void drain_all_pages(struct zone *zone); |
| 385 | void drain_local_pages(struct zone *zone); | 385 | void drain_local_pages(struct zone *zone); |
| 386 | 386 | ||
| 387 | #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT | ||
| 388 | void page_alloc_init_late(void); | ||
| 389 | #else | ||
| 390 | static 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; | |||
| 439 | extern int panic_on_io_nmi; | 439 | extern int panic_on_io_nmi; |
| 440 | extern int panic_on_warn; | 440 | extern int panic_on_warn; |
| 441 | extern int sysctl_panic_on_stackoverflow; | 441 | extern int sysctl_panic_on_stackoverflow; |
| 442 | |||
| 443 | extern 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 | ||
| 104 | void __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 |
| 146 | static inline bool memblock_is_hotpluggable(struct memblock_region *m) | 164 | static 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); | |||
| 1635 | extern void adjust_managed_page_count(struct page *page, long count); | 1635 | extern void adjust_managed_page_count(struct page *page, long count); |
| 1636 | extern void mem_init_print_info(const char *str); | 1636 | extern void mem_init_print_info(const char *str); |
| 1637 | 1637 | ||
| 1638 | extern 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. */ |
| 1639 | static inline void __free_reserved_page(struct page *page) | 1641 | static 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) |
| 1727 | static inline int __early_pfn_to_nid(unsigned long pfn) | 1729 | static 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 */ |
| 1733 | extern int __meminit early_pfn_to_nid(unsigned long pfn); | 1736 | extern 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. */ |
| 1735 | extern int __meminit __early_pfn_to_nid(unsigned long pfn); | 1738 | extern int __meminit __early_pfn_to_nid(unsigned long pfn, |
| 1739 | struct mminit_pfnnid_cache *state); | ||
| 1736 | #endif | 1740 | #endif |
| 1737 | 1741 | ||
| 1738 | extern void set_dma_reserve(unsigned long new_dma_reserve); | 1742 | extern 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 | /* |
| 1220 | bool 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 | */ |
| 1232 | struct 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 | ||
| 268 | size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, void *buf, | ||
| 269 | size_t buflen, off_t skip, bool to_buffer); | ||
| 270 | |||
| 268 | size_ | ||
