aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/mm/mem.c')
-rw-r--r--arch/powerpc/mm/mem.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 1281c6eb3a85..fe8c61149fb8 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -127,7 +127,8 @@ int __weak remove_section_mapping(unsigned long start, unsigned long end)
127 return -ENODEV; 127 return -ENODEV;
128} 128}
129 129
130int arch_add_memory(int nid, u64 start, u64 size, bool want_memblock) 130int arch_add_memory(int nid, u64 start, u64 size, struct vmem_altmap *altmap,
131 bool want_memblock)
131{ 132{
132 unsigned long start_pfn = start >> PAGE_SHIFT; 133 unsigned long start_pfn = start >> PAGE_SHIFT;
133 unsigned long nr_pages = size >> PAGE_SHIFT; 134 unsigned long nr_pages = size >> PAGE_SHIFT;
@@ -143,15 +144,14 @@ int arch_add_memory(int nid, u64 start, u64 size, bool want_memblock)
143 return -EFAULT; 144 return -EFAULT;
144 } 145 }
145 146
146 return __add_pages(nid, start_pfn, nr_pages, want_memblock); 147 return __add_pages(nid, start_pfn, nr_pages, altmap, want_memblock);
147} 148}
148 149
149#ifdef CONFIG_MEMORY_HOTREMOVE 150#ifdef CONFIG_MEMORY_HOTREMOVE
150int arch_remove_memory(u64 start, u64 size) 151int arch_remove_memory(u64 start, u64 size, struct vmem_altmap *altmap)
151{ 152{
152 unsigned long start_pfn = start >> PAGE_SHIFT; 153 unsigned long start_pfn = start >> PAGE_SHIFT;
153 unsigned long nr_pages = size >> PAGE_SHIFT; 154 unsigned long nr_pages = size >> PAGE_SHIFT;
154 struct vmem_altmap *altmap;
155 struct page *page; 155 struct page *page;
156 int ret; 156 int ret;
157 157
@@ -160,11 +160,10 @@ int arch_remove_memory(u64 start, u64 size)
160 * when querying the zone. 160 * when querying the zone.
161 */ 161 */
162 page = pfn_to_page(start_pfn); 162 page = pfn_to_page(start_pfn);
163 altmap = to_vmem_altmap((unsigned long) page);
164 if (altmap) 163 if (altmap)
165 page += vmem_altmap_offset(altmap); 164 page += vmem_altmap_offset(altmap);
166 165
167 ret = __remove_pages(page_zone(page), start_pfn, nr_pages); 166 ret = __remove_pages(page_zone(page), start_pfn, nr_pages, altmap);
168 if (ret) 167 if (ret)
169 return ret; 168 return ret;
170 169