aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/include
diff options
context:
space:
mode:
authorPaul Burton <paul.burton@mips.com>2019-02-02 01:43:19 +0000
committerPaul Burton <paul.burton@mips.com>2019-02-04 10:56:18 -0800
commitc9b2a3dc240c444b4f7b556e2cce756828720856 (patch)
tree973ec0ea4be746b49f52f03c1f7d8244bcd0cb80 /arch/mips/include
parentMIPS: mm: Avoid HTW stop/start when dropping an inactive mm (diff)
downloadlinux-dev-c9b2a3dc240c444b4f7b556e2cce756828720856.tar.xz
linux-dev-c9b2a3dc240c444b4f7b556e2cce756828720856.zip
MIPS: mm: Consolidate drop_mmu_context() has-ASID checks
If an mm does not have an ASID on the local CPU then drop_mmu_context() is always redundant, since there's no context to "drop". Various callers of drop_mmu_context() check whether the mm has been allocated an ASID before making the call. Move that check into drop_mmu_context() and remove it from callers to simplify them. Signed-off-by: Paul Burton <paul.burton@mips.com> Cc: linux-mips@vger.kernel.org
Diffstat (limited to 'arch/mips/include')
-rw-r--r--arch/mips/include/asm/mmu_context.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h
index 5d0a73a5cf40..1b8392dcd354 100644
--- a/arch/mips/include/asm/mmu_context.h
+++ b/arch/mips/include/asm/mmu_context.h
@@ -186,7 +186,9 @@ drop_mmu_context(struct mm_struct *mm)
local_irq_save(flags);
cpu = smp_processor_id();
- if (cpumask_test_cpu(cpu, mm_cpumask(mm))) {
+ if (!cpu_context(cpu, mm)) {
+ /* no-op */
+ } else if (cpumask_test_cpu(cpu, mm_cpumask(mm))) {
htw_stop();
get_new_mmu_context(mm);
write_c0_entryhi(cpu_asid(cpu, mm));