Lines Matching refs:asid
14 #include <asm/asid.h>
21 #define asid2idx(info, asid) (((asid) & ~ASID_MASK(info)) >> (info)->ctxt_shift)
27 u64 asid;
33 asid = atomic64_xchg_relaxed(&active_asid(info, i), 0);
41 if (asid == 0)
42 asid = reserved_asid(info, i);
43 __set_bit(asid2idx(info, asid), info->map);
44 reserved_asid(info, i) = asid;
54 static bool check_update_reserved_asid(struct asid_info *info, u64 asid,
70 if (reserved_asid(info, cpu) == asid) {
83 u64 asid = atomic64_read(pasid);
86 if (asid != 0) {
87 u64 newasid = generation | (asid & ~ASID_MASK(info));
93 if (check_update_reserved_asid(info, asid, newasid))
100 if (!__test_and_set_bit(asid2idx(info, asid), info->map))
111 asid = find_next_zero_bit(info->map, NUM_CTXT_ASIDS(info), cur_idx);
112 if (asid != NUM_CTXT_ASIDS(info))
121 asid = find_next_zero_bit(info->map, NUM_CTXT_ASIDS(info), 1);
124 __set_bit(asid, info->map);
125 cur_idx = asid;
127 return idx2asid(info, asid) | generation;
141 u64 asid;
145 asid = atomic64_read(pasid);
146 if ((asid ^ atomic64_read(&info->generation)) >> info->bits) {
147 asid = new_context(info, pasid, mm);
148 atomic64_set(pasid, asid);
154 atomic64_set(&active_asid(info, cpu), asid);
162 * @info: Pointer to the asid allocator structure