summaryrefslogtreecommitdiffstats
path: root/drivers/misc/mic/host/mic_virtio.c
diff options
context:
space:
mode:
authorDasaratharaman Chandramouli2013-12-10 18:51:12 +0100
committerGreg Kroah-Hartman2013-12-11 08:05:52 +0100
commitdf5e4e8b576108f88f79e5b4c984d51d460d2360 (patch)
tree47f1d8e49f3e62e887b73d806beec6e4127974c9 /drivers/misc/mic/host/mic_virtio.c
parentparport: parport_pc: remove double PCI ID for NetMos (diff)
downloadkernel-qcow2-linux-df5e4e8b576108f88f79e5b4c984d51d460d2360.tar.gz
kernel-qcow2-linux-df5e4e8b576108f88f79e5b4c984d51d460d2360.tar.xz
kernel-qcow2-linux-df5e4e8b576108f88f79e5b4c984d51d460d2360.zip
misc: mic: bug fix for interrupt acknowledgement in MSI/INTx case.
The interrupt handler (mic_interrupt), called in the MSI/INTx mode, writes to the interrupt sources register to acknowledge the interrupt and then calls the corresponding callback handlers to handle the same. These callback handlers acknowledge the interrupts again leading to missed interrupts. This patch fixes the issue by removing the interrupt acknowlegment code from the callback handlers. Reviewed-by: Sudeep Dutt <sudeep.dutt@intel.com> Reviewed-by: Nikhil Rao <nikhil.rao@intel.com> Reviewed-by: Siva Krishna Kumar Reddy Yerramreddy <siva.krishna.kumar.reddy.yerramreddy@intel.com> Signed-off-by: Dasaratharaman Chandramouli <dasaratharaman.chandramouli@intel.com> Cc: stable <stable@vger.kernel.org> # 3.13 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mic/host/mic_virtio.c')
-rw-r--r--drivers/misc/mic/host/mic_virtio.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/misc/mic/host/mic_virtio.c b/drivers/misc/mic/host/mic_virtio.c
index 5b8494bd1e00..8d3c21cd1d9c 100644
--- a/drivers/misc/mic/host/mic_virtio.c
+++ b/drivers/misc/mic/host/mic_virtio.c
@@ -369,7 +369,7 @@ static irqreturn_t mic_virtio_intr_handler(int irq, void *data)
struct mic_vdev *mvdev = data;
struct mic_device *mdev = mvdev->mdev;
- mdev->ops->ack_interrupt(mdev);
+ mdev->ops->intr_workarounds(mdev);
schedule_work(&mvdev->virtio_bh_work);
return IRQ_HANDLED;
}