]> git.karo-electronics.de Git - karo-tx-linux.git/commit
ARC: [ASID] get_new_mmu_context() refactoring
authorVineet Gupta <vgupta@synopsys.com>
Wed, 24 Jul 2013 20:53:45 +0000 (13:53 -0700)
committerVineet Gupta <vgupta@synopsys.com>
Tue, 30 Jul 2013 08:57:33 +0000 (01:57 -0700)
commit6ad96900145cf3a6d9d8a8c3b8a938181cdb6493
treee3f1c2d4eedabdef31bb9e183fb93d9266558779
parent4bed2a95f8055a32d5e8b2d150967fafee15360b
ARC: [ASID] get_new_mmu_context() refactoring

ASID allocation changes/1

This patch does 2 things:

(1) get_new_mmu_context() moves mm->ASID to a new value ONLY if it was
    from a prev allocation cycle/generation OR if mm had no ASID
    allocated (as opposed to before where it would unconditionally
    assign it a new ASID)

    Callers desiring unconditional update of ASID, e.g.local_flush_tlb_mm()
    (for parent's addess space invalidation at fork) need to first force
    the parent to an unallocated ASID.

(2) get_new_mmu_context() always sets the MMU PID reg with unchanged/new
    ASID value.

The gains are:
- consolidation of all asid alloc logic into get_new_mmu_context()
- avoiding code duplication in switch_mm() for PID reg setting
- Enables future change to fold activate_mm() into switch_mm()

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/include/asm/mmu_context.h
arch/arc/mm/tlb.c