mm: pass the vmem_altmap to arch_remove_memory and __remove_pages
We can just pass this on instead of having to do a radix tree lookup without proper locking 2 levels into the callchain. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Este cometimento está contido em:

cometido por
Dan Williams

ascendente
7b73d978a5
cometimento
da024512a1
@@ -149,11 +149,10 @@ int arch_add_memory(int nid, u64 start, u64 size, struct vmem_altmap *altmap,
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTREMOVE
|
||||
int arch_remove_memory(u64 start, u64 size)
|
||||
int arch_remove_memory(u64 start, u64 size, struct vmem_altmap *altmap)
|
||||
{
|
||||
unsigned long start_pfn = start >> PAGE_SHIFT;
|
||||
unsigned long nr_pages = size >> PAGE_SHIFT;
|
||||
struct vmem_altmap *altmap;
|
||||
struct page *page;
|
||||
int ret;
|
||||
|
||||
@@ -162,11 +161,10 @@ int arch_remove_memory(u64 start, u64 size)
|
||||
* when querying the zone.
|
||||
*/
|
||||
page = pfn_to_page(start_pfn);
|
||||
altmap = to_vmem_altmap((unsigned long) page);
|
||||
if (altmap)
|
||||
page += vmem_altmap_offset(altmap);
|
||||
|
||||
ret = __remove_pages(page_zone(page), start_pfn, nr_pages);
|
||||
ret = __remove_pages(page_zone(page), start_pfn, nr_pages, altmap);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador