Lines Matching refs:asid
59 u64 context_id, asid; in a15_erratum_get_cpumask() local
70 asid = per_cpu(active_asids, cpu).counter; in a15_erratum_get_cpumask()
71 if (asid == 0) in a15_erratum_get_cpumask()
72 asid = per_cpu(reserved_asids, cpu); in a15_erratum_get_cpumask()
73 if (context_id == asid) in a15_erratum_get_cpumask()
142 u64 asid; in flush_context() local
147 asid = atomic64_xchg(&per_cpu(active_asids, i), 0); in flush_context()
155 if (asid == 0) in flush_context()
156 asid = per_cpu(reserved_asids, i); in flush_context()
157 __set_bit(asid & ~ASID_MASK, asid_map); in flush_context()
158 per_cpu(reserved_asids, i) = asid; in flush_context()
168 static int is_reserved_asid(u64 asid) in is_reserved_asid() argument
172 if (per_cpu(reserved_asids, cpu) == asid) in is_reserved_asid()
180 u64 asid = atomic64_read(&mm->context.id); in new_context() local
183 if (asid != 0) { in new_context()
188 if (is_reserved_asid(asid)) in new_context()
189 return generation | (asid & ~ASID_MASK); in new_context()
195 asid &= ~ASID_MASK; in new_context()
196 if (!__test_and_set_bit(asid, asid_map)) in new_context()
209 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, cur_idx); in new_context()
210 if (asid == NUM_USER_ASIDS) { in new_context()
214 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, 1); in new_context()
217 __set_bit(asid, asid_map); in new_context()
218 cur_idx = asid; in new_context()
221 asid |= generation; in new_context()
223 return asid; in new_context()
230 u64 asid; in check_and_switch_context() local
242 asid = atomic64_read(&mm->context.id); in check_and_switch_context()
243 if (!((asid ^ atomic64_read(&asid_generation)) >> ASID_BITS) in check_and_switch_context()
244 && atomic64_xchg(&per_cpu(active_asids, cpu), asid)) in check_and_switch_context()
249 asid = atomic64_read(&mm->context.id); in check_and_switch_context()
250 if ((asid ^ atomic64_read(&asid_generation)) >> ASID_BITS) { in check_and_switch_context()
251 asid = new_context(mm, cpu); in check_and_switch_context()
252 atomic64_set(&mm->context.id, asid); in check_and_switch_context()
260 atomic64_set(&per_cpu(active_asids, cpu), asid); in check_and_switch_context()