Lines Matching refs:asid

46 	u64 asid;  in flush_context()  local
58 asid = atomic64_xchg_relaxed(&per_cpu(active_asids, i), 0); in flush_context()
66 if (asid == 0) in flush_context()
67 asid = per_cpu(reserved_asids, i); in flush_context()
68 __set_bit(asid & ~ASID_MASK, asid_map); in flush_context()
69 per_cpu(reserved_asids, i) = asid; in flush_context()
79 static bool check_update_reserved_asid(u64 asid, u64 newasid) in check_update_reserved_asid() argument
94 if (per_cpu(reserved_asids, cpu) == asid) { in check_update_reserved_asid()
106 u64 asid = atomic64_read(&mm->context.id); in new_context() local
109 if (asid != 0) { in new_context()
110 u64 newasid = generation | (asid & ~ASID_MASK); in new_context()
116 if (check_update_reserved_asid(asid, newasid)) in new_context()
123 asid &= ~ASID_MASK; in new_context()
124 if (!__test_and_set_bit(asid, asid_map)) in new_context()
134 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, cur_idx); in new_context()
135 if (asid != NUM_USER_ASIDS) in new_context()
144 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, 1); in new_context()
147 __set_bit(asid, asid_map); in new_context()
148 cur_idx = asid; in new_context()
149 return asid | generation; in new_context()
155 u64 asid; in check_and_switch_context() local
157 asid = atomic64_read(&mm->context.id); in check_and_switch_context()
166 if (!((asid ^ atomic64_read(&asid_generation)) >> asid_bits) in check_and_switch_context()
167 && atomic64_xchg_relaxed(&per_cpu(active_asids, cpu), asid)) in check_and_switch_context()
172 asid = atomic64_read(&mm->context.id); in check_and_switch_context()
173 if ((asid ^ atomic64_read(&asid_generation)) >> asid_bits) { in check_and_switch_context()
174 asid = new_context(mm, cpu); in check_and_switch_context()
175 atomic64_set(&mm->context.id, asid); in check_and_switch_context()
181 atomic64_set(&per_cpu(active_asids, cpu), asid); in check_and_switch_context()