ARM: mm: use bitmap operations when allocating new ASIDs
authorWill Deacon <will.deacon@arm.com>
Wed, 1 Aug 2012 13:57:49 +0000 (14:57 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 5 Nov 2012 16:25:25 +0000 (16:25 +0000)
commitbf51bb82ccd9a74e9702d06107b23e54b27a5707
treedcc0ab6b18523602bf308c88926e85fcd6b19f30
parent4b883160835faf38c9356f0885cf491a1e661e88
ARM: mm: use bitmap operations when allocating new ASIDs

When allocating a new ASID, we must take care not to re-assign a
reserved ASID-value to a new mm. This requires us to check each
candidate ASID against those currently reserved by other cores before
assigning a new ASID to the current mm.

This patch improves the ASID allocation algorithm by using a
bitmap-based approach. Rather than iterating over the reserved ASID
array for each candidate ASID, we simply find the first zero bit,
ensuring that those indices corresponding to reserved ASIDs are set
when flushing during a rollover event.

Tested-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm/mm/context.c