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);
225 mtspr(SPRN_PID, id);
233 unsigned int id;
252 id = next->context.id;
253 if (likely(id != MMU_NO_CONTEXT))
257 id = next_context;
258 if (id > LAST_CONTEXT)
259 id = FIRST_CONTEXT;
265 id = steal_context_smp(id);
266 if (id == MMU_NO_CONTEXT)
271 id = steal_all_contexts();
273 id = steal_context_up(id);
279 while (__test_and_set_bit(id, map)) {
280 id = find_next_zero_bit(map, LAST_CONTEXT+1, id);
281 if (id > LAST_CONTEXT)
282 id = FIRST_CONTEXT;
285 next_context = id + 1;
286 context_mm[id] = next;
287 next->context.id = id;
294 if (IS_ENABLED(CONFIG_SMP) && test_bit(id, stale_map[cpu])) {
301 __clear_bit(id, stale_map[i]);
308 set_context(id, next->pgd);
310 tsk->thread.pid = id;
320 mm->context.id = MMU_NO_CONTEXT;
332 unsigned int id;
334 if (mm->context.id == MMU_NO_CONTEXT)
340 id = mm->context.id;
341 if (id != MMU_NO_CONTEXT) {
342 __clear_bit(id, context_map);
343 mm->context.id = MMU_NO_CONTEXT;
344 context_mm[id] = NULL;