KVM: async_pf: Allow to wait for outstanding work
authorDominik Dingel <dingel@linux.vnet.ibm.com>
Tue, 3 Sep 2013 10:31:16 +0000 (12:31 +0200)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 30 Jan 2014 11:52:20 +0000 (12:52 +0100)
On s390 we are not able to cancel work. Instead we will flush the work and wait for
completion.

Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
virt/kvm/async_pf.c

index 00980ab..889aad0 100644 (file)
@@ -113,11 +113,16 @@ void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu)
                        list_entry(vcpu->async_pf.queue.next,
                                   typeof(*work), queue);
                list_del(&work->queue);
+
+#ifdef CONFIG_KVM_ASYNC_PF_SYNC
+               flush_work(&work->work);
+#else
                if (cancel_work_sync(&work->work)) {
                        mmdrop(work->mm);
                        kvm_put_kvm(vcpu->kvm); /* == work->vcpu->kvm */
                        kmem_cache_free(async_pf_cache, work);
                }
+#endif
        }
 
        spin_lock(&vcpu->async_pf.lock);