[SCSI] megaraid_sas: Fix bug where AENs could be lost in probe() and resume()

Signed-off-by: Adam Radford <aradford@gmail.com>
Signed-off-by: James Bottomley <jbottomley@parallels.com>
This commit is contained in:
adam radford 2011-05-11 18:34:29 -07:00 committed by James Bottomley
parent 46fd256e05
commit 541f90b7c6

View File

@ -4114,6 +4114,14 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
megasas_mgmt_info.instance[megasas_mgmt_info.max_index] = instance; megasas_mgmt_info.instance[megasas_mgmt_info.max_index] = instance;
megasas_mgmt_info.max_index++; megasas_mgmt_info.max_index++;
/*
* Register with SCSI mid-layer
*/
if (megasas_io_attach(instance))
goto fail_io_attach;
instance->unload = 0;
/* /*
* Initiate AEN (Asynchronous Event Notification) * Initiate AEN (Asynchronous Event Notification)
*/ */
@ -4122,13 +4130,6 @@ megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
goto fail_start_aen; goto fail_start_aen;
} }
/*
* Register with SCSI mid-layer
*/
if (megasas_io_attach(instance))
goto fail_io_attach;
instance->unload = 0;
return 0; return 0;
fail_start_aen: fail_start_aen:
@ -4383,12 +4384,6 @@ megasas_resume(struct pci_dev *pdev)
instance->instancet->enable_intr(instance->reg_set); instance->instancet->enable_intr(instance->reg_set);
/*
* Initiate AEN (Asynchronous Event Notification)
*/
if (megasas_start_aen(instance))
printk(KERN_ERR "megasas: Start AEN failed\n");
/* Initialize the cmd completion timer */ /* Initialize the cmd completion timer */
if (poll_mode_io) if (poll_mode_io)
megasas_start_timer(instance, &instance->io_completion_timer, megasas_start_timer(instance, &instance->io_completion_timer,
@ -4396,6 +4391,12 @@ megasas_resume(struct pci_dev *pdev)
MEGASAS_COMPLETION_TIMER_INTERVAL); MEGASAS_COMPLETION_TIMER_INTERVAL);
instance->unload = 0; instance->unload = 0;
/*
* Initiate AEN (Asynchronous Event Notification)
*/
if (megasas_start_aen(instance))
printk(KERN_ERR "megasas: Start AEN failed\n");
return 0; return 0;
fail_irq: fail_irq: