Lines Matching refs:asid

34 #define asid2idx(asid)		(((asid) & ~ASID_MASK) >> 1)  argument
38 #define asid2idx(asid) ((asid) & ~ASID_MASK) argument
45 u32 asid; in get_cpu_asid_bits() local
55 asid = 8; in get_cpu_asid_bits()
58 asid = 16; in get_cpu_asid_bits()
61 return asid; in get_cpu_asid_bits()
67 u32 asid = get_cpu_asid_bits(); in verify_cpu_asid_bits() local
69 if (asid < asid_bits) { in verify_cpu_asid_bits()
75 smp_processor_id(), asid, asid_bits); in verify_cpu_asid_bits()
83 u64 asid; in flush_context() local
89 asid = atomic64_xchg_relaxed(&per_cpu(active_asids, i), 0); in flush_context()
97 if (asid == 0) in flush_context()
98 asid = per_cpu(reserved_asids, i); in flush_context()
99 __set_bit(asid2idx(asid), asid_map); in flush_context()
100 per_cpu(reserved_asids, i) = asid; in flush_context()
110 static bool check_update_reserved_asid(u64 asid, u64 newasid) in check_update_reserved_asid() argument
125 if (per_cpu(reserved_asids, cpu) == asid) { in check_update_reserved_asid()
137 u64 asid = atomic64_read(&mm->context.id); in new_context() local
140 if (asid != 0) { in new_context()
141 u64 newasid = generation | (asid & ~ASID_MASK); in new_context()
147 if (check_update_reserved_asid(asid, newasid)) in new_context()
154 if (!__test_and_set_bit(asid2idx(asid), asid_map)) in new_context()
165 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, cur_idx); in new_context()
166 if (asid != NUM_USER_ASIDS) in new_context()
175 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, 1); in new_context()
178 __set_bit(asid, asid_map); in new_context()
179 cur_idx = asid; in new_context()
180 return idx2asid(asid) | generation; in new_context()
186 u64 asid, old_active_asid; in check_and_switch_context() local
191 asid = atomic64_read(&mm->context.id); in check_and_switch_context()
209 !((asid ^ atomic64_read(&asid_generation)) >> asid_bits) && in check_and_switch_context()
211 old_active_asid, asid)) in check_and_switch_context()
216 asid = atomic64_read(&mm->context.id); in check_and_switch_context()
217 if ((asid ^ atomic64_read(&asid_generation)) >> asid_bits) { in check_and_switch_context()
218 asid = new_context(mm); in check_and_switch_context()
219 atomic64_set(&mm->context.id, asid); in check_and_switch_context()
225 atomic64_set(&per_cpu(active_asids, cpu), asid); in check_and_switch_context()