Lines Matching refs:id

97 static unsigned int steal_context_smp(unsigned int id)  in steal_context_smp()  argument
107 mm = context_mm[id]; in steal_context_smp()
113 id++; in steal_context_smp()
114 if (id > LAST_CONTEXT) in steal_context_smp()
115 id = FIRST_CONTEXT; in steal_context_smp()
120 mm->context.id = MMU_NO_CONTEXT; in steal_context_smp()
131 __set_bit(id, stale_map[i]); in steal_context_smp()
135 return id; in steal_context_smp()
153 unsigned int id; in steal_all_contexts() local
155 for (id = FIRST_CONTEXT; id <= LAST_CONTEXT; id++) { in steal_all_contexts()
157 mm = context_mm[id]; in steal_all_contexts()
160 mm->context.id = MMU_NO_CONTEXT; in steal_all_contexts()
161 if (id != FIRST_CONTEXT) { in steal_all_contexts()
162 context_mm[id] = NULL; in steal_all_contexts()
163 __clear_bit(id, context_map); in steal_all_contexts()
166 __clear_bit(id, stale_map[cpu]); in steal_all_contexts()
182 static unsigned int steal_context_up(unsigned int id) in steal_context_up() argument
188 mm = context_mm[id]; in steal_context_up()
194 mm->context.id = MMU_NO_CONTEXT; in steal_context_up()
198 __clear_bit(id, stale_map[cpu]); in steal_context_up()
200 return id; in steal_context_up()
203 static void set_context(unsigned long id, pgd_t *pgd) in set_context() argument
217 mtspr(SPRN_M_CASID, id - 1); in set_context()
225 mtspr(SPRN_PID, id); in set_context()
233 unsigned int id; in switch_mmu_context() local
252 id = next->context.id; in switch_mmu_context()
253 if (likely(id != MMU_NO_CONTEXT)) in switch_mmu_context()
257 id = next_context; in switch_mmu_context()
258 if (id > LAST_CONTEXT) in switch_mmu_context()
259 id = FIRST_CONTEXT; in switch_mmu_context()
265 id = steal_context_smp(id); in switch_mmu_context()
266 if (id == MMU_NO_CONTEXT) in switch_mmu_context()
271 id = steal_all_contexts(); in switch_mmu_context()
273 id = steal_context_up(id); in switch_mmu_context()
279 while (__test_and_set_bit(id, map)) { in switch_mmu_context()
280 id = find_next_zero_bit(map, LAST_CONTEXT+1, id); in switch_mmu_context()
281 if (id > LAST_CONTEXT) in switch_mmu_context()
282 id = FIRST_CONTEXT; in switch_mmu_context()
285 next_context = id + 1; in switch_mmu_context()
286 context_mm[id] = next; in switch_mmu_context()
287 next->context.id = id; in switch_mmu_context()
294 if (IS_ENABLED(CONFIG_SMP) && test_bit(id, stale_map[cpu])) { in switch_mmu_context()
301 __clear_bit(id, stale_map[i]); in switch_mmu_context()
308 set_context(id, next->pgd); in switch_mmu_context()
310 tsk->thread.pid = id; in switch_mmu_context()
320 mm->context.id = MMU_NO_CONTEXT; in init_new_context()
332 unsigned int id; in destroy_context() local
334 if (mm->context.id == MMU_NO_CONTEXT) in destroy_context()
340 id = mm->context.id; in destroy_context()
341 if (id != MMU_NO_CONTEXT) { in destroy_context()
342 __clear_bit(id, context_map); in destroy_context()
343 mm->context.id = MMU_NO_CONTEXT; in destroy_context()
344 context_mm[id] = NULL; in destroy_context()