Lines Matching refs:cid

3804 static __always_inline bool cid_on_cpu(unsigned int cid)  in cid_on_cpu()  argument
3806 return cid & MM_CID_ONCPU; in cid_on_cpu()
3809 static __always_inline bool cid_in_transit(unsigned int cid) in cid_in_transit() argument
3811 return cid & MM_CID_TRANSIT; in cid_in_transit()
3814 static __always_inline unsigned int cpu_cid_to_cid(unsigned int cid) in cpu_cid_to_cid() argument
3816 return cid & ~MM_CID_ONCPU; in cpu_cid_to_cid()
3819 static __always_inline unsigned int cid_to_cpu_cid(unsigned int cid) in cid_to_cpu_cid() argument
3821 return cid | MM_CID_ONCPU; in cid_to_cpu_cid()
3824 static __always_inline unsigned int cid_to_transit_cid(unsigned int cid) in cid_to_transit_cid() argument
3826 return cid | MM_CID_TRANSIT; in cid_to_transit_cid()
3829 static __always_inline unsigned int cid_from_transit_cid(unsigned int cid) in cid_from_transit_cid() argument
3831 return cid & ~MM_CID_TRANSIT; in cid_from_transit_cid()
3834 static __always_inline bool cid_on_task(unsigned int cid) in cid_on_task() argument
3837 return cid < MM_CID_TRANSIT; in cid_on_task()
3840 static __always_inline void mm_drop_cid(struct mm_struct *mm, unsigned int cid) in mm_drop_cid() argument
3842 clear_bit(cid, mm_cidmask(mm)); in mm_drop_cid()
3847 unsigned int cid = t->mm_cid.cid; in mm_unset_cid_on_task() local
3849 t->mm_cid.cid = MM_CID_UNSET; in mm_unset_cid_on_task()
3850 if (cid_on_task(cid)) in mm_unset_cid_on_task()
3851 mm_drop_cid(t->mm, cid); in mm_unset_cid_on_task()
3857 if (cid_on_cpu(pcp->cid)) { in mm_drop_cid_on_cpu()
3858 pcp->cid = cpu_cid_to_cid(pcp->cid); in mm_drop_cid_on_cpu()
3859 mm_drop_cid(mm, pcp->cid); in mm_drop_cid_on_cpu()
3865 unsigned int cid = find_first_zero_bit(mm_cidmask(mm), max_cids); in __mm_get_cid() local
3867 if (cid >= max_cids) in __mm_get_cid()
3869 if (test_and_set_bit(cid, mm_cidmask(mm))) in __mm_get_cid()
3871 return cid; in __mm_get_cid()
3876 unsigned int cid = __mm_get_cid(mm, READ_ONCE(mm->mm_cid.max_cids)); in mm_get_cid() local
3878 while (cid == MM_CID_UNSET) { in mm_get_cid()
3880 cid = __mm_get_cid(mm, num_possible_cpus()); in mm_get_cid()
3882 return cid; in mm_get_cid()
3888 unsigned int new_cid, cid = cpu_cid_to_cid(orig_cid); in mm_cid_converge() local
3891 if (likely(cid < max_cids)) in mm_cid_converge()
3897 mm_drop_cid(mm, cid); in mm_cid_converge()
3904 static __always_inline void mm_cid_update_task_cid(struct task_struct *t, unsigned int cid) in mm_cid_update_task_cid() argument
3906 if (t->mm_cid.cid != cid) { in mm_cid_update_task_cid()
3907 t->mm_cid.cid = cid; in mm_cid_update_task_cid()
3912 static __always_inline void mm_cid_update_pcpu_cid(struct mm_struct *mm, unsigned int cid) in mm_cid_update_pcpu_cid() argument
3914 __this_cpu_write(mm->mm_cid.pcpu->cid, cid); in mm_cid_update_pcpu_cid()
3920 unsigned int max_cids, tcid = t->mm_cid.cid; in mm_cid_from_cpu()
3955 unsigned int max_cids, tcid = t->mm_cid.cid; in mm_cid_from_task()
3993 cpu_cid = __this_cpu_read(mm->mm_cid.pcpu->cid); in mm_cid_schedin()
4004 unsigned int mode, cid; in mm_cid_schedout() local
4007 if (likely(!cid_in_transit(prev->mm_cid.cid))) in mm_cid_schedout()
4011 cid = cid_from_transit_cid(prev->mm_cid.cid); in mm_cid_schedout()
4017 if (!cid_in_transit(mode) && cid < READ_ONCE(mm->mm_cid.max_cids)) { in mm_cid_schedout()
4019 cid = cid_to_cpu_cid(cid); in mm_cid_schedout()
4022 mm_cid_update_pcpu_cid(mm, cid); in mm_cid_schedout()
4023 prev->mm_cid.cid = cid; in mm_cid_schedout()
4025 mm_drop_cid(mm, cid); in mm_cid_schedout()
4026 prev->mm_cid.cid = MM_CID_UNSET; in mm_cid_schedout()