Lines Matching refs:mm
85 int use_cop(unsigned long acop, struct mm_struct *mm) in use_cop() argument
92 if (!mm || !acop) in use_cop()
96 spin_lock(&mm->page_table_lock); in use_cop()
97 spin_lock(mm->context.cop_lockp); in use_cop()
99 ret = get_cop_pid(mm); in use_cop()
104 mm->context.acop |= acop; in use_cop()
106 sync_cop(mm); in use_cop()
113 if (atomic_read(&mm->mm_users) > 1) in use_cop()
114 smp_call_function(sync_cop, mm, 1); in use_cop()
117 spin_unlock(mm->context.cop_lockp); in use_cop()
118 spin_unlock(&mm->page_table_lock); in use_cop()
129 void drop_cop(unsigned long acop, struct mm_struct *mm) in drop_cop() argument
136 if (WARN_ON_ONCE(!mm)) in drop_cop()
140 spin_lock(&mm->page_table_lock); in drop_cop()
141 spin_lock(mm->context.cop_lockp); in drop_cop()
143 mm->context.acop &= ~acop; in drop_cop()
145 free_pid = disable_cop_pid(mm); in drop_cop()
146 sync_cop(mm); in drop_cop()
153 if (atomic_read(&mm->mm_users) > 1) in drop_cop()
154 smp_call_function(sync_cop, mm, 1); in drop_cop()
159 spin_unlock(mm->context.cop_lockp); in drop_cop()
160 spin_unlock(&mm->page_table_lock); in drop_cop()