Lines Matching refs:work

32 					       struct kvm_async_pf *work)  in kvm_async_page_present_sync()  argument
35 kvm_arch_async_page_present(vcpu, work); in kvm_async_page_present_sync()
39 struct kvm_async_pf *work) in kvm_async_page_present_async() argument
42 kvm_arch_async_page_present(vcpu, work); in kvm_async_page_present_async()
72 static void async_pf_execute(struct work_struct *work) in async_pf_execute() argument
75 container_of(work, struct kvm_async_pf, work); in async_pf_execute()
108 struct kvm_async_pf *work = in kvm_clear_async_pf_completion_queue() local
110 typeof(*work), queue); in kvm_clear_async_pf_completion_queue()
111 list_del(&work->queue); in kvm_clear_async_pf_completion_queue()
114 flush_work(&work->work); in kvm_clear_async_pf_completion_queue()
116 if (cancel_work_sync(&work->work)) { in kvm_clear_async_pf_completion_queue()
117 mmput(work->mm); in kvm_clear_async_pf_completion_queue()
119 kmem_cache_free(async_pf_cache, work); in kvm_clear_async_pf_completion_queue()
126 struct kvm_async_pf *work = in kvm_clear_async_pf_completion_queue() local
128 typeof(*work), link); in kvm_clear_async_pf_completion_queue()
129 list_del(&work->link); in kvm_clear_async_pf_completion_queue()
130 kmem_cache_free(async_pf_cache, work); in kvm_clear_async_pf_completion_queue()
139 struct kvm_async_pf *work; in kvm_check_async_pf_completion() local
144 work = list_first_entry(&vcpu->async_pf.done, typeof(*work), in kvm_check_async_pf_completion()
146 list_del(&work->link); in kvm_check_async_pf_completion()
149 kvm_arch_async_page_ready(vcpu, work); in kvm_check_async_pf_completion()
150 kvm_async_page_present_async(vcpu, work); in kvm_check_async_pf_completion()
152 list_del(&work->queue); in kvm_check_async_pf_completion()
154 kmem_cache_free(async_pf_cache, work); in kvm_check_async_pf_completion()
161 struct kvm_async_pf *work; in kvm_setup_async_pf() local
172 work = kmem_cache_zalloc(async_pf_cache, GFP_NOWAIT | __GFP_NOWARN); in kvm_setup_async_pf()
173 if (!work) in kvm_setup_async_pf()
176 work->wakeup_all = false; in kvm_setup_async_pf()
177 work->vcpu = vcpu; in kvm_setup_async_pf()
178 work->gva = gva; in kvm_setup_async_pf()
179 work->addr = hva; in kvm_setup_async_pf()
180 work->arch = *arch; in kvm_setup_async_pf()
181 work->mm = current->mm; in kvm_setup_async_pf()
182 atomic_inc(&work->mm->mm_users); in kvm_setup_async_pf()
183 kvm_get_kvm(work->vcpu->kvm); in kvm_setup_async_pf()
187 if (unlikely(kvm_is_error_hva(work->addr))) in kvm_setup_async_pf()
190 INIT_WORK(&work->work, async_pf_execute); in kvm_setup_async_pf()
191 if (!schedule_work(&work->work)) in kvm_setup_async_pf()
194 list_add_tail(&work->queue, &vcpu->async_pf.queue); in kvm_setup_async_pf()
196 kvm_arch_async_page_not_present(vcpu, work); in kvm_setup_async_pf()
199 kvm_put_kvm(work->vcpu->kvm); in kvm_setup_async_pf()
200 mmput(work->mm); in kvm_setup_async_pf()
201 kmem_cache_free(async_pf_cache, work); in kvm_setup_async_pf()
207 struct kvm_async_pf *work; in kvm_async_pf_wakeup_all() local
212 work = kmem_cache_zalloc(async_pf_cache, GFP_ATOMIC); in kvm_async_pf_wakeup_all()
213 if (!work) in kvm_async_pf_wakeup_all()
216 work->wakeup_all = true; in kvm_async_pf_wakeup_all()
217 INIT_LIST_HEAD(&work->queue); /* for list_del to work */ in kvm_async_pf_wakeup_all()
220 list_add_tail(&work->link, &vcpu->async_pf.done); in kvm_async_pf_wakeup_all()