aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aacraid/linit.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/aacraid/linit.c')
-rw-r--r--drivers/scsi/aacraid/linit.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index b6dda99f5083..41255f7893d0 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -849,11 +849,12 @@ static int __devinit aac_probe_one(struct pci_dev *pdev,
849 849
850 return 0; 850 return 0;
851 851
852out_deinit: 852 out_deinit:
853 kill_proc(aac->thread_pid, SIGKILL, 0); 853 kill_proc(aac->thread_pid, SIGKILL, 0);
854 wait_for_completion(&aac->aif_completion); 854 wait_for_completion(&aac->aif_completion);
855 855
856 aac_send_shutdown(aac); 856 aac_send_shutdown(aac);
857 aac_adapter_disable_int(aac);
857 fib_map_free(aac); 858 fib_map_free(aac);
858 pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr, aac->comm_phys); 859 pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr, aac->comm_phys);
859 kfree(aac->queues); 860 kfree(aac->queues);
@@ -870,6 +871,13 @@ out_deinit:
870 return error; 871 return error;
871} 872}
872 873
874static void aac_shutdown(struct pci_dev *dev)
875{
876 struct Scsi_Host *shost = pci_get_drvdata(dev);
877 struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
878 aac_send_shutdown(aac);
879}
880
873static void __devexit aac_remove_one(struct pci_dev *pdev) 881static void __devexit aac_remove_one(struct pci_dev *pdev)
874{ 882{
875 struct Scsi_Host *shost = pci_get_drvdata(pdev); 883 struct Scsi_Host *shost = pci_get_drvdata(pdev);
@@ -881,6 +889,7 @@ static void __devexit aac_remove_one(struct pci_dev *pdev)
881 wait_for_completion(&aac->aif_completion); 889 wait_for_completion(&aac->aif_completion);
882 890
883 aac_send_shutdown(aac); 891 aac_send_shutdown(aac);
892 aac_adapter_disable_int(aac);
884 fib_map_free(aac); 893 fib_map_free(aac);
885 pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr, 894 pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr,
886 aac->comm_phys); 895 aac->comm_phys);
@@ -901,6 +910,7 @@ static struct pci_driver aac_pci_driver = {
901 .id_table = aac_pci_tbl, 910 .id_table = aac_pci_tbl,
902 .probe = aac_probe_one, 911 .probe = aac_probe_one,
903 .remove = __devexit_p(aac_remove_one), 912 .remove = __devexit_p(aac_remove_one),
913 .shutdown = aac_shutdown,
904}; 914};
905 915
906static int __init aac_init(void) 916static int __init aac_init(void)
@@ -919,6 +929,7 @@ static int __init aac_init(void)
919 printk(KERN_WARNING 929 printk(KERN_WARNING
920 "aacraid: unable to register \"aac\" device.\n"); 930 "aacraid: unable to register \"aac\" device.\n");
921 } 931 }
932
922 return 0; 933 return 0;
923} 934}
924 935