Lines Matching refs:id

97 static unsigned int steal_context_smp(unsigned int id)
107 mm = context_mm[id];
113 id++;
114 if (id > LAST_CONTEXT)
115 id = FIRST_CONTEXT;
120 mm->context.id = MMU_NO_CONTEXT;
131 __set_bit(id, stale_map[i]);
135 return id;
153 unsigned int id;
155 for (id = FIRST_CONTEXT; id <= LAST_CONTEXT; id++) {
157 mm = context_mm[id];
160 mm->context.id = MMU_NO_CONTEXT;
161 if (id != FIRST_CONTEXT) {
162 context_mm[id] = NULL;
163 __clear_bit(id, context_map);
166 __clear_bit(id, stale_map[cpu]);
182 static unsigned int steal_context_up(unsigned int id)
188 mm = context_mm[id];
194 mm->context.id = MMU_NO_CONTEXT;
198 __clear_bit(id, stale_map[cpu]);
200 return id;
203 static void set_context(unsigned long id, pgd_t *pgd)
217 mtspr(SPRN_M_CASID, id - 1);
222 mtspr(SPRN_PID, id);
230 unsigned int id;
249 id = next->context.id;
250 if (likely(id != MMU_NO_CONTEXT))
254 id = next_context;
255 if (id > LAST_CONTEXT)
256 id = FIRST_CONTEXT;
262 id = steal_context_smp(id);
263 if (id == MMU_NO_CONTEXT)
268 id = steal_all_contexts();
270 id = steal_context_up(id);
276 while (__test_and_set_bit(id, map)) {
277 id = find_next_zero_bit(map, LAST_CONTEXT+1, id);
278 if (id > LAST_CONTEXT)
279 id = FIRST_CONTEXT;
282 next_context = id + 1;
283 context_mm[id] = next;
284 next->context.id = id;
291 if (IS_ENABLED(CONFIG_SMP) && test_bit(id, stale_map[cpu])) {
298 __clear_bit(id, stale_map[i]);
305 set_context(id, next->pgd);
307 tsk->thread.pid = id;
317 mm->context.id = MMU_NO_CONTEXT;
329 unsigned int id;
331 if (mm->context.id == MMU_NO_CONTEXT)
337 id = mm->context.id;
338 if (id != MMU_NO_CONTEXT) {
339 __clear_bit(id, context_map);
340 mm->context.id = MMU_NO_CONTEXT;
341 context_mm[id] = NULL;