From ebef173049eb8ba6c97ba0fa8367796bfafac420 Mon Sep 17 00:00:00 2001 From: Venkata Rao Kakani Date: Mon, 18 Jun 2018 14:23:12 +0530 Subject: [PATCH] ARM: memory hotplug: stop cpus while memory hotremove Avoid page table corruptions during memory hotremove by stopping all other cpus. Change-Id: If4084768044dd95601bdc5993d14bc6b0a5921c3 Signed-off-by: Venkata Rao Kakani --- arch/arm64/mm/mmu.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index fc7a1c1e5d0f..24b0ed38ab7d 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -1037,7 +1037,11 @@ void remove_pagetable(unsigned long start, unsigned long end, bool direct) unsigned long addr; pgd_t *pgd; pud_t *pud; + int cpu; + for_each_possible_cpu(cpu) + if (current->cpu != cpu) + sched_isolate_cpu(cpu); for (addr = start; addr < end; addr = next) { next = pgd_addr_end(addr, end); @@ -1058,6 +1062,9 @@ void remove_pagetable(unsigned long start, unsigned long end, bool direct) } flush_tlb_all(); + for_each_possible_cpu(cpu) + if (current->cpu != cpu) + sched_unisolate_cpu_unlocked(cpu); }