aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/host.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2011-02-18 12:25:11 -0500
committerDan Williams <dan.j.williams@intel.com>2011-07-03 06:55:27 -0400
commit92f4f0f544a6a75979bace0c43fee9c4fb95830c (patch)
treebf1c8d9e4fff6af6004b4e5bd1dc17b2f299911e /drivers/scsi/isci/host.c
parent77950f51f5299c1b4f4fa4a19974128da720d199 (diff)
isci: implement error isr
Add basic support for handling/reporting error interrupts. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/host.c')
-rw-r--r--drivers/scsi/isci/host.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/scsi/isci/host.c b/drivers/scsi/isci/host.c
index 7f351a35e87b..cb2e3f9558e9 100644
--- a/drivers/scsi/isci/host.c
+++ b/drivers/scsi/isci/host.c
@@ -85,11 +85,27 @@ irqreturn_t isci_intx_isr(int vec, void *data)
85 if (scic_sds_controller_isr(scic)) { 85 if (scic_sds_controller_isr(scic)) {
86 tasklet_schedule(&ihost->completion_tasklet); 86 tasklet_schedule(&ihost->completion_tasklet);
87 ret = IRQ_HANDLED; 87 ret = IRQ_HANDLED;
88 } else if (scic_sds_controller_error_isr(scic)) {
89 spin_lock(&ihost->scic_lock);
90 scic_sds_controller_error_handler(scic);
91 spin_unlock(&ihost->scic_lock);
92 ret = IRQ_HANDLED;
88 } 93 }
89 } 94 }
95
90 return ret; 96 return ret;
91} 97}
92 98
99irqreturn_t isci_error_isr(int vec, void *data)
100{
101 struct isci_host *ihost = data;
102 struct scic_sds_controller *scic = ihost->core_controller;
103
104 if (scic_sds_controller_error_isr(scic))
105 scic_sds_controller_error_handler(scic);
106
107 return IRQ_HANDLED;
108}
93 109
94/** 110/**
95 * isci_host_start_complete() - This function is called by the core library, 111 * isci_host_start_complete() - This function is called by the core library,