diff options
author | Brian King <brking@linux.vnet.ibm.com> | 2010-02-21 11:37:57 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-03-03 08:02:41 -0500 |
commit | 64355b929dec0cb6271e4ac7834c9cf262961e40 (patch) | |
tree | aa1768917c57fdb95f7320a499f27bf76af55d08 /drivers/scsi/ibmvscsi/rpa_vscsi.c | |
parent | c03af1ae1cce97a5530b907ea03625ce6e00214e (diff) |
[SCSI] ibmvscsi: Add suspend/resume support
Adds support for resuming from suspend for IBM VSCSI devices. We may have
lost an interrupt over the suspend, so we just kick the interrupt handler
to process anything that is outstanding. We expect to find a transport event
indicating we need to reestablish our CRQ.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/ibmvscsi/rpa_vscsi.c')
-rw-r--r-- | drivers/scsi/ibmvscsi/rpa_vscsi.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/scsi/ibmvscsi/rpa_vscsi.c b/drivers/scsi/ibmvscsi/rpa_vscsi.c index 462a8574dad9..63a30cbbf9de 100644 --- a/drivers/scsi/ibmvscsi/rpa_vscsi.c +++ b/drivers/scsi/ibmvscsi/rpa_vscsi.c | |||
@@ -334,10 +334,23 @@ static int rpavscsi_reenable_crq_queue(struct crq_queue *queue, | |||
334 | return rc; | 334 | return rc; |
335 | } | 335 | } |
336 | 336 | ||
337 | /** | ||
338 | * rpavscsi_resume: - resume after suspend | ||
339 | * @hostdata: ibmvscsi_host_data of host | ||
340 | * | ||
341 | */ | ||
342 | static int rpavscsi_resume(struct ibmvscsi_host_data *hostdata) | ||
343 | { | ||
344 | vio_disable_interrupts(to_vio_dev(hostdata->dev)); | ||
345 | tasklet_schedule(&hostdata->srp_task); | ||
346 | return 0; | ||
347 | } | ||
348 | |||
337 | struct ibmvscsi_ops rpavscsi_ops = { | 349 | struct ibmvscsi_ops rpavscsi_ops = { |
338 | .init_crq_queue = rpavscsi_init_crq_queue, | 350 | .init_crq_queue = rpavscsi_init_crq_queue, |
339 | .release_crq_queue = rpavscsi_release_crq_queue, | 351 | .release_crq_queue = rpavscsi_release_crq_queue, |
340 | .reset_crq_queue = rpavscsi_reset_crq_queue, | 352 | .reset_crq_queue = rpavscsi_reset_crq_queue, |
341 | .reenable_crq_queue = rpavscsi_reenable_crq_queue, | 353 | .reenable_crq_queue = rpavscsi_reenable_crq_queue, |
342 | .send_crq = rpavscsi_send_crq, | 354 | .send_crq = rpavscsi_send_crq, |
355 | .resume = rpavscsi_resume, | ||
343 | }; | 356 | }; |