diff options
Diffstat (limited to 'virt/kvm/assigned-dev.c')
| -rw-r--r-- | virt/kvm/assigned-dev.c | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/virt/kvm/assigned-dev.c b/virt/kvm/assigned-dev.c index b1e091ae2f3..23a41a9f8db 100644 --- a/virt/kvm/assigned-dev.c +++ b/virt/kvm/assigned-dev.c @@ -334,6 +334,11 @@ static int assigned_device_enable_host_intx(struct kvm *kvm,  }  #ifdef __KVM_HAVE_MSI +static irqreturn_t kvm_assigned_dev_msi(int irq, void *dev_id) +{ +	return IRQ_WAKE_THREAD; +} +  static int assigned_device_enable_host_msi(struct kvm *kvm,  					   struct kvm_assigned_dev_kernel *dev)  { @@ -346,7 +351,7 @@ static int assigned_device_enable_host_msi(struct kvm *kvm,  	}  	dev->host_irq = dev->dev->irq; -	if (request_threaded_irq(dev->host_irq, NULL, +	if (request_threaded_irq(dev->host_irq, kvm_assigned_dev_msi,  				 kvm_assigned_dev_thread_msi, 0,  				 dev->irq_name, dev)) {  		pci_disable_msi(dev->dev); @@ -358,6 +363,11 @@ static int assigned_device_enable_host_msi(struct kvm *kvm,  #endif  #ifdef __KVM_HAVE_MSIX +static irqreturn_t kvm_assigned_dev_msix(int irq, void *dev_id) +{ +	return IRQ_WAKE_THREAD; +} +  static int assigned_device_enable_host_msix(struct kvm *kvm,  					    struct kvm_assigned_dev_kernel *dev)  { @@ -374,7 +384,8 @@ static int assigned_device_enable_host_msix(struct kvm *kvm,  	for (i = 0; i < dev->entries_nr; i++) {  		r = request_threaded_irq(dev->host_msix_entries[i].vector, -					 NULL, kvm_assigned_dev_thread_msix, +					 kvm_assigned_dev_msix, +					 kvm_assigned_dev_thread_msix,  					 0, dev->irq_name, dev);  		if (r)  			goto err;  |