Lines Matching refs:asid
38 #define ctxid2asid(asid) ((asid) & ~ASID_MASK)
39 #define asid2ctxid(asid, genid) ((asid) | (genid))
44 u32 asid;
54 asid = 8;
57 asid = 16;
60 return asid;
66 u32 asid = get_cpu_asid_bits();
68 if (asid < asid_bits) {
74 smp_processor_id(), asid, asid_bits);
101 #define asid_gen_match(asid) \
102 (!(((asid) ^ atomic64_read(&asid_generation)) >> asid_bits))
107 u64 asid;
113 asid = atomic64_xchg_relaxed(&per_cpu(active_asids, i), 0);
121 if (asid == 0)
122 asid = per_cpu(reserved_asids, i);
123 __set_bit(ctxid2asid(asid), asid_map);
124 per_cpu(reserved_asids, i) = asid;
134 static bool check_update_reserved_asid(u64 asid, u64 newasid)
149 if (per_cpu(reserved_asids, cpu) == asid) {
161 u64 asid = atomic64_read(&mm->context.id);
164 if (asid != 0) {
165 u64 newasid = asid2ctxid(ctxid2asid(asid), generation);
171 if (check_update_reserved_asid(asid, newasid))
186 if (!__test_and_set_bit(ctxid2asid(asid), asid_map))
197 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, cur_idx);
198 if (asid != NUM_USER_ASIDS)
207 asid = find_next_zero_bit(asid_map, NUM_USER_ASIDS, 1);
210 __set_bit(asid, asid_map);
211 cur_idx = asid;
212 return asid2ctxid(asid, generation);
219 u64 asid, old_active_asid;
224 asid = atomic64_read(&mm->context.id);
241 if (old_active_asid && asid_gen_match(asid) &&
243 old_active_asid, asid))
248 asid = atomic64_read(&mm->context.id);
249 if (!asid_gen_match(asid)) {
250 asid = new_context(mm);
251 atomic64_set(&mm->context.id, asid);
258 atomic64_set(this_cpu_ptr(&active_asids), asid);
276 u64 asid;
283 asid = atomic64_read(&mm->context.id);
289 asid = 0;
293 if (!asid_gen_match(asid)) {
298 asid = new_context(mm);
299 atomic64_set(&mm->context.id, asid);
303 __set_bit(ctxid2asid(asid), pinned_asid_map);
309 asid = ctxid2asid(asid);
312 if (asid && arm64_kernel_unmapped_at_el0())
313 asid |= 1;
315 return asid;
322 u64 asid = atomic64_read(&mm->context.id);
330 __clear_bit(ctxid2asid(asid), pinned_asid_map);
352 unsigned long asid = ASID(mm);
356 if (system_supports_cnp() && asid)
361 ttbr0 |= FIELD_PREP(TTBR_ASID_MASK, asid);
365 ttbr1 |= FIELD_PREP(TTBR_ASID_MASK, asid);