Lines Matching refs:id
109 static unsigned int steal_context_smp(unsigned int id)
119 mm = context_mm[id];
125 id++;
126 if (id > LAST_CONTEXT)
127 id = FIRST_CONTEXT;
130 pr_hardcont(" | steal %d from 0x%p", id, mm);
133 mm->context.id = MMU_NO_CONTEXT;
144 __set_bit(id, stale_map[i]);
148 return id;
169 unsigned int id;
171 for (id = FIRST_CONTEXT; id <= LAST_CONTEXT; id++) {
173 mm = context_mm[id];
175 pr_hardcont(" | steal %d from 0x%p", id, mm);
178 mm->context.id = MMU_NO_CONTEXT;
179 if (id != FIRST_CONTEXT) {
180 context_mm[id] = NULL;
181 __clear_bit(id, context_map);
187 __clear_bit(id, stale_map[cpu]);
204 static unsigned int steal_context_up(unsigned int id)
212 mm = context_mm[id];
214 pr_hardcont(" | steal %d from 0x%p", id, mm);
220 mm->context.id = MMU_NO_CONTEXT;
224 __clear_bit(id, stale_map[cpu]);
227 return id;
233 unsigned int id, nrf, nact;
236 for (id = FIRST_CONTEXT; id <= LAST_CONTEXT; id++) {
237 int used = test_bit(id, context_map);
240 if (used != (context_mm[id] != NULL))
242 id, used ? "used" : "free", context_mm[id]);
243 if (context_mm[id] != NULL)
244 nact += context_mm[id]->context.active;
264 unsigned int id;
273 pr_hard("[%d] activating context for mm @%p, active=%d, id=%d",
274 cpu, next, next->context.active, next->context.id);
289 id = next->context.id;
290 if (likely(id != MMU_NO_CONTEXT)) {
292 if (context_mm[id] != next)
293 pr_err("MMU: mm 0x%p has id %d but context_mm[%d] says 0x%p\n",
294 next, id, id, context_mm[id]);
300 id = next_context;
301 if (id > LAST_CONTEXT)
302 id = FIRST_CONTEXT;
309 id = steal_context_smp(id);
310 if (id == MMU_NO_CONTEXT)
316 id = steal_all_contexts();
318 id = steal_context_up(id);
324 while (__test_and_set_bit(id, map)) {
325 id = find_next_zero_bit(map, LAST_CONTEXT+1, id);
326 if (id > LAST_CONTEXT)
327 id = FIRST_CONTEXT;
330 next_context = id + 1;
331 context_mm[id] = next;
332 next->context.id = id;
333 pr_hardcont(" | new id=%d,nrf=%d", id, nr_free_contexts);
342 if (test_bit(id, stale_map[cpu])) {
344 id, cpu_first_thread_sibling(cpu),
353 __clear_bit(id, stale_map[i]);
359 pr_hardcont(" -> %d\n", id);
360 set_context(id, next->pgd);
373 * explicitly against context.id == 0. This ensures that we properly
375 * have id == 0) and don't alter context slice inherited via fork (which
376 * will have id != 0).
378 if (mm->context.id == 0)
380 mm->context.id = MMU_NO_CONTEXT;
392 unsigned int id;
394 if (mm->context.id == MMU_NO_CONTEXT)
400 id = mm->context.id;
401 if (id != MMU_NO_CONTEXT) {
402 __clear_bit(id, context_map);
403 mm->context.id = MMU_NO_CONTEXT;
407 context_mm[id] = NULL;