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()
112 struct kvm_async_pf *work = in kvm_clear_async_pf_completion_queue() local
114 typeof(*work), queue); in kvm_clear_async_pf_completion_queue()
115 list_del(&work->queue); in kvm_clear_async_pf_completion_queue()
118 flush_work(&work->work); in kvm_clear_async_pf_completion_queue()
120 if (cancel_work_sync(&work->work)) { in kvm_clear_async_pf_completion_queue()
121 mmput(work->mm); in kvm_clear_async_pf_completion_queue()
123 kmem_cache_free(async_pf_cache, work); in kvm_clear_async_pf_completion_queue()
130 struct kvm_async_pf *work = in kvm_clear_async_pf_completion_queue() local
132 typeof(*work), link); in kvm_clear_async_pf_completion_queue()
133 list_del(&work->link); in kvm_clear_async_pf_completion_queue()
134 kmem_cache_free(async_pf_cache, work); in kvm_clear_async_pf_completion_queue()
143 struct kvm_async_pf *work; in kvm_check_async_pf_completion() local
148 work = list_first_entry(&vcpu->async_pf.done, typeof(*work), in kvm_check_async_pf_completion()
150 list_del(&work->link); in kvm_check_async_pf_completion()
153 kvm_arch_async_page_ready(vcpu, work); in kvm_check_async_pf_completion()
154 kvm_async_page_present_async(vcpu, work); in kvm_check_async_pf_completion()
156 list_del(&work->queue); in kvm_check_async_pf_completion()
158 kmem_cache_free(async_pf_cache, work); in kvm_check_async_pf_completion()
165 struct kvm_async_pf *work; in kvm_setup_async_pf() local
176 work = kmem_cache_zalloc(async_pf_cache, GFP_NOWAIT | __GFP_NOWARN); in kvm_setup_async_pf()
177 if (!work) in kvm_setup_async_pf()
180 work->wakeup_all = false; in kvm_setup_async_pf()
181 work->vcpu = vcpu; in kvm_setup_async_pf()
182 work->gva = gva; in kvm_setup_async_pf()
183 work->addr = hva; in kvm_setup_async_pf()
184 work->arch = *arch; in kvm_setup_async_pf()
185 work->mm = current->mm; in kvm_setup_async_pf()
186 atomic_inc(&work->mm->mm_users); in kvm_setup_async_pf()
187 kvm_get_kvm(work->vcpu->kvm); in kvm_setup_async_pf()
191 if (unlikely(kvm_is_error_hva(work->addr))) in kvm_setup_async_pf()
194 INIT_WORK(&work->work, async_pf_execute); in kvm_setup_async_pf()
195 if (!schedule_work(&work->work)) in kvm_setup_async_pf()
198 list_add_tail(&work->queue, &vcpu->async_pf.queue); in kvm_setup_async_pf()
200 kvm_arch_async_page_not_present(vcpu, work); in kvm_setup_async_pf()
203 kvm_put_kvm(work->vcpu->kvm); in kvm_setup_async_pf()
204 mmput(work->mm); in kvm_setup_async_pf()
205 kmem_cache_free(async_pf_cache, work); in kvm_setup_async_pf()
211 struct kvm_async_pf *work; in kvm_async_pf_wakeup_all() local
216 work = kmem_cache_zalloc(async_pf_cache, GFP_ATOMIC); in kvm_async_pf_wakeup_all()
217 if (!work) in kvm_async_pf_wakeup_all()
220 work->wakeup_all = true; in kvm_async_pf_wakeup_all()
221 INIT_LIST_HEAD(&work->queue); /* for list_del to work */ in kvm_async_pf_wakeup_all()
224 list_add_tail(&work->link, &vcpu->async_pf.done); in kvm_async_pf_wakeup_all()