diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2018-02-16 09:47:26 -0500 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2018-02-16 09:47:26 -0500 |
| commit | 6dee6ae9d62642e81def4d461d71f13a6496ab59 (patch) | |
| tree | 6c75d416c427a59f190e197ad83fe59b7bebf656 /include/linux/memory_hotplug.h | |
| parent | 1beaeacdc88b537703d04d5536235d0bbb36db93 (diff) | |
| parent | 0b24a0bbe2147815d982d9335c41bb10c04f40bc (diff) | |
Merge tag 'irqchip-4.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent
Pull irqchip updates for 4.16-rc2 from Marc Zyngier
- A MIPS GIC fix for spurious, masked interrupts
- A fix for a subtle IPI bug in GICv3
- Do not probe GICv3 ITSs that are marked as disabled
- Multi-MSI support for GICv2m
- Various cleanups
Diffstat (limited to 'include/linux/memory_hotplug.h')
| -rw-r--r-- | include/linux/memory_hotplug.h | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h index 58e110aee7ab..aba5f86eb038 100644 --- a/include/linux/memory_hotplug.h +++ b/include/linux/memory_hotplug.h | |||
| @@ -13,6 +13,7 @@ struct pglist_data; | |||
| 13 | struct mem_section; | 13 | struct mem_section; |
| 14 | struct memory_block; | 14 | struct memory_block; |
| 15 | struct resource; | 15 | struct resource; |
| 16 | struct vmem_altmap; | ||
| 16 | 17 | ||
| 17 | #ifdef CONFIG_MEMORY_HOTPLUG | 18 | #ifdef CONFIG_MEMORY_HOTPLUG |
| 18 | /* | 19 | /* |
| @@ -125,24 +126,26 @@ static inline bool movable_node_is_enabled(void) | |||
| 125 | 126 | ||
| 126 | #ifdef CONFIG_MEMORY_HOTREMOVE | 127 | #ifdef CONFIG_MEMORY_HOTREMOVE |
| 127 | extern bool is_pageblock_removable_nolock(struct page *page); | 128 | extern bool is_pageblock_removable_nolock(struct page *page); |
| 128 | extern int arch_remove_memory(u64 start, u64 size); | 129 | extern int arch_remove_memory(u64 start, u64 size, |
| 130 | struct vmem_altmap *altmap); | ||
| 129 | extern int __remove_pages(struct zone *zone, unsigned long start_pfn, | 131 | extern int __remove_pages(struct zone *zone, unsigned long start_pfn, |
| 130 | unsigned long nr_pages); | 132 | unsigned long nr_pages, struct vmem_altmap *altmap); |
| 131 | #endif /* CONFIG_MEMORY_HOTREMOVE */ | 133 | #endif /* CONFIG_MEMORY_HOTREMOVE */ |
| 132 | 134 | ||
| 133 | /* reasonably generic interface to expand the physical pages */ | 135 | /* reasonably generic interface to expand the physical pages */ |
| 134 | extern int __add_pages(int nid, unsigned long start_pfn, | 136 | extern int __add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, |
| 135 | unsigned long nr_pages, bool want_memblock); | 137 | struct vmem_altmap *altmap, bool want_memblock); |
| 136 | 138 | ||
| 137 | #ifndef CONFIG_ARCH_HAS_ADD_PAGES | 139 | #ifndef CONFIG_ARCH_HAS_ADD_PAGES |
| 138 | static inline int add_pages(int nid, unsigned long start_pfn, | 140 | static inline int add_pages(int nid, unsigned long start_pfn, |
| 139 | unsigned long nr_pages, bool want_memblock) | 141 | unsigned long nr_pages, struct vmem_altmap *altmap, |
| 142 | bool want_memblock) | ||
| 140 | { | 143 | { |
| 141 | return __add_pages(nid, start_pfn, nr_pages, want_memblock); | 144 | return __add_pages(nid, start_pfn, nr_pages, altmap, want_memblock); |
| 142 | } | 145 | } |
| 143 | #else /* ARCH_HAS_ADD_PAGES */ | 146 | #else /* ARCH_HAS_ADD_PAGES */ |
| 144 | int add_pages(int nid, unsigned long start_pfn, | 147 | int add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, |
| 145 | unsigned long nr_pages, bool want_memblock); | 148 | struct vmem_altmap *altmap, bool want_memblock); |
| 146 | #endif /* ARCH_HAS_ADD_PAGES */ | 149 | #endif /* ARCH_HAS_ADD_PAGES */ |
| 147 | 150 | ||
| 148 | #ifdef CONFIG_NUMA | 151 | #ifdef CONFIG_NUMA |
| @@ -318,15 +321,17 @@ extern int walk_memory_range(unsigned long start_pfn, unsigned long end_pfn, | |||
| 318 | void *arg, int (*func)(struct memory_block *, void *)); | 321 | void *arg, int (*func)(struct memory_block *, void *)); |
| 319 | extern int add_memory(int nid, u64 start, u64 size); | 322 | extern int add_memory(int nid, u64 start, u64 size); |
| 320 | extern int add_memory_resource(int nid, struct resource *resource, bool online); | 323 | extern int add_memory_resource(int nid, struct resource *resource, bool online); |
| 321 | extern int arch_add_memory(int nid, u64 start, u64 size, bool want_memblock); | 324 | extern int arch_add_memory(int nid, u64 start, u64 size, |
| 325 | struct vmem_altmap *altmap, bool want_memblock); | ||
| 322 | extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, | 326 | extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, |
| 323 | unsigned long nr_pages); | 327 | unsigned long nr_pages, struct vmem_altmap *altmap); |
| 324 | extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages); | 328 | extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages); |
| 325 | extern bool is_memblock_offlined(struct memory_block *mem); | 329 | extern bool is_memblock_offlined(struct memory_block *mem); |
| 326 | extern void remove_memory(int nid, u64 start, u64 size); | 330 | extern void remove_memory(int nid, u64 start, u64 size); |
| 327 | extern int sparse_add_one_section(struct pglist_data *pgdat, unsigned long start_pfn); | 331 | extern int sparse_add_one_section(struct pglist_data *pgdat, |
| 332 | unsigned long start_pfn, struct vmem_altmap *altmap); | ||
| 328 | extern void sparse_remove_one_section(struct zone *zone, struct mem_section *ms, | 333 | extern void sparse_remove_one_section(struct zone *zone, struct mem_section *ms, |
| 329 | unsigned long map_offset); | 334 | unsigned long map_offset, struct vmem_altmap *altmap); |
| 330 | extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map, | 335 | extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map, |
| 331 | unsigned long pnum); | 336 | unsigned long pnum); |
| 332 | extern bool allow_online_pfn_range(int nid, unsigned long pfn, unsigned long nr_pages, | 337 | extern bool allow_online_pfn_range(int nid, unsigned long pfn, unsigned long nr_pages, |
