Lines Matching defs:vcpu

38 void kvm_async_pf_vcpu_init(struct kvm_vcpu *vcpu)
40 INIT_LIST_HEAD(&vcpu->async_pf.done);
41 INIT_LIST_HEAD(&vcpu->async_pf.queue);
42 spin_lock_init(&vcpu->async_pf.lock);
50 struct kvm_vcpu *vcpu = apf->vcpu;
69 kvm_arch_async_page_present(vcpu, apf);
71 spin_lock(&vcpu->async_pf.lock);
72 first = list_empty(&vcpu->async_pf.done);
73 list_add_tail(&apf->link, &vcpu->async_pf.done);
74 apf->vcpu = NULL;
75 spin_unlock(&vcpu->async_pf.lock);
78 kvm_arch_async_page_present_queued(vcpu);
87 __kvm_vcpu_wake_up(vcpu);
113 void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu)
115 spin_lock(&vcpu->async_pf.lock);
118 while (!list_empty(&vcpu->async_pf.queue)) {
120 list_first_entry(&vcpu->async_pf.queue,
125 * We know it's present in vcpu->async_pf.done, do
128 if (!work->vcpu)
131 spin_unlock(&vcpu->async_pf.lock);
140 spin_lock(&vcpu->async_pf.lock);
143 while (!list_empty(&vcpu->async_pf.done)) {
145 list_first_entry(&vcpu->async_pf.done,
149 spin_unlock(&vcpu->async_pf.lock);
151 spin_lock(&vcpu->async_pf.lock);
153 spin_unlock(&vcpu->async_pf.lock);
155 vcpu->async_pf.queued = 0;
158 void kvm_check_async_pf_completion(struct kvm_vcpu *vcpu)
162 while (!list_empty_careful(&vcpu->async_pf.done) &&
163 kvm_arch_can_dequeue_async_page_present(vcpu)) {
164 spin_lock(&vcpu->async_pf.lock);
165 work = list_first_entry(&vcpu->async_pf.done, typeof(*work),
168 spin_unlock(&vcpu->async_pf.lock);
170 kvm_arch_async_page_ready(vcpu, work);
172 kvm_arch_async_page_present(vcpu, work);
175 vcpu->async_pf.queued--;
184 bool kvm_setup_async_pf(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
189 if (vcpu->async_pf.queued >= ASYNC_PF_PER_VCPU)
205 work->vcpu = vcpu;
214 list_add_tail(&work->queue, &vcpu->async_pf.queue);
215 vcpu->async_pf.queued++;
216 work->notpresent_injected = kvm_arch_async_page_not_present(vcpu, work);
223 int kvm_async_pf_wakeup_all(struct kvm_vcpu *vcpu)
228 if (!list_empty_careful(&vcpu->async_pf.done))
238 spin_lock(&vcpu->async_pf.lock);
239 first = list_empty(&vcpu->async_pf.done);
240 list_add_tail(&work->link, &vcpu->async_pf.done);
241 spin_unlock(&vcpu->async_pf.lock);
244 kvm_arch_async_page_present_queued(vcpu);
246 vcpu->async_pf.queued++;