aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/memory_hotplug.h
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2018-02-16 09:47:26 -0500
committerThomas Gleixner <tglx@linutronix.de>2018-02-16 09:47:26 -0500
commit6dee6ae9d62642e81def4d461d71f13a6496ab59 (patch)
tree6c75d416c427a59f190e197ad83fe59b7bebf656 /include/linux/memory_hotplug.h
parent1beaeacdc88b537703d04d5536235d0bbb36db93 (diff)
parent0b24a0bbe2147815d982d9335c41bb10c04f40bc (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.h29
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;
13struct mem_section; 13struct mem_section;
14struct memory_block; 14struct memory_block;
15struct resource; 15struct resource;
16struct 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
127extern bool is_pageblock_removable_nolock(struct page *page); 128extern bool is_pageblock_removable_nolock(struct page *page);
128extern int arch_remove_memory(u64 start, u64 size); 129extern int arch_remove_memory(u64 start, u64 size,
130 struct vmem_altmap *altmap);
129extern int __remove_pages(struct zone *zone, unsigned long start_pfn, 131extern 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 */
134extern int __add_pages(int nid, unsigned long start_pfn, 136extern 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
138static inline int add_pages(int nid, unsigned long start_pfn, 140static 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 */
144int add_pages(int nid, unsigned long start_pfn, 147int 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 *));
319extern int add_memory(int nid, u64 start, u64 size); 322extern int add_memory(int nid, u64 start, u64 size);
320extern int add_memory_resource(int nid, struct resource *resource, bool online); 323extern int add_memory_resource(int nid, struct resource *resource, bool online);
321extern int arch_add_memory(int nid, u64 start, u64 size, bool want_memblock); 324extern int arch_add_memory(int nid, u64 start, u64 size,
325 struct vmem_altmap *altmap, bool want_memblock);
322extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, 326extern 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);
324extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages); 328extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages);
325extern bool is_memblock_offlined(struct memory_block *mem); 329extern bool is_memblock_offlined(struct memory_block *mem);
326extern void remove_memory(int nid, u64 start, u64 size); 330extern void remove_memory(int nid, u64 start, u64 size);
327extern int sparse_add_one_section(struct pglist_data *pgdat, unsigned long start_pfn); 331extern int sparse_add_one_section(struct pglist_data *pgdat,
332 unsigned long start_pfn, struct vmem_altmap *altmap);
328extern void sparse_remove_one_section(struct zone *zone, struct mem_section *ms, 333extern 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);
330extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map, 335extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map,
331 unsigned long pnum); 336 unsigned long pnum);
332extern bool allow_online_pfn_range(int nid, unsigned long pfn, unsigned long nr_pages, 337extern bool allow_online_pfn_range(int nid, unsigned long pfn, unsigned long nr_pages,