diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2018-06-21 13:37:50 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-06-21 13:37:49 -0700 |
| commit | dc0fcde6ce16a61dfc4ca31386b46ffec3e0493d (patch) | |
| tree | 45b945f8827aa78b2393738a0dad3d74b1c4569f /arch | |
| parent | 3850f31471d4c6546173eda6fdeb22ab4b18f5b6 (diff) | |
| parent | ebef173049eb8ba6c97ba0fa8367796bfafac420 (diff) | |
Merge "ARM: memory hotplug: stop cpus while memory hotremove"
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm64/mm/mmu.c | 7 |
1 files changed, 7 insertions, 0 deletions
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); } |
