diff options
Diffstat (limited to 'drivers/scsi')
173 files changed, 434 insertions, 155 deletions
diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c index 84d3bbaa95e7..e9788f55ab13 100644 --- a/drivers/scsi/3w-9xxx.c +++ b/drivers/scsi/3w-9xxx.c | |||
@@ -91,6 +91,7 @@ | |||
91 | #include <linux/time.h> | 91 | #include <linux/time.h> |
92 | #include <linux/mutex.h> | 92 | #include <linux/mutex.h> |
93 | #include <linux/smp_lock.h> | 93 | #include <linux/smp_lock.h> |
94 | #include <linux/slab.h> | ||
94 | #include <asm/io.h> | 95 | #include <asm/io.h> |
95 | #include <asm/irq.h> | 96 | #include <asm/irq.h> |
96 | #include <asm/uaccess.h> | 97 | #include <asm/uaccess.h> |
diff --git a/drivers/scsi/3w-sas.c b/drivers/scsi/3w-sas.c index 4d314d740de4..54c5ffb1eaa1 100644 --- a/drivers/scsi/3w-sas.c +++ b/drivers/scsi/3w-sas.c | |||
@@ -65,6 +65,7 @@ | |||
65 | #include <linux/time.h> | 65 | #include <linux/time.h> |
66 | #include <linux/mutex.h> | 66 | #include <linux/mutex.h> |
67 | #include <linux/smp_lock.h> | 67 | #include <linux/smp_lock.h> |
68 | #include <linux/slab.h> | ||
68 | #include <asm/io.h> | 69 | #include <asm/io.h> |
69 | #include <asm/irq.h> | 70 | #include <asm/irq.h> |
70 | #include <asm/uaccess.h> | 71 | #include <asm/uaccess.h> |
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index f65a1e92340c..5faf903ca8c8 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c | |||
@@ -205,6 +205,7 @@ | |||
205 | #include <linux/errno.h> | 205 | #include <linux/errno.h> |
206 | #include <linux/types.h> | 206 | #include <linux/types.h> |
207 | #include <linux/delay.h> | 207 | #include <linux/delay.h> |
208 | #include <linux/gfp.h> | ||
208 | #include <linux/pci.h> | 209 | #include <linux/pci.h> |
209 | #include <linux/time.h> | 210 | #include <linux/time.h> |
210 | #include <linux/mutex.h> | 211 | #include <linux/mutex.h> |
diff --git a/drivers/scsi/53c700.c b/drivers/scsi/53c700.c index 9f4a911a6d8c..80dc3ac12cde 100644 --- a/drivers/scsi/53c700.c +++ b/drivers/scsi/53c700.c | |||
@@ -117,6 +117,7 @@ | |||
117 | #include <linux/kernel.h> | 117 | #include <linux/kernel.h> |
118 | #include <linux/types.h> | 118 | #include <linux/types.h> |
119 | #include <linux/string.h> | 119 | #include <linux/string.h> |
120 | #include <linux/slab.h> | ||
120 | #include <linux/ioport.h> | 121 | #include <linux/ioport.h> |
121 | #include <linux/delay.h> | 122 | #include <linux/delay.h> |
122 | #include <linux/spinlock.h> | 123 | #include <linux/spinlock.h> |
diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c index 1ddcf4031d4c..fc0b4b81d552 100644 --- a/drivers/scsi/BusLogic.c +++ b/drivers/scsi/BusLogic.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <linux/spinlock.h> | 42 | #include <linux/spinlock.h> |
43 | #include <linux/jiffies.h> | 43 | #include <linux/jiffies.h> |
44 | #include <linux/dma-mapping.h> | 44 | #include <linux/dma-mapping.h> |
45 | #include <linux/slab.h> | ||
45 | #include <scsi/scsicam.h> | 46 | #include <scsi/scsicam.h> |
46 | 47 | ||
47 | #include <asm/dma.h> | 48 | #include <asm/dma.h> |
diff --git a/drivers/scsi/NCR_D700.c b/drivers/scsi/NCR_D700.c index 1cdf09a4779a..8647256ad66d 100644 --- a/drivers/scsi/NCR_D700.c +++ b/drivers/scsi/NCR_D700.c | |||
@@ -97,6 +97,7 @@ | |||
97 | #include <linux/kernel.h> | 97 | #include <linux/kernel.h> |
98 | #include <linux/module.h> | 98 | #include <linux/module.h> |
99 | #include <linux/mca.h> | 99 | #include <linux/mca.h> |
100 | #include <linux/slab.h> | ||
100 | #include <asm/io.h> | 101 | #include <asm/io.h> |
101 | #include <scsi/scsi_host.h> | 102 | #include <scsi/scsi_host.h> |
102 | #include <scsi/scsi_device.h> | 103 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/NCR_Q720.c b/drivers/scsi/NCR_Q720.c index a8bbdc2273b8..afdbb9addf18 100644 --- a/drivers/scsi/NCR_Q720.c +++ b/drivers/scsi/NCR_Q720.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/mca.h> | 12 | #include <linux/mca.h> |
13 | #include <linux/slab.h> | ||
13 | #include <linux/types.h> | 14 | #include <linux/types.h> |
14 | #include <linux/init.h> | 15 | #include <linux/init.h> |
15 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
diff --git a/drivers/scsi/a100u2w.c b/drivers/scsi/a100u2w.c index ff5716d5f044..dbbc601948e5 100644 --- a/drivers/scsi/a100u2w.c +++ b/drivers/scsi/a100u2w.c | |||
@@ -69,7 +69,6 @@ | |||
69 | #include <linux/kernel.h> | 69 | #include <linux/kernel.h> |
70 | #include <linux/string.h> | 70 | #include <linux/string.h> |
71 | #include <linux/ioport.h> | 71 | #include <linux/ioport.h> |
72 | #include <linux/slab.h> | ||
73 | #include <linux/dma-mapping.h> | 72 | #include <linux/dma-mapping.h> |
74 | 73 | ||
75 | #include <asm/io.h> | 74 | #include <asm/io.h> |
diff --git a/drivers/scsi/a2091.c b/drivers/scsi/a2091.c index 4b38c4750f77..d8fe5b76fee0 100644 --- a/drivers/scsi/a2091.c +++ b/drivers/scsi/a2091.c | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <linux/types.h> | 1 | #include <linux/types.h> |
2 | #include <linux/mm.h> | 2 | #include <linux/mm.h> |
3 | #include <linux/slab.h> | ||
3 | #include <linux/blkdev.h> | 4 | #include <linux/blkdev.h> |
4 | #include <linux/init.h> | 5 | #include <linux/init.h> |
5 | #include <linux/interrupt.h> | 6 | #include <linux/interrupt.h> |
diff --git a/drivers/scsi/a3000.c b/drivers/scsi/a3000.c index 6970ce82c4ac..c35fc55f1c96 100644 --- a/drivers/scsi/a3000.c +++ b/drivers/scsi/a3000.c | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <linux/types.h> | 1 | #include <linux/types.h> |
2 | #include <linux/mm.h> | 2 | #include <linux/mm.h> |
3 | #include <linux/slab.h> | ||
3 | #include <linux/blkdev.h> | 4 | #include <linux/blkdev.h> |
4 | #include <linux/ioport.h> | 5 | #include <linux/ioport.h> |
5 | #include <linux/init.h> | 6 | #include <linux/init.h> |
diff --git a/drivers/scsi/a4000t.c b/drivers/scsi/a4000t.c index e3519fa5a3ba..11ae6be8aeaf 100644 --- a/drivers/scsi/a4000t.c +++ b/drivers/scsi/a4000t.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/slab.h> | ||
15 | #include <asm/amigahw.h> | 16 | #include <asm/amigahw.h> |
16 | #include <asm/amigaints.h> | 17 | #include <asm/amigaints.h> |
17 | #include <scsi/scsi_host.h> | 18 | #include <scsi/scsi_host.h> |
diff --git a/drivers/scsi/aacraid/rx.c b/drivers/scsi/aacraid/rx.c index f70d9f8e79e5..04057ab72a8b 100644 --- a/drivers/scsi/aacraid/rx.c +++ b/drivers/scsi/aacraid/rx.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/types.h> | 33 | #include <linux/types.h> |
34 | #include <linux/pci.h> | 34 | #include <linux/pci.h> |
35 | #include <linux/spinlock.h> | 35 | #include <linux/spinlock.h> |
36 | #include <linux/slab.h> | ||
37 | #include <linux/blkdev.h> | 36 | #include <linux/blkdev.h> |
38 | #include <linux/delay.h> | 37 | #include <linux/delay.h> |
39 | #include <linux/completion.h> | 38 | #include <linux/completion.h> |
diff --git a/drivers/scsi/aacraid/sa.c b/drivers/scsi/aacraid/sa.c index b6a3c5c187b6..622c21c68e65 100644 --- a/drivers/scsi/aacraid/sa.c +++ b/drivers/scsi/aacraid/sa.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/types.h> | 33 | #include <linux/types.h> |
34 | #include <linux/pci.h> | 34 | #include <linux/pci.h> |
35 | #include <linux/spinlock.h> | 35 | #include <linux/spinlock.h> |
36 | #include <linux/slab.h> | ||
37 | #include <linux/blkdev.h> | 36 | #include <linux/blkdev.h> |
38 | #include <linux/delay.h> | 37 | #include <linux/delay.h> |
39 | #include <linux/completion.h> | 38 | #include <linux/completion.h> |
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c index 22626abdb630..7f87979da22d 100644 --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c | |||
@@ -4724,6 +4724,10 @@ static ushort AscInitMicroCodeVar(ASC_DVC_VAR *asc_dvc) | |||
4724 | BUG_ON((unsigned long)asc_dvc->overrun_buf & 7); | 4724 | BUG_ON((unsigned long)asc_dvc->overrun_buf & 7); |
4725 | asc_dvc->overrun_dma = dma_map_single(board->dev, asc_dvc->overrun_buf, | 4725 | asc_dvc->overrun_dma = dma_map_single(board->dev, asc_dvc->overrun_buf, |
4726 | ASC_OVERRUN_BSIZE, DMA_FROM_DEVICE); | 4726 | ASC_OVERRUN_BSIZE, DMA_FROM_DEVICE); |
4727 | if (dma_mapping_error(board->dev, asc_dvc->overrun_dma)) { | ||
4728 | warn_code = -ENOMEM; | ||
4729 | goto err_dma_map; | ||
4730 | } | ||
4727 | phy_addr = cpu_to_le32(asc_dvc->overrun_dma); | 4731 | phy_addr = cpu_to_le32(asc_dvc->overrun_dma); |
4728 | AscMemDWordCopyPtrToLram(iop_base, ASCV_OVERRUN_PADDR_D, | 4732 | AscMemDWordCopyPtrToLram(iop_base, ASCV_OVERRUN_PADDR_D, |
4729 | (uchar *)&phy_addr, 1); | 4733 | (uchar *)&phy_addr, 1); |
@@ -4739,14 +4743,23 @@ static ushort AscInitMicroCodeVar(ASC_DVC_VAR *asc_dvc) | |||
4739 | AscSetPCAddr(iop_base, ASC_MCODE_START_ADDR); | 4743 | AscSetPCAddr(iop_base, ASC_MCODE_START_ADDR); |
4740 | if (AscGetPCAddr(iop_base) != ASC_MCODE_START_ADDR) { | 4744 | if (AscGetPCAddr(iop_base) != ASC_MCODE_START_ADDR) { |
4741 | asc_dvc->err_code |= ASC_IERR_SET_PC_ADDR; | 4745 | asc_dvc->err_code |= ASC_IERR_SET_PC_ADDR; |
4742 | return warn_code; | 4746 | warn_code = UW_ERR; |
4747 | goto err_mcode_start; | ||
4743 | } | 4748 | } |
4744 | if (AscStartChip(iop_base) != 1) { | 4749 | if (AscStartChip(iop_base) != 1) { |
4745 | asc_dvc->err_code |= ASC_IERR_START_STOP_CHIP; | 4750 | asc_dvc->err_code |= ASC_IERR_START_STOP_CHIP; |
4746 | return warn_code; | 4751 | warn_code = UW_ERR; |
4752 | goto err_mcode_start; | ||
4747 | } | 4753 | } |
4748 | 4754 | ||
4749 | return warn_code; | 4755 | return warn_code; |
4756 | |||
4757 | err_mcode_start: | ||
4758 | dma_unmap_single(board->dev, asc_dvc->overrun_dma, | ||
4759 | ASC_OVERRUN_BSIZE, DMA_FROM_DEVICE); | ||
4760 | err_dma_map: | ||
4761 | asc_dvc->overrun_dma = 0; | ||
4762 | return warn_code; | ||
4750 | } | 4763 | } |
4751 | 4764 | ||
4752 | static ushort AscInitAsc1000Driver(ASC_DVC_VAR *asc_dvc) | 4765 | static ushort AscInitAsc1000Driver(ASC_DVC_VAR *asc_dvc) |
@@ -4781,12 +4794,14 @@ static ushort AscInitAsc1000Driver(ASC_DVC_VAR *asc_dvc) | |||
4781 | if (err) { | 4794 | if (err) { |
4782 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | 4795 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", |
4783 | fwname, err); | 4796 | fwname, err); |
4797 | asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; | ||
4784 | return err; | 4798 | return err; |
4785 | } | 4799 | } |
4786 | if (fw->size < 4) { | 4800 | if (fw->size < 4) { |
4787 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", | 4801 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", |
4788 | fw->size, fwname); | 4802 | fw->size, fwname); |
4789 | release_firmware(fw); | 4803 | release_firmware(fw); |
4804 | asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; | ||
4790 | return -EINVAL; | 4805 | return -EINVAL; |
4791 | } | 4806 | } |
4792 | chksum = (fw->data[3] << 24) | (fw->data[2] << 16) | | 4807 | chksum = (fw->data[3] << 24) | (fw->data[2] << 16) | |
@@ -4800,6 +4815,8 @@ static ushort AscInitAsc1000Driver(ASC_DVC_VAR *asc_dvc) | |||
4800 | } | 4815 | } |
4801 | release_firmware(fw); | 4816 | release_firmware(fw); |
4802 | warn_code |= AscInitMicroCodeVar(asc_dvc); | 4817 | warn_code |= AscInitMicroCodeVar(asc_dvc); |
4818 | if (!asc_dvc->overrun_dma) | ||
4819 | return warn_code; | ||
4803 | asc_dvc->init_state |= ASC_INIT_STATE_END_LOAD_MC; | 4820 | asc_dvc->init_state |= ASC_INIT_STATE_END_LOAD_MC; |
4804 | AscEnableInterrupt(iop_base); | 4821 | AscEnableInterrupt(iop_base); |
4805 | return warn_code; | 4822 | return warn_code; |
@@ -5110,12 +5127,14 @@ static int AdvInitAsc3550Driver(ADV_DVC_VAR *asc_dvc) | |||
5110 | if (err) { | 5127 | if (err) { |
5111 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | 5128 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", |
5112 | fwname, err); | 5129 | fwname, err); |
5130 | asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; | ||
5113 | return err; | 5131 | return err; |
5114 | } | 5132 | } |
5115 | if (fw->size < 4) { | 5133 | if (fw->size < 4) { |
5116 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", | 5134 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", |
5117 | fw->size, fwname); | 5135 | fw->size, fwname); |
5118 | release_firmware(fw); | 5136 | release_firmware(fw); |
5137 | asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; | ||
5119 | return -EINVAL; | 5138 | return -EINVAL; |
5120 | } | 5139 | } |
5121 | chksum = (fw->data[3] << 24) | (fw->data[2] << 16) | | 5140 | chksum = (fw->data[3] << 24) | (fw->data[2] << 16) | |
@@ -5624,12 +5643,14 @@ static int AdvInitAsc38C0800Driver(ADV_DVC_VAR *asc_dvc) | |||
5624 | if (err) { | 5643 | if (err) { |
5625 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | 5644 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", |
5626 | fwname, err); | 5645 | fwname, err); |
5646 | asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; | ||
5627 | return err; | 5647 | return err; |
5628 | } | 5648 | } |
5629 | if (fw->size < 4) { | 5649 | if (fw->size < 4) { |
5630 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", | 5650 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", |
5631 | fw->size, fwname); | 5651 | fw->size, fwname); |
5632 | release_firmware(fw); | 5652 | release_firmware(fw); |
5653 | asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; | ||
5633 | return -EINVAL; | 5654 | return -EINVAL; |
5634 | } | 5655 | } |
5635 | chksum = (fw->data[3] << 24) | (fw->data[2] << 16) | | 5656 | chksum = (fw->data[3] << 24) | (fw->data[2] << 16) | |
@@ -6124,12 +6145,14 @@ static int AdvInitAsc38C1600Driver(ADV_DVC_VAR *asc_dvc) | |||
6124 | if (err) { | 6145 | if (err) { |
6125 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | 6146 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", |
6126 | fwname, err); | 6147 | fwname, err); |
6148 | asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; | ||
6127 | return err; | 6149 | return err; |
6128 | } | 6150 | } |
6129 | if (fw->size < 4) { | 6151 | if (fw->size < 4) { |
6130 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", | 6152 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", |
6131 | fw->size, fwname); | 6153 | fw->size, fwname); |
6132 | release_firmware(fw); | 6154 | release_firmware(fw); |
6155 | asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; | ||
6133 | return -EINVAL; | 6156 | return -EINVAL; |
6134 | } | 6157 | } |
6135 | chksum = (fw->data[3] << 24) | (fw->data[2] << 16) | | 6158 | chksum = (fw->data[3] << 24) | (fw->data[2] << 16) | |
@@ -7970,9 +7993,10 @@ static int advansys_reset(struct scsi_cmnd *scp) | |||
7970 | status = AscInitAsc1000Driver(asc_dvc); | 7993 | status = AscInitAsc1000Driver(asc_dvc); |
7971 | 7994 | ||
7972 | /* Refer to ASC_IERR_* definitions for meaning of 'err_code'. */ | 7995 | /* Refer to ASC_IERR_* definitions for meaning of 'err_code'. */ |
7973 | if (asc_dvc->err_code) { | 7996 | if (asc_dvc->err_code || !asc_dvc->overrun_dma) { |
7974 | scmd_printk(KERN_INFO, scp, "SCSI bus reset error: " | 7997 | scmd_printk(KERN_INFO, scp, "SCSI bus reset error: " |
7975 | "0x%x\n", asc_dvc->err_code); | 7998 | "0x%x, status: 0x%x\n", asc_dvc->err_code, |
7999 | status); | ||
7976 | ret = FAILED; | 8000 | ret = FAILED; |
7977 | } else if (status) { | 8001 | } else if (status) { |
7978 | scmd_printk(KERN_INFO, scp, "SCSI bus reset warning: " | 8002 | scmd_printk(KERN_INFO, scp, "SCSI bus reset warning: " |
@@ -12303,7 +12327,7 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
12303 | asc_dvc_varp->overrun_buf = kzalloc(ASC_OVERRUN_BSIZE, GFP_KERNEL); | 12327 | asc_dvc_varp->overrun_buf = kzalloc(ASC_OVERRUN_BSIZE, GFP_KERNEL); |
12304 | if (!asc_dvc_varp->overrun_buf) { | 12328 | if (!asc_dvc_varp->overrun_buf) { |
12305 | ret = -ENOMEM; | 12329 | ret = -ENOMEM; |
12306 | goto err_free_wide_mem; | 12330 | goto err_free_irq; |
12307 | } | 12331 | } |
12308 | warn_code = AscInitAsc1000Driver(asc_dvc_varp); | 12332 | warn_code = AscInitAsc1000Driver(asc_dvc_varp); |
12309 | 12333 | ||
@@ -12312,30 +12336,36 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
12312 | "warn 0x%x, error 0x%x\n", | 12336 | "warn 0x%x, error 0x%x\n", |
12313 | asc_dvc_varp->init_state, warn_code, | 12337 | asc_dvc_varp->init_state, warn_code, |
12314 | asc_dvc_varp->err_code); | 12338 | asc_dvc_varp->err_code); |
12315 | if (asc_dvc_varp->err_code) { | 12339 | if (!asc_dvc_varp->overrun_dma) { |
12316 | ret = -ENODEV; | 12340 | ret = -ENODEV; |
12317 | kfree(asc_dvc_varp->overrun_buf); | 12341 | goto err_free_mem; |
12318 | } | 12342 | } |
12319 | } | 12343 | } |
12320 | } else { | 12344 | } else { |
12321 | if (advansys_wide_init_chip(shost)) | 12345 | if (advansys_wide_init_chip(shost)) { |
12322 | ret = -ENODEV; | 12346 | ret = -ENODEV; |
12347 | goto err_free_mem; | ||
12348 | } | ||
12323 | } | 12349 | } |
12324 | 12350 | ||
12325 | if (ret) | ||
12326 | goto err_free_wide_mem; | ||
12327 | |||
12328 | ASC_DBG_PRT_SCSI_HOST(2, shost); | 12351 | ASC_DBG_PRT_SCSI_HOST(2, shost); |
12329 | 12352 | ||
12330 | ret = scsi_add_host(shost, boardp->dev); | 12353 | ret = scsi_add_host(shost, boardp->dev); |
12331 | if (ret) | 12354 | if (ret) |
12332 | goto err_free_wide_mem; | 12355 | goto err_free_mem; |
12333 | 12356 | ||
12334 | scsi_scan_host(shost); | 12357 | scsi_scan_host(shost); |
12335 | return 0; | 12358 | return 0; |
12336 | 12359 | ||
12337 | err_free_wide_mem: | 12360 | err_free_mem: |
12338 | advansys_wide_free_mem(boardp); | 12361 | if (ASC_NARROW_BOARD(boardp)) { |
12362 | if (asc_dvc_varp->overrun_dma) | ||
12363 | dma_unmap_single(boardp->dev, asc_dvc_varp->overrun_dma, | ||
12364 | ASC_OVERRUN_BSIZE, DMA_FROM_DEVICE); | ||
12365 | kfree(asc_dvc_varp->overrun_buf); | ||
12366 | } else | ||
12367 | advansys_wide_free_mem(boardp); | ||
12368 | err_free_irq: | ||
12339 | free_irq(boardp->irq, shost); | 12369 | free_irq(boardp->irq, shost); |
12340 | err_free_dma: | 12370 | err_free_dma: |
12341 | #ifdef CONFIG_ISA | 12371 | #ifdef CONFIG_ISA |
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c index 1e5478abd90e..8eab8587ff21 100644 --- a/drivers/scsi/aha152x.c +++ b/drivers/scsi/aha152x.c | |||
@@ -254,6 +254,7 @@ | |||
254 | #include <linux/spinlock.h> | 254 | #include <linux/spinlock.h> |
255 | #include <linux/workqueue.h> | 255 | #include <linux/workqueue.h> |
256 | #include <linux/list.h> | 256 | #include <linux/list.h> |
257 | #include <linux/slab.h> | ||
257 | #include <scsi/scsicam.h> | 258 | #include <scsi/scsicam.h> |
258 | 259 | ||
259 | #include "scsi.h" | 260 | #include "scsi.h" |
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c index 80594947c6f6..2a8cf137f609 100644 --- a/drivers/scsi/aha1542.c +++ b/drivers/scsi/aha1542.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <linux/blkdev.h> | 39 | #include <linux/blkdev.h> |
40 | #include <linux/mca.h> | 40 | #include <linux/mca.h> |
41 | #include <linux/mca-legacy.h> | 41 | #include <linux/mca-legacy.h> |
42 | #include <linux/slab.h> | ||
42 | 43 | ||
43 | #include <asm/dma.h> | 44 | #include <asm/dma.h> |
44 | #include <asm/system.h> | 45 | #include <asm/system.h> |
diff --git a/drivers/scsi/aha1740.c b/drivers/scsi/aha1740.c index 538135783aab..0107a4cc3331 100644 --- a/drivers/scsi/aha1740.c +++ b/drivers/scsi/aha1740.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <linux/device.h> | 50 | #include <linux/device.h> |
51 | #include <linux/eisa.h> | 51 | #include <linux/eisa.h> |
52 | #include <linux/dma-mapping.h> | 52 | #include <linux/dma-mapping.h> |
53 | #include <linux/gfp.h> | ||
53 | 54 | ||
54 | #include <asm/dma.h> | 55 | #include <asm/dma.h> |
55 | #include <asm/system.h> | 56 | #include <asm/system.h> |
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index 1222a7ac698a..4c41332a354b 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c | |||
@@ -53,6 +53,7 @@ static struct scsi_transport_template *ahd_linux_transport_template = NULL; | |||
53 | #include <linux/blkdev.h> /* For block_size() */ | 53 | #include <linux/blkdev.h> /* For block_size() */ |
54 | #include <linux/delay.h> /* For ssleep/msleep */ | 54 | #include <linux/delay.h> /* For ssleep/msleep */ |
55 | #include <linux/device.h> | 55 | #include <linux/device.h> |
56 | #include <linux/slab.h> | ||
56 | 57 | ||
57 | /* | 58 | /* |
58 | * Bucket size for counting good commands in between bad ones. | 59 | * Bucket size for counting good commands in between bad ones. |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c index 8cb05dc8e6a1..5e42dac23505 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.c +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c | |||
@@ -129,6 +129,7 @@ static struct scsi_transport_template *ahc_linux_transport_template = NULL; | |||
129 | #include <linux/mm.h> /* For fetching system memory size */ | 129 | #include <linux/mm.h> /* For fetching system memory size */ |
130 | #include <linux/blkdev.h> /* For block_size() */ | 130 | #include <linux/blkdev.h> /* For block_size() */ |
131 | #include <linux/delay.h> /* For ssleep/msleep */ | 131 | #include <linux/delay.h> /* For ssleep/msleep */ |
132 | #include <linux/slab.h> | ||
132 | 133 | ||
133 | 134 | ||
134 | /* | 135 | /* |
diff --git a/drivers/scsi/aic94xx/aic94xx_hwi.c b/drivers/scsi/aic94xx/aic94xx_hwi.c index eb9dc3195fdf..81b736c76fff 100644 --- a/drivers/scsi/aic94xx/aic94xx_hwi.c +++ b/drivers/scsi/aic94xx/aic94xx_hwi.c | |||
@@ -25,6 +25,7 @@ | |||
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include <linux/pci.h> | 27 | #include <linux/pci.h> |
28 | #include <linux/slab.h> | ||
28 | #include <linux/delay.h> | 29 | #include <linux/delay.h> |
29 | #include <linux/module.h> | 30 | #include <linux/module.h> |
30 | #include <linux/firmware.h> | 31 | #include <linux/firmware.h> |
diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c index 996f7224f90e..24ac2315c5c7 100644 --- a/drivers/scsi/aic94xx/aic94xx_init.c +++ b/drivers/scsi/aic94xx/aic94xx_init.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/pci.h> | 30 | #include <linux/pci.h> |
31 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
32 | #include <linux/firmware.h> | 32 | #include <linux/firmware.h> |
33 | #include <linux/slab.h> | ||
33 | 34 | ||
34 | #include <scsi/scsi_host.h> | 35 | #include <scsi/scsi_host.h> |
35 | 36 | ||
diff --git a/drivers/scsi/aic94xx/aic94xx_scb.c b/drivers/scsi/aic94xx/aic94xx_scb.c index ca55013b6ae5..c43698b1cb64 100644 --- a/drivers/scsi/aic94xx/aic94xx_scb.c +++ b/drivers/scsi/aic94xx/aic94xx_scb.c | |||
@@ -24,6 +24,7 @@ | |||
24 | * | 24 | * |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include <linux/gfp.h> | ||
27 | #include <scsi/scsi_host.h> | 28 | #include <scsi/scsi_host.h> |
28 | 29 | ||
29 | #include "aic94xx.h" | 30 | #include "aic94xx.h" |
diff --git a/drivers/scsi/aic94xx/aic94xx_sds.c b/drivers/scsi/aic94xx/aic94xx_sds.c index 8630a75b2872..edb43fda9f36 100644 --- a/drivers/scsi/aic94xx/aic94xx_sds.c +++ b/drivers/scsi/aic94xx/aic94xx_sds.c | |||
@@ -26,6 +26,7 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | #include <linux/pci.h> | 28 | #include <linux/pci.h> |
29 | #include <linux/slab.h> | ||
29 | #include <linux/delay.h> | 30 | #include <linux/delay.h> |
30 | 31 | ||
31 | #include "aic94xx.h" | 32 | #include "aic94xx.h" |
diff --git a/drivers/scsi/aic94xx/aic94xx_seq.c b/drivers/scsi/aic94xx/aic94xx_seq.c index 8f98e33155e9..d01dcc62b39a 100644 --- a/drivers/scsi/aic94xx/aic94xx_seq.c +++ b/drivers/scsi/aic94xx/aic94xx_seq.c | |||
@@ -27,6 +27,7 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <linux/delay.h> | 29 | #include <linux/delay.h> |
30 | #include <linux/gfp.h> | ||
30 | #include <linux/pci.h> | 31 | #include <linux/pci.h> |
31 | #include <linux/module.h> | 32 | #include <linux/module.h> |
32 | #include <linux/firmware.h> | 33 | #include <linux/firmware.h> |
diff --git a/drivers/scsi/aic94xx/aic94xx_tmf.c b/drivers/scsi/aic94xx/aic94xx_tmf.c index 78eb86fc6276..0add73bdf2a4 100644 --- a/drivers/scsi/aic94xx/aic94xx_tmf.c +++ b/drivers/scsi/aic94xx/aic94xx_tmf.c | |||
@@ -25,6 +25,7 @@ | |||
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include <linux/spinlock.h> | 27 | #include <linux/spinlock.h> |
28 | #include <linux/gfp.h> | ||
28 | #include "aic94xx.h" | 29 | #include "aic94xx.h" |
29 | #include "aic94xx_sas.h" | 30 | #include "aic94xx_sas.h" |
30 | #include "aic94xx_hwi.h" | 31 | #include "aic94xx_hwi.h" |
diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c index 47d5d19f8c92..ffbe2192da3c 100644 --- a/drivers/scsi/arcmsr/arcmsr_hba.c +++ b/drivers/scsi/arcmsr/arcmsr_hba.c | |||
@@ -58,6 +58,7 @@ | |||
58 | #include <linux/timer.h> | 58 | #include <linux/timer.h> |
59 | #include <linux/pci.h> | 59 | #include <linux/pci.h> |
60 | #include <linux/aer.h> | 60 | #include <linux/aer.h> |
61 | #include <linux/slab.h> | ||
61 | #include <asm/dma.h> | 62 | #include <asm/dma.h> |
62 | #include <asm/io.h> | 63 | #include <asm/io.h> |
63 | #include <asm/system.h> | 64 | #include <asm/system.h> |
diff --git a/drivers/scsi/atari_NCR5380.c b/drivers/scsi/atari_NCR5380.c index 4240b05aef6d..158ebc3644d8 100644 --- a/drivers/scsi/atari_NCR5380.c +++ b/drivers/scsi/atari_NCR5380.c | |||
@@ -651,6 +651,7 @@ static inline void NCR5380_print_phase(struct Scsi_Host *instance) | |||
651 | * interrupt or bottom half. | 651 | * interrupt or bottom half. |
652 | */ | 652 | */ |
653 | 653 | ||
654 | #include <linux/gfp.h> | ||
654 | #include <linux/workqueue.h> | 655 | #include <linux/workqueue.h> |
655 | #include <linux/interrupt.h> | 656 | #include <linux/interrupt.h> |
656 | 657 | ||
diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c index b137e561f5bc..ab5bdda6903e 100644 --- a/drivers/scsi/atp870u.c +++ b/drivers/scsi/atp870u.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/pci.h> | 29 | #include <linux/pci.h> |
30 | #include <linux/blkdev.h> | 30 | #include <linux/blkdev.h> |
31 | #include <linux/dma-mapping.h> | 31 | #include <linux/dma-mapping.h> |
32 | #include <linux/slab.h> | ||
32 | #include <asm/system.h> | 33 | #include <asm/system.h> |
33 | #include <asm/io.h> | 34 | #include <asm/io.h> |
34 | 35 | ||
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c index fcfb29e02d8a..dd5b105f8f47 100644 --- a/drivers/scsi/be2iscsi/be_main.c +++ b/drivers/scsi/be2iscsi/be_main.c | |||
@@ -19,6 +19,7 @@ | |||
19 | */ | 19 | */ |
20 | #include <linux/reboot.h> | 20 | #include <linux/reboot.h> |
21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
22 | #include <linux/slab.h> | ||
22 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
23 | #include <linux/blkdev.h> | 24 | #include <linux/blkdev.h> |
24 | #include <linux/pci.h> | 25 | #include <linux/pci.h> |
diff --git a/drivers/scsi/be2iscsi/be_mgmt.c b/drivers/scsi/be2iscsi/be_mgmt.c index 72617b650a7e..e641922f20bc 100644 --- a/drivers/scsi/be2iscsi/be_mgmt.c +++ b/drivers/scsi/be2iscsi/be_mgmt.c | |||
@@ -169,6 +169,7 @@ unsigned char mgmt_invalidate_icds(struct beiscsi_hba *phba, | |||
169 | SE_DEBUG(DBG_LVL_1, | 169 | SE_DEBUG(DBG_LVL_1, |
170 | "Failed to allocate memory for" | 170 | "Failed to allocate memory for" |
171 | "mgmt_invalidate_icds \n"); | 171 | "mgmt_invalidate_icds \n"); |
172 | spin_unlock(&ctrl->mbox_lock); | ||
172 | return -1; | 173 | return -1; |
173 | } | 174 | } |
174 | nonemb_cmd.size = sizeof(struct invalidate_commands_params_in); | 175 | nonemb_cmd.size = sizeof(struct invalidate_commands_params_in); |
diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c index 6bff08ea4029..13f5feb308c2 100644 --- a/drivers/scsi/bfa/bfad.c +++ b/drivers/scsi/bfa/bfad.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * bfad.c Linux driver PCI interface module. | 19 | * bfad.c Linux driver PCI interface module. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/slab.h> | ||
22 | #include <linux/module.h> | 23 | #include <linux/module.h> |
23 | #include <linux/kthread.h> | 24 | #include <linux/kthread.h> |
24 | #include "bfad_drv.h" | 25 | #include "bfad_drv.h" |
diff --git a/drivers/scsi/bfa/bfad_attr.c b/drivers/scsi/bfa/bfad_attr.c index d97f69191838..6a2efdd5ef24 100644 --- a/drivers/scsi/bfa/bfad_attr.c +++ b/drivers/scsi/bfa/bfad_attr.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * bfa_attr.c Linux driver configuration interface module. | 19 | * bfa_attr.c Linux driver configuration interface module. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/slab.h> | ||
22 | #include "bfad_drv.h" | 23 | #include "bfad_drv.h" |
23 | #include "bfad_im.h" | 24 | #include "bfad_im.h" |
24 | #include "bfad_trcmod.h" | 25 | #include "bfad_trcmod.h" |
diff --git a/drivers/scsi/bfa/bfad_im.c b/drivers/scsi/bfa/bfad_im.c index f9fc67a25bf2..78f42aa57369 100644 --- a/drivers/scsi/bfa/bfad_im.c +++ b/drivers/scsi/bfa/bfad_im.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * bfad_im.c Linux driver IM module. | 19 | * bfad_im.c Linux driver IM module. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/slab.h> | ||
22 | #include "bfad_drv.h" | 23 | #include "bfad_drv.h" |
23 | #include "bfad_im.h" | 24 | #include "bfad_im.h" |
24 | #include "bfad_trcmod.h" | 25 | #include "bfad_trcmod.h" |
diff --git a/drivers/scsi/bfa/rport.c b/drivers/scsi/bfa/rport.c index 8e73dd9a625a..7b096f2e3836 100644 --- a/drivers/scsi/bfa/rport.c +++ b/drivers/scsi/bfa/rport.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * rport.c Remote port implementation. | 19 | * rport.c Remote port implementation. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/slab.h> | ||
22 | #include <bfa.h> | 23 | #include <bfa.h> |
23 | #include <bfa_svc.h> | 24 | #include <bfa_svc.h> |
24 | #include "fcbuild.h" | 25 | #include "fcbuild.h" |
diff --git a/drivers/scsi/bnx2i/bnx2i.h b/drivers/scsi/bnx2i/bnx2i.h index 6cf9dc37d78b..6b624e767d3b 100644 --- a/drivers/scsi/bnx2i/bnx2i.h +++ b/drivers/scsi/bnx2i/bnx2i.h | |||
@@ -362,6 +362,7 @@ struct bnx2i_hba { | |||
362 | u32 num_ccell; | 362 | u32 num_ccell; |
363 | 363 | ||
364 | int ofld_conns_active; | 364 | int ofld_conns_active; |
365 | wait_queue_head_t eh_wait; | ||
365 | 366 | ||
366 | int max_active_conns; | 367 | int max_active_conns; |
367 | struct iscsi_cid_queue cid_que; | 368 | struct iscsi_cid_queue cid_que; |
@@ -381,6 +382,7 @@ struct bnx2i_hba { | |||
381 | spinlock_t lock; /* protects hba structure access */ | 382 | spinlock_t lock; /* protects hba structure access */ |
382 | struct mutex net_dev_lock;/* sync net device access */ | 383 | struct mutex net_dev_lock;/* sync net device access */ |
383 | 384 | ||
385 | int hba_shutdown_tmo; | ||
384 | /* | 386 | /* |
385 | * PCI related info. | 387 | * PCI related info. |
386 | */ | 388 | */ |
diff --git a/drivers/scsi/bnx2i/bnx2i_hwi.c b/drivers/scsi/bnx2i/bnx2i_hwi.c index 1af578dec276..18352ff82101 100644 --- a/drivers/scsi/bnx2i/bnx2i_hwi.c +++ b/drivers/scsi/bnx2i/bnx2i_hwi.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * Written by: Anil Veerabhadrappa (anilgv@broadcom.com) | 11 | * Written by: Anil Veerabhadrappa (anilgv@broadcom.com) |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/gfp.h> | ||
14 | #include <scsi/scsi_tcq.h> | 15 | #include <scsi/scsi_tcq.h> |
15 | #include <scsi/libiscsi.h> | 16 | #include <scsi/libiscsi.h> |
16 | #include "bnx2i.h" | 17 | #include "bnx2i.h" |
diff --git a/drivers/scsi/bnx2i/bnx2i_init.c b/drivers/scsi/bnx2i/bnx2i_init.c index 6d8172e781cf..5d9296c599f6 100644 --- a/drivers/scsi/bnx2i/bnx2i_init.c +++ b/drivers/scsi/bnx2i/bnx2i_init.c | |||
@@ -177,11 +177,22 @@ void bnx2i_stop(void *handle) | |||
177 | struct bnx2i_hba *hba = handle; | 177 | struct bnx2i_hba *hba = handle; |
178 | 178 | ||
179 | /* check if cleanup happened in GOING_DOWN context */ | 179 | /* check if cleanup happened in GOING_DOWN context */ |
180 | clear_bit(ADAPTER_STATE_UP, &hba->adapter_state); | ||
181 | if (!test_and_clear_bit(ADAPTER_STATE_GOING_DOWN, | 180 | if (!test_and_clear_bit(ADAPTER_STATE_GOING_DOWN, |
182 | &hba->adapter_state)) | 181 | &hba->adapter_state)) |
183 | iscsi_host_for_each_session(hba->shost, | 182 | iscsi_host_for_each_session(hba->shost, |
184 | bnx2i_drop_session); | 183 | bnx2i_drop_session); |
184 | |||
185 | /* Wait for all endpoints to be torn down, Chip will be reset once | ||
186 | * control returns to network driver. So it is required to cleanup and | ||
187 | * release all connection resources before returning from this routine. | ||
188 | */ | ||
189 | wait_event_interruptible_timeout(hba->eh_wait, | ||
190 | (hba->ofld_conns_active == 0), | ||
191 | hba->hba_shutdown_tmo); | ||
192 | /* This flag should be cleared last so that ep_disconnect() gracefully | ||
193 | * cleans up connection context | ||
194 | */ | ||
195 | clear_bit(ADAPTER_STATE_UP, &hba->adapter_state); | ||
185 | } | 196 | } |
186 | 197 | ||
187 | /** | 198 | /** |
diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c index cb71dc984797..fa68ab34b998 100644 --- a/drivers/scsi/bnx2i/bnx2i_iscsi.c +++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c | |||
@@ -12,6 +12,7 @@ | |||
12 | * Written by: Anil Veerabhadrappa (anilgv@broadcom.com) | 12 | * Written by: Anil Veerabhadrappa (anilgv@broadcom.com) |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/slab.h> | ||
15 | #include <scsi/scsi_tcq.h> | 16 | #include <scsi/scsi_tcq.h> |
16 | #include <scsi/libiscsi.h> | 17 | #include <scsi/libiscsi.h> |
17 | #include "bnx2i.h" | 18 | #include "bnx2i.h" |
@@ -819,6 +820,11 @@ struct bnx2i_hba *bnx2i_alloc_hba(struct cnic_dev *cnic) | |||
819 | 820 | ||
820 | spin_lock_init(&hba->lock); | 821 | spin_lock_init(&hba->lock); |
821 | mutex_init(&hba->net_dev_lock); | 822 | mutex_init(&hba->net_dev_lock); |
823 | init_waitqueue_head(&hba->eh_wait); | ||
824 | if (test_bit(BNX2I_NX2_DEV_57710, &hba->cnic_dev_type)) | ||
825 | hba->hba_shutdown_tmo = 240 * HZ; | ||
826 | else /* 5706/5708/5709 */ | ||
827 | hba->hba_shutdown_tmo = 30 * HZ; | ||
822 | 828 | ||
823 | if (iscsi_host_add(shost, &hba->pcidev->dev)) | 829 | if (iscsi_host_add(shost, &hba->pcidev->dev)) |
824 | goto free_dump_mem; | 830 | goto free_dump_mem; |
@@ -1657,8 +1663,8 @@ static struct iscsi_endpoint *bnx2i_ep_connect(struct Scsi_Host *shost, | |||
1657 | */ | 1663 | */ |
1658 | hba = bnx2i_check_route(dst_addr); | 1664 | hba = bnx2i_check_route(dst_addr); |
1659 | 1665 | ||
1660 | if (!hba) { | 1666 | if (!hba || test_bit(ADAPTER_STATE_GOING_DOWN, &hba->adapter_state)) { |
1661 | rc = -ENOMEM; | 1667 | rc = -EINVAL; |
1662 | goto check_busy; | 1668 | goto check_busy; |
1663 | } | 1669 | } |
1664 | 1670 | ||
@@ -1803,7 +1809,7 @@ static int bnx2i_ep_poll(struct iscsi_endpoint *ep, int timeout_ms) | |||
1803 | (bnx2i_ep->state == | 1809 | (bnx2i_ep->state == |
1804 | EP_STATE_CONNECT_COMPL)), | 1810 | EP_STATE_CONNECT_COMPL)), |
1805 | msecs_to_jiffies(timeout_ms)); | 1811 | msecs_to_jiffies(timeout_ms)); |
1806 | if (!rc || (bnx2i_ep->state == EP_STATE_OFLD_FAILED)) | 1812 | if (bnx2i_ep->state == EP_STATE_OFLD_FAILED) |
1807 | rc = -1; | 1813 | rc = -1; |
1808 | 1814 | ||
1809 | if (rc > 0) | 1815 | if (rc > 0) |
@@ -1956,6 +1962,8 @@ return_bnx2i_ep: | |||
1956 | 1962 | ||
1957 | if (!hba->ofld_conns_active) | 1963 | if (!hba->ofld_conns_active) |
1958 | bnx2i_unreg_dev_all(); | 1964 | bnx2i_unreg_dev_all(); |
1965 | |||
1966 | wake_up_interruptible(&hba->eh_wait); | ||
1959 | } | 1967 | } |
1960 | 1968 | ||
1961 | 1969 | ||
diff --git a/drivers/scsi/bvme6000_scsi.c b/drivers/scsi/bvme6000_scsi.c index 5799cb5cba6b..d40ea2f5be10 100644 --- a/drivers/scsi/bvme6000_scsi.c +++ b/drivers/scsi/bvme6000_scsi.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/slab.h> | ||
15 | #include <asm/bvme6000hw.h> | 16 | #include <asm/bvme6000hw.h> |
16 | #include <scsi/scsi_host.h> | 17 | #include <scsi/scsi_host.h> |
17 | #include <scsi/scsi_device.h> | 18 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c index fe11c1d4b31d..4799d4391203 100644 --- a/drivers/scsi/ch.c +++ b/drivers/scsi/ch.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/mutex.h> | 23 | #include <linux/mutex.h> |
24 | #include <linux/idr.h> | 24 | #include <linux/idr.h> |
25 | #include <linux/smp_lock.h> | 25 | #include <linux/smp_lock.h> |
26 | #include <linux/slab.h> | ||
26 | 27 | ||
27 | #include <scsi/scsi.h> | 28 | #include <scsi/scsi.h> |
28 | #include <scsi/scsi_cmnd.h> | 29 | #include <scsi/scsi_cmnd.h> |
diff --git a/drivers/scsi/cxgb3i/cxgb3i_ddp.c b/drivers/scsi/cxgb3i/cxgb3i_ddp.c index 344fd53b9954..b58d9134ac1b 100644 --- a/drivers/scsi/cxgb3i/cxgb3i_ddp.c +++ b/drivers/scsi/cxgb3i/cxgb3i_ddp.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * Written by: Karen Xie (kxie@chelsio.com) | 10 | * Written by: Karen Xie (kxie@chelsio.com) |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/slab.h> | ||
13 | #include <linux/skbuff.h> | 14 | #include <linux/skbuff.h> |
14 | #include <linux/scatterlist.h> | 15 | #include <linux/scatterlist.h> |
15 | 16 | ||
diff --git a/drivers/scsi/cxgb3i/cxgb3i_ddp.h b/drivers/scsi/cxgb3i/cxgb3i_ddp.h index 87dd56b422bf..6761b329124d 100644 --- a/drivers/scsi/cxgb3i/cxgb3i_ddp.h +++ b/drivers/scsi/cxgb3i/cxgb3i_ddp.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #ifndef __CXGB3I_ULP2_DDP_H__ | 13 | #ifndef __CXGB3I_ULP2_DDP_H__ |
14 | #define __CXGB3I_ULP2_DDP_H__ | 14 | #define __CXGB3I_ULP2_DDP_H__ |
15 | 15 | ||
16 | #include <linux/slab.h> | ||
16 | #include <linux/vmalloc.h> | 17 | #include <linux/vmalloc.h> |
17 | 18 | ||
18 | /** | 19 | /** |
diff --git a/drivers/scsi/cxgb3i/cxgb3i_iscsi.c b/drivers/scsi/cxgb3i/cxgb3i_iscsi.c index b7c30585dadd..7b686abaae64 100644 --- a/drivers/scsi/cxgb3i/cxgb3i_iscsi.c +++ b/drivers/scsi/cxgb3i/cxgb3i_iscsi.c | |||
@@ -12,6 +12,7 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/inet.h> | 14 | #include <linux/inet.h> |
15 | #include <linux/slab.h> | ||
15 | #include <linux/crypto.h> | 16 | #include <linux/crypto.h> |
16 | #include <linux/if_vlan.h> | 17 | #include <linux/if_vlan.h> |
17 | #include <net/dst.h> | 18 | #include <net/dst.h> |
diff --git a/drivers/scsi/cxgb3i/cxgb3i_offload.c b/drivers/scsi/cxgb3i/cxgb3i_offload.c index 3e08c430ff29..a175be9c496f 100644 --- a/drivers/scsi/cxgb3i/cxgb3i_offload.c +++ b/drivers/scsi/cxgb3i/cxgb3i_offload.c | |||
@@ -13,6 +13,7 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/if_vlan.h> | 15 | #include <linux/if_vlan.h> |
16 | #include <linux/slab.h> | ||
16 | #include <linux/version.h> | 17 | #include <linux/version.h> |
17 | 18 | ||
18 | #include "cxgb3_defs.h" | 19 | #include "cxgb3_defs.h" |
diff --git a/drivers/scsi/cxgb3i/cxgb3i_pdu.c b/drivers/scsi/cxgb3i/cxgb3i_pdu.c index 9c38539557fc..dc5e3e77a351 100644 --- a/drivers/scsi/cxgb3i/cxgb3i_pdu.c +++ b/drivers/scsi/cxgb3i/cxgb3i_pdu.c | |||
@@ -12,6 +12,7 @@ | |||
12 | * Written by: Karen Xie (kxie@chelsio.com) | 12 | * Written by: Karen Xie (kxie@chelsio.com) |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/slab.h> | ||
15 | #include <linux/skbuff.h> | 16 | #include <linux/skbuff.h> |
16 | #include <linux/crypto.h> | 17 | #include <linux/crypto.h> |
17 | #include <scsi/scsi_cmnd.h> | 18 | #include <scsi/scsi_cmnd.h> |
diff --git a/drivers/scsi/dc395x.c b/drivers/scsi/dc395x.c index 6c59c02c1ed9..bd977be7544e 100644 --- a/drivers/scsi/dc395x.c +++ b/drivers/scsi/dc395x.c | |||
@@ -57,6 +57,7 @@ | |||
57 | #include <linux/pci.h> | 57 | #include <linux/pci.h> |
58 | #include <linux/list.h> | 58 | #include <linux/list.h> |
59 | #include <linux/vmalloc.h> | 59 | #include <linux/vmalloc.h> |
60 | #include <linux/slab.h> | ||
60 | #include <asm/io.h> | 61 | #include <asm/io.h> |
61 | 62 | ||
62 | #include <scsi/scsi.h> | 63 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/device_handler/scsi_dh.c b/drivers/scsi/device_handler/scsi_dh.c index e19a1a55270c..6fae3d285ae7 100644 --- a/drivers/scsi/device_handler/scsi_dh.c +++ b/drivers/scsi/device_handler/scsi_dh.c | |||
@@ -21,6 +21,7 @@ | |||
21 | * Mike Anderson <andmike@linux.vnet.ibm.com> | 21 | * Mike Anderson <andmike@linux.vnet.ibm.com> |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <linux/slab.h> | ||
24 | #include <scsi/scsi_dh.h> | 25 | #include <scsi/scsi_dh.h> |
25 | #include "../scsi_priv.h" | 26 | #include "../scsi_priv.h" |
26 | 27 | ||
diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c index bc9e94f5915e..1a970a76b1b9 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 19 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
20 | * | 20 | * |
21 | */ | 21 | */ |
22 | #include <linux/slab.h> | ||
22 | #include <scsi/scsi.h> | 23 | #include <scsi/scsi.h> |
23 | #include <scsi/scsi_eh.h> | 24 | #include <scsi/scsi_eh.h> |
24 | #include <scsi/scsi_dh.h> | 25 | #include <scsi/scsi_dh.h> |
diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c index 63032ec3db92..e8a0bc3efd49 100644 --- a/drivers/scsi/device_handler/scsi_dh_emc.c +++ b/drivers/scsi/device_handler/scsi_dh_emc.c | |||
@@ -20,6 +20,7 @@ | |||
20 | * along with this program; see the file COPYING. If not, write to | 20 | * along with this program; see the file COPYING. If not, write to |
21 | * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | 21 | * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
22 | */ | 22 | */ |
23 | #include <linux/slab.h> | ||
23 | #include <scsi/scsi.h> | 24 | #include <scsi/scsi.h> |
24 | #include <scsi/scsi_eh.h> | 25 | #include <scsi/scsi_eh.h> |
25 | #include <scsi/scsi_dh.h> | 26 | #include <scsi/scsi_dh.h> |
diff --git a/drivers/scsi/device_handler/scsi_dh_hp_sw.c b/drivers/scsi/device_handler/scsi_dh_hp_sw.c index 857fdd6032b2..e3916641e627 100644 --- a/drivers/scsi/device_handler/scsi_dh_hp_sw.c +++ b/drivers/scsi/device_handler/scsi_dh_hp_sw.c | |||
@@ -21,6 +21,7 @@ | |||
21 | * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | 21 | * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <linux/slab.h> | ||
24 | #include <scsi/scsi.h> | 25 | #include <scsi/scsi.h> |
25 | #include <scsi/scsi_dbg.h> | 26 | #include <scsi/scsi_dbg.h> |
26 | #include <scsi/scsi_eh.h> | 27 | #include <scsi/scsi_eh.h> |
diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c index 1a660191a905..5b683e429542 100644 --- a/drivers/scsi/device_handler/scsi_dh_rdac.c +++ b/drivers/scsi/device_handler/scsi_dh_rdac.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <scsi/scsi_eh.h> | 23 | #include <scsi/scsi_eh.h> |
24 | #include <scsi/scsi_dh.h> | 24 | #include <scsi/scsi_dh.h> |
25 | #include <linux/workqueue.h> | 25 | #include <linux/workqueue.h> |
26 | #include <linux/slab.h> | ||
26 | 27 | ||
27 | #define RDAC_NAME "rdac" | 28 | #define RDAC_NAME "rdac" |
28 | #define RDAC_RETRY_COUNT 5 | 29 | #define RDAC_RETRY_COUNT 5 |
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c index 496764349c41..0435d044c9da 100644 --- a/drivers/scsi/dpt_i2o.c +++ b/drivers/scsi/dpt_i2o.c | |||
@@ -188,7 +188,8 @@ MODULE_DEVICE_TABLE(pci,dptids); | |||
188 | static int adpt_detect(struct scsi_host_template* sht) | 188 | static int adpt_detect(struct scsi_host_template* sht) |
189 | { | 189 | { |
190 | struct pci_dev *pDev = NULL; | 190 | struct pci_dev *pDev = NULL; |
191 | adpt_hba* pHba; | 191 | adpt_hba *pHba; |
192 | adpt_hba *next; | ||
192 | 193 | ||
193 | PINFO("Detecting Adaptec I2O RAID controllers...\n"); | 194 | PINFO("Detecting Adaptec I2O RAID controllers...\n"); |
194 | 195 | ||
@@ -206,7 +207,8 @@ static int adpt_detect(struct scsi_host_template* sht) | |||
206 | } | 207 | } |
207 | 208 | ||
208 | /* In INIT state, Activate IOPs */ | 209 | /* In INIT state, Activate IOPs */ |
209 | for (pHba = hba_chain; pHba; pHba = pHba->next) { | 210 | for (pHba = hba_chain; pHba; pHba = next) { |
211 | next = pHba->next; | ||
210 | // Activate does get status , init outbound, and get hrt | 212 | // Activate does get status , init outbound, and get hrt |
211 | if (adpt_i2o_activate_hba(pHba) < 0) { | 213 | if (adpt_i2o_activate_hba(pHba) < 0) { |
212 | adpt_i2o_delete_hba(pHba); | 214 | adpt_i2o_delete_hba(pHba); |
@@ -243,7 +245,8 @@ rebuild_sys_tab: | |||
243 | PDEBUG("HBA's in OPERATIONAL state\n"); | 245 | PDEBUG("HBA's in OPERATIONAL state\n"); |
244 | 246 | ||
245 | printk("dpti: If you have a lot of devices this could take a few minutes.\n"); | 247 | printk("dpti: If you have a lot of devices this could take a few minutes.\n"); |
246 | for (pHba = hba_chain; pHba; pHba = pHba->next) { | 248 | for (pHba = hba_chain; pHba; pHba = next) { |
249 | next = pHba->next; | ||
247 | printk(KERN_INFO"%s: Reading the hardware resource table.\n", pHba->name); | 250 | printk(KERN_INFO"%s: Reading the hardware resource table.\n", pHba->name); |
248 | if (adpt_i2o_lct_get(pHba) < 0){ | 251 | if (adpt_i2o_lct_get(pHba) < 0){ |
249 | adpt_i2o_delete_hba(pHba); | 252 | adpt_i2o_delete_hba(pHba); |
@@ -263,7 +266,8 @@ rebuild_sys_tab: | |||
263 | adpt_sysfs_class = NULL; | 266 | adpt_sysfs_class = NULL; |
264 | } | 267 | } |
265 | 268 | ||
266 | for (pHba = hba_chain; pHba; pHba = pHba->next) { | 269 | for (pHba = hba_chain; pHba; pHba = next) { |
270 | next = pHba->next; | ||
267 | if (adpt_scsi_host_alloc(pHba, sht) < 0){ | 271 | if (adpt_scsi_host_alloc(pHba, sht) < 0){ |
268 | adpt_i2o_delete_hba(pHba); | 272 | adpt_i2o_delete_hba(pHba); |
269 | continue; | 273 | continue; |
@@ -1229,11 +1233,10 @@ static void adpt_i2o_delete_hba(adpt_hba* pHba) | |||
1229 | } | 1233 | } |
1230 | } | 1234 | } |
1231 | pci_dev_put(pHba->pDev); | 1235 | pci_dev_put(pHba->pDev); |
1232 | kfree(pHba); | ||
1233 | |||
1234 | if (adpt_sysfs_class) | 1236 | if (adpt_sysfs_class) |
1235 | device_destroy(adpt_sysfs_class, | 1237 | device_destroy(adpt_sysfs_class, |
1236 | MKDEV(DPTI_I2O_MAJOR, pHba->unit)); | 1238 | MKDEV(DPTI_I2O_MAJOR, pHba->unit)); |
1239 | kfree(pHba); | ||
1237 | 1240 | ||
1238 | if(hba_count <= 0){ | 1241 | if(hba_count <= 0){ |
1239 | unregister_chrdev(DPTI_I2O_MAJOR, DPT_DRIVER); | 1242 | unregister_chrdev(DPTI_I2O_MAJOR, DPT_DRIVER); |
diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c index 3c5abf7cd762..d1c31378f6da 100644 --- a/drivers/scsi/eata.c +++ b/drivers/scsi/eata.c | |||
@@ -490,6 +490,7 @@ | |||
490 | #include <linux/ctype.h> | 490 | #include <linux/ctype.h> |
491 | #include <linux/spinlock.h> | 491 | #include <linux/spinlock.h> |
492 | #include <linux/dma-mapping.h> | 492 | #include <linux/dma-mapping.h> |
493 | #include <linux/slab.h> | ||
493 | #include <asm/byteorder.h> | 494 | #include <asm/byteorder.h> |
494 | #include <asm/dma.h> | 495 | #include <asm/dma.h> |
495 | #include <asm/io.h> | 496 | #include <asm/io.h> |
diff --git a/drivers/scsi/eata_pio.c b/drivers/scsi/eata_pio.c index 152dd15db276..60886c19065e 100644 --- a/drivers/scsi/eata_pio.c +++ b/drivers/scsi/eata_pio.c | |||
@@ -50,7 +50,6 @@ | |||
50 | #include <linux/kernel.h> | 50 | #include <linux/kernel.h> |
51 | #include <linux/string.h> | 51 | #include <linux/string.h> |
52 | #include <linux/ioport.h> | 52 | #include <linux/ioport.h> |
53 | #include <linux/slab.h> | ||
54 | #include <linux/in.h> | 53 | #include <linux/in.h> |
55 | #include <linux/pci.h> | 54 | #include <linux/pci.h> |
56 | #include <linux/proc_fs.h> | 55 | #include <linux/proc_fs.h> |
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 2f47ae7cce91..f01b9b44e8aa 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/if_ether.h> | 26 | #include <linux/if_ether.h> |
27 | #include <linux/if_vlan.h> | 27 | #include <linux/if_vlan.h> |
28 | #include <linux/crc32.h> | 28 | #include <linux/crc32.h> |
29 | #include <linux/slab.h> | ||
29 | #include <linux/cpu.h> | 30 | #include <linux/cpu.h> |
30 | #include <linux/fs.h> | 31 | #include <linux/fs.h> |
31 | #include <linux/sysfs.h> | 32 | #include <linux/sysfs.h> |
diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c index 511cb6b371ee..3440da48d169 100644 --- a/drivers/scsi/fcoe/libfcoe.c +++ b/drivers/scsi/fcoe/libfcoe.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/if_vlan.h> | 31 | #include <linux/if_vlan.h> |
32 | #include <linux/errno.h> | 32 | #include <linux/errno.h> |
33 | #include <linux/bitops.h> | 33 | #include <linux/bitops.h> |
34 | #include <linux/slab.h> | ||
34 | #include <net/rtnetlink.h> | 35 | #include <net/rtnetlink.h> |
35 | 36 | ||
36 | #include <scsi/fc/fc_els.h> | 37 | #include <scsi/fc/fc_els.h> |
diff --git a/drivers/scsi/fd_mcs.c b/drivers/scsi/fd_mcs.c index 85bd54c77b50..2ad95aa8f585 100644 --- a/drivers/scsi/fd_mcs.c +++ b/drivers/scsi/fd_mcs.c | |||
@@ -88,6 +88,7 @@ | |||
88 | #include <linux/delay.h> | 88 | #include <linux/delay.h> |
89 | #include <linux/mca.h> | 89 | #include <linux/mca.h> |
90 | #include <linux/spinlock.h> | 90 | #include <linux/spinlock.h> |
91 | #include <linux/slab.h> | ||
91 | #include <scsi/scsicam.h> | 92 | #include <scsi/scsicam.h> |
92 | #include <linux/mca-legacy.h> | 93 | #include <linux/mca-legacy.h> |
93 | 94 | ||
diff --git a/drivers/scsi/fdomain.c b/drivers/scsi/fdomain.c index 32eef66114c7..e296bcc57d5c 100644 --- a/drivers/scsi/fdomain.c +++ b/drivers/scsi/fdomain.c | |||
@@ -279,6 +279,7 @@ | |||
279 | #include <linux/stat.h> | 279 | #include <linux/stat.h> |
280 | #include <linux/delay.h> | 280 | #include <linux/delay.h> |
281 | #include <linux/io.h> | 281 | #include <linux/io.h> |
282 | #include <linux/slab.h> | ||
282 | #include <scsi/scsicam.h> | 283 | #include <scsi/scsicam.h> |
283 | 284 | ||
284 | #include <asm/system.h> | 285 | #include <asm/system.h> |
diff --git a/drivers/scsi/fnic/fnic_fcs.c b/drivers/scsi/fnic/fnic_fcs.c index 54f8d0e5407f..5259888fbfb1 100644 --- a/drivers/scsi/fnic/fnic_fcs.c +++ b/drivers/scsi/fnic/fnic_fcs.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include <linux/errno.h> | 18 | #include <linux/errno.h> |
19 | #include <linux/pci.h> | 19 | #include <linux/pci.h> |
20 | #include <linux/slab.h> | ||
20 | #include <linux/skbuff.h> | 21 | #include <linux/skbuff.h> |
21 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
22 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
diff --git a/drivers/scsi/fnic/fnic_main.c b/drivers/scsi/fnic/fnic_main.c index 507e26c1c29f..97b212570bcc 100644 --- a/drivers/scsi/fnic/fnic_main.c +++ b/drivers/scsi/fnic/fnic_main.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <linux/mempool.h> | 19 | #include <linux/mempool.h> |
20 | #include <linux/string.h> | 20 | #include <linux/string.h> |
21 | #include <linux/slab.h> | ||
21 | #include <linux/errno.h> | 22 | #include <linux/errno.h> |
22 | #include <linux/init.h> | 23 | #include <linux/init.h> |
23 | #include <linux/pci.h> | 24 | #include <linux/pci.h> |
diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c index 65a39b0f6dc2..3cc47c6e1ada 100644 --- a/drivers/scsi/fnic/fnic_scsi.c +++ b/drivers/scsi/fnic/fnic_scsi.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/if_ether.h> | 26 | #include <linux/if_ether.h> |
27 | #include <linux/if_vlan.h> | 27 | #include <linux/if_vlan.h> |
28 | #include <linux/delay.h> | 28 | #include <linux/delay.h> |
29 | #include <linux/gfp.h> | ||
29 | #include <scsi/scsi.h> | 30 | #include <scsi/scsi.h> |
30 | #include <scsi/scsi_host.h> | 31 | #include <scsi/scsi_host.h> |
31 | #include <scsi/scsi_device.h> | 32 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/fnic/vnic_dev.c b/drivers/scsi/fnic/vnic_dev.c index 566770645086..db710148d156 100644 --- a/drivers/scsi/fnic/vnic_dev.c +++ b/drivers/scsi/fnic/vnic_dev.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/pci.h> | 22 | #include <linux/pci.h> |
23 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
24 | #include <linux/if_ether.h> | 24 | #include <linux/if_ether.h> |
25 | #include <linux/slab.h> | ||
25 | #include "vnic_resource.h" | 26 | #include "vnic_resource.h" |
26 | #include "vnic_devcmd.h" | 27 | #include "vnic_devcmd.h" |
27 | #include "vnic_dev.h" | 28 | #include "vnic_dev.h" |
diff --git a/drivers/scsi/fnic/vnic_rq.c b/drivers/scsi/fnic/vnic_rq.c index bedd0d285630..fd2068f5ae16 100644 --- a/drivers/scsi/fnic/vnic_rq.c +++ b/drivers/scsi/fnic/vnic_rq.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/types.h> | 20 | #include <linux/types.h> |
21 | #include <linux/pci.h> | 21 | #include <linux/pci.h> |
22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
23 | #include <linux/slab.h> | ||
23 | #include "vnic_dev.h" | 24 | #include "vnic_dev.h" |
24 | #include "vnic_rq.h" | 25 | #include "vnic_rq.h" |
25 | 26 | ||
diff --git a/drivers/scsi/fnic/vnic_wq.c b/drivers/scsi/fnic/vnic_wq.c index 1f9ea790d130..a414135460db 100644 --- a/drivers/scsi/fnic/vnic_wq.c +++ b/drivers/scsi/fnic/vnic_wq.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/types.h> | 20 | #include <linux/types.h> |
21 | #include <linux/pci.h> | 21 | #include <linux/pci.h> |
22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
23 | #include <linux/slab.h> | ||
23 | #include "vnic_dev.h" | 24 | #include "vnic_dev.h" |
24 | #include "vnic_wq.h" | 25 | #include "vnic_wq.h" |
25 | 26 | ||
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c index ba3c94c9c25f..35a4b3073ec3 100644 --- a/drivers/scsi/gdth.c +++ b/drivers/scsi/gdth.c | |||
@@ -121,6 +121,7 @@ | |||
121 | #include <linux/dma-mapping.h> | 121 | #include <linux/dma-mapping.h> |
122 | #include <linux/list.h> | 122 | #include <linux/list.h> |
123 | #include <linux/smp_lock.h> | 123 | #include <linux/smp_lock.h> |
124 | #include <linux/slab.h> | ||
124 | 125 | ||
125 | #ifdef GDTH_RTC | 126 | #ifdef GDTH_RTC |
126 | #include <linux/mc146818rtc.h> | 127 | #include <linux/mc146818rtc.h> |
diff --git a/drivers/scsi/gdth_proc.c b/drivers/scsi/gdth_proc.c index ffb2b21992ba..0572b9bf4bd6 100644 --- a/drivers/scsi/gdth_proc.c +++ b/drivers/scsi/gdth_proc.c | |||
@@ -3,6 +3,7 @@ | |||
3 | */ | 3 | */ |
4 | 4 | ||
5 | #include <linux/completion.h> | 5 | #include <linux/completion.h> |
6 | #include <linux/slab.h> | ||
6 | 7 | ||
7 | int gdth_proc_info(struct Scsi_Host *host, char *buffer,char **start,off_t offset,int length, | 8 | int gdth_proc_info(struct Scsi_Host *host, char *buffer,char **start,off_t offset,int length, |
8 | int inout) | 9 | int inout) |
diff --git a/drivers/scsi/gvp11.c b/drivers/scsi/gvp11.c index 5d1bf7e3d245..48f406850c65 100644 --- a/drivers/scsi/gvp11.c +++ b/drivers/scsi/gvp11.c | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <linux/types.h> | 1 | #include <linux/types.h> |
2 | #include <linux/mm.h> | 2 | #include <linux/mm.h> |
3 | #include <linux/slab.h> | ||
3 | #include <linux/blkdev.h> | 4 | #include <linux/blkdev.h> |
4 | #include <linux/init.h> | 5 | #include <linux/init.h> |
5 | #include <linux/interrupt.h> | 6 | #include <linux/interrupt.h> |
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c index 09dbcb847b73..6660fa92ffa1 100644 --- a/drivers/scsi/hosts.c +++ b/drivers/scsi/hosts.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/module.h> | 24 | #include <linux/module.h> |
25 | #include <linux/blkdev.h> | 25 | #include <linux/blkdev.h> |
26 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
27 | #include <linux/slab.h> | ||
27 | #include <linux/kthread.h> | 28 | #include <linux/kthread.h> |
28 | #include <linux/string.h> | 29 | #include <linux/string.h> |
29 | #include <linux/mm.h> | 30 | #include <linux/mm.h> |
diff --git a/drivers/scsi/hptiop.c b/drivers/scsi/hptiop.c index 4f0556571f80..645f7cdf21ab 100644 --- a/drivers/scsi/hptiop.c +++ b/drivers/scsi/hptiop.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
26 | #include <linux/timer.h> | 26 | #include <linux/timer.h> |
27 | #include <linux/spinlock.h> | 27 | #include <linux/spinlock.h> |
28 | #include <linux/gfp.h> | ||
28 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
29 | #include <asm/io.h> | 30 | #include <asm/io.h> |
30 | #include <asm/div64.h> | 31 | #include <asm/div64.h> |
diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c b/drivers/scsi/ibmvscsi/ibmvfc.c index 4e577e2fee38..c2eea711a5ce 100644 --- a/drivers/scsi/ibmvscsi/ibmvfc.c +++ b/drivers/scsi/ibmvscsi/ibmvfc.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/delay.h> | 28 | #include <linux/delay.h> |
29 | #include <linux/interrupt.h> | 29 | #include <linux/interrupt.h> |
30 | #include <linux/kthread.h> | 30 | #include <linux/kthread.h> |
31 | #include <linux/slab.h> | ||
31 | #include <linux/of.h> | 32 | #include <linux/of.h> |
32 | #include <linux/pm.h> | 33 | #include <linux/pm.h> |
33 | #include <linux/stringify.h> | 34 | #include <linux/stringify.h> |
diff --git a/drivers/scsi/ibmvscsi/ibmvscsi.c b/drivers/scsi/ibmvscsi/ibmvscsi.c index dc1bcbe3b176..88bad0e81bdd 100644 --- a/drivers/scsi/ibmvscsi/ibmvscsi.c +++ b/drivers/scsi/ibmvscsi/ibmvscsi.c | |||
@@ -70,6 +70,7 @@ | |||
70 | #include <linux/moduleparam.h> | 70 | #include <linux/moduleparam.h> |
71 | #include <linux/dma-mapping.h> | 71 | #include <linux/dma-mapping.h> |
72 | #include <linux/delay.h> | 72 | #include <linux/delay.h> |
73 | #include <linux/slab.h> | ||
73 | #include <linux/of.h> | 74 | #include <linux/of.h> |
74 | #include <linux/pm.h> | 75 | #include <linux/pm.h> |
75 | #include <asm/firmware.h> | 76 | #include <asm/firmware.h> |
@@ -322,16 +323,6 @@ static void set_srp_direction(struct scsi_cmnd *cmd, | |||
322 | srp_cmd->buf_fmt = fmt; | 323 | srp_cmd->buf_fmt = fmt; |
323 | } | 324 | } |
324 | 325 | ||
325 | static void unmap_sg_list(int num_entries, | ||
326 | struct device *dev, | ||
327 | struct srp_direct_buf *md) | ||
328 | { | ||
329 | int i; | ||
330 | |||
331 | for (i = 0; i < num_entries; ++i) | ||
332 | dma_unmap_single(dev, md[i].va, md[i].len, DMA_BIDIRECTIONAL); | ||
333 | } | ||
334 | |||
335 | /** | 326 | /** |
336 | * unmap_cmd_data: - Unmap data pointed in srp_cmd based on the format | 327 | * unmap_cmd_data: - Unmap data pointed in srp_cmd based on the format |
337 | * @cmd: srp_cmd whose additional_data member will be unmapped | 328 | * @cmd: srp_cmd whose additional_data member will be unmapped |
@@ -349,24 +340,9 @@ static void unmap_cmd_data(struct srp_cmd *cmd, | |||
349 | 340 | ||
350 | if (out_fmt == SRP_NO_DATA_DESC && in_fmt == SRP_NO_DATA_DESC) | 341 | if (out_fmt == SRP_NO_DATA_DESC && in_fmt == SRP_NO_DATA_DESC) |
351 | return; | 342 | return; |
352 | else if (out_fmt == SRP_DATA_DESC_DIRECT || | ||
353 | in_fmt == SRP_DATA_DESC_DIRECT) { | ||
354 | struct srp_direct_buf *data = | ||
355 | (struct srp_direct_buf *) cmd->add_data; | ||
356 | dma_unmap_single(dev, data->va, data->len, DMA_BIDIRECTIONAL); | ||
357 | } else { | ||
358 | struct srp_indirect_buf *indirect = | ||
359 | (struct srp_indirect_buf *) cmd->add_data; | ||
360 | int num_mapped = indirect->table_desc.len / | ||
361 | sizeof(struct srp_direct_buf); | ||
362 | 343 | ||
363 | if (num_mapped <= MAX_INDIRECT_BUFS) { | 344 | if (evt_struct->cmnd) |
364 | unmap_sg_list(num_mapped, dev, &indirect->desc_list[0]); | 345 | scsi_dma_unmap(evt_struct->cmnd); |
365 | return; | ||
366 | } | ||
367 | |||
368 | unmap_sg_list(num_mapped, dev, evt_struct->ext_list); | ||
369 | } | ||
370 | } | 346 | } |
371 | 347 | ||
372 | static int map_sg_list(struct scsi_cmnd *cmd, int nseg, | 348 | static int map_sg_list(struct scsi_cmnd *cmd, int nseg, |
diff --git a/drivers/scsi/ibmvscsi/ibmvstgt.c b/drivers/scsi/ibmvscsi/ibmvstgt.c index d5eaf9727109..e2056d517e99 100644 --- a/drivers/scsi/ibmvscsi/ibmvstgt.c +++ b/drivers/scsi/ibmvscsi/ibmvstgt.c | |||
@@ -23,6 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/slab.h> | ||
26 | #include <scsi/scsi.h> | 27 | #include <scsi/scsi.h> |
27 | #include <scsi/scsi_host.h> | 28 | #include <scsi/scsi_host.h> |
28 | #include <scsi/scsi_transport_srp.h> | 29 | #include <scsi/scsi_transport_srp.h> |
diff --git a/drivers/scsi/ibmvscsi/rpa_vscsi.c b/drivers/scsi/ibmvscsi/rpa_vscsi.c index 63a30cbbf9de..a864ccc0a342 100644 --- a/drivers/scsi/ibmvscsi/rpa_vscsi.c +++ b/drivers/scsi/ibmvscsi/rpa_vscsi.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <asm/iommu.h> | 32 | #include <asm/iommu.h> |
33 | #include <asm/hvcall.h> | 33 | #include <asm/hvcall.h> |
34 | #include <linux/dma-mapping.h> | 34 | #include <linux/dma-mapping.h> |
35 | #include <linux/gfp.h> | ||
35 | #include <linux/interrupt.h> | 36 | #include <linux/interrupt.h> |
36 | #include "ibmvscsi.h" | 37 | #include "ibmvscsi.h" |
37 | 38 | ||
diff --git a/drivers/scsi/imm.c b/drivers/scsi/imm.c index c2a9a13d788f..4734ab0b3ff6 100644 --- a/drivers/scsi/imm.c +++ b/drivers/scsi/imm.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/parport.h> | 15 | #include <linux/parport.h> |
16 | #include <linux/workqueue.h> | 16 | #include <linux/workqueue.h> |
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <linux/slab.h> | ||
18 | #include <asm/io.h> | 19 | #include <asm/io.h> |
19 | 20 | ||
20 | #include <scsi/scsi.h> | 21 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index c79cd98eb6bf..520461b9bc09 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
@@ -59,6 +59,7 @@ | |||
59 | #include <linux/types.h> | 59 | #include <linux/types.h> |
60 | #include <linux/errno.h> | 60 | #include <linux/errno.h> |
61 | #include <linux/kernel.h> | 61 | #include <linux/kernel.h> |
62 | #include <linux/slab.h> | ||
62 | #include <linux/ioport.h> | 63 | #include <linux/ioport.h> |
63 | #include <linux/delay.h> | 64 | #include <linux/delay.h> |
64 | #include <linux/pci.h> | 65 | #include <linux/pci.h> |
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c index 249053a9d4fa..02143af7c1af 100644 --- a/drivers/scsi/iscsi_tcp.c +++ b/drivers/scsi/iscsi_tcp.c | |||
@@ -28,6 +28,7 @@ | |||
28 | 28 | ||
29 | #include <linux/types.h> | 29 | #include <linux/types.h> |
30 | #include <linux/inet.h> | 30 | #include <linux/inet.h> |
31 | #include <linux/slab.h> | ||
31 | #include <linux/file.h> | 32 | #include <linux/file.h> |
32 | #include <linux/blkdev.h> | 33 | #include <linux/blkdev.h> |
33 | #include <linux/crypto.h> | 34 | #include <linux/crypto.h> |
@@ -598,7 +599,7 @@ static void iscsi_sw_tcp_conn_stop(struct iscsi_cls_conn *cls_conn, int flag) | |||
598 | set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx); | 599 | set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx); |
599 | write_unlock_bh(&tcp_sw_conn->sock->sk->sk_callback_lock); | 600 | write_unlock_bh(&tcp_sw_conn->sock->sk->sk_callback_lock); |
600 | 601 | ||
601 | if (sock->sk->sk_sleep && waitqueue_active(sock->sk->sk_sleep)) { | 602 | if (sock->sk->sk_sleep) { |
602 | sock->sk->sk_err = EIO; | 603 | sock->sk->sk_err = EIO; |
603 | wake_up_interruptible(sock->sk->sk_sleep); | 604 | wake_up_interruptible(sock->sk->sk_sleep); |
604 | } | 605 | } |
diff --git a/drivers/scsi/jazz_esp.c b/drivers/scsi/jazz_esp.c index b2d481dd3750..08e26d4e3731 100644 --- a/drivers/scsi/jazz_esp.c +++ b/drivers/scsi/jazz_esp.c | |||
@@ -4,6 +4,7 @@ | |||
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include <linux/kernel.h> | 6 | #include <linux/kernel.h> |
7 | #include <linux/gfp.h> | ||
7 | #include <linux/types.h> | 8 | #include <linux/types.h> |
8 | #include <linux/module.h> | 9 | #include <linux/module.h> |
9 | #include <linux/init.h> | 10 | #include <linux/init.h> |
diff --git a/drivers/scsi/lasi700.c b/drivers/scsi/lasi700.c index b3d31315ac32..23880f8fe7e4 100644 --- a/drivers/scsi/lasi700.c +++ b/drivers/scsi/lasi700.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <linux/blkdev.h> | 40 | #include <linux/blkdev.h> |
41 | #include <linux/ioport.h> | 41 | #include <linux/ioport.h> |
42 | #include <linux/dma-mapping.h> | 42 | #include <linux/dma-mapping.h> |
43 | #include <linux/slab.h> | ||
43 | 44 | ||
44 | #include <asm/page.h> | 45 | #include <asm/page.h> |
45 | #include <asm/pgtable.h> | 46 | #include <asm/pgtable.h> |
diff --git a/drivers/scsi/libfc/fc_disc.c b/drivers/scsi/libfc/fc_disc.c index 9b0a5192a965..1087a7f18e84 100644 --- a/drivers/scsi/libfc/fc_disc.c +++ b/drivers/scsi/libfc/fc_disc.c | |||
@@ -33,6 +33,7 @@ | |||
33 | */ | 33 | */ |
34 | 34 | ||
35 | #include <linux/timer.h> | 35 | #include <linux/timer.h> |
36 | #include <linux/slab.h> | ||
36 | #include <linux/err.h> | 37 | #include <linux/err.h> |
37 | #include <asm/unaligned.h> | 38 | #include <asm/unaligned.h> |
38 | 39 | ||
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c index 7f4364770e4a..e5df0d4db67e 100644 --- a/drivers/scsi/libfc/fc_exch.c +++ b/drivers/scsi/libfc/fc_exch.c | |||
@@ -24,7 +24,7 @@ | |||
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include <linux/timer.h> | 26 | #include <linux/timer.h> |
27 | #include <linux/gfp.h> | 27 | #include <linux/slab.h> |
28 | #include <linux/err.h> | 28 | #include <linux/err.h> |
29 | 29 | ||
30 | #include <scsi/fc/fc_fc2.h> | 30 | #include <scsi/fc/fc_fc2.h> |
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c index 774e7ac837a5..17396c708b08 100644 --- a/drivers/scsi/libfc/fc_fcp.c +++ b/drivers/scsi/libfc/fc_fcp.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/scatterlist.h> | 27 | #include <linux/scatterlist.h> |
28 | #include <linux/err.h> | 28 | #include <linux/err.h> |
29 | #include <linux/crc32.h> | 29 | #include <linux/crc32.h> |
30 | #include <linux/slab.h> | ||
30 | 31 | ||
31 | #include <scsi/scsi_tcq.h> | 32 | #include <scsi/scsi_tcq.h> |
32 | #include <scsi/scsi.h> | 33 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/libfc/fc_frame.c b/drivers/scsi/libfc/fc_frame.c index 6da01c616964..981329a17c48 100644 --- a/drivers/scsi/libfc/fc_frame.c +++ b/drivers/scsi/libfc/fc_frame.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
25 | #include <linux/skbuff.h> | 25 | #include <linux/skbuff.h> |
26 | #include <linux/crc32.h> | 26 | #include <linux/crc32.h> |
27 | #include <linux/gfp.h> | ||
27 | 28 | ||
28 | #include <scsi/fc_frame.h> | 29 | #include <scsi/fc_frame.h> |
29 | 30 | ||
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c index 7ec8ce75007c..d126ecfff704 100644 --- a/drivers/scsi/libfc/fc_lport.c +++ b/drivers/scsi/libfc/fc_lport.c | |||
@@ -88,6 +88,7 @@ | |||
88 | */ | 88 | */ |
89 | 89 | ||
90 | #include <linux/timer.h> | 90 | #include <linux/timer.h> |
91 | #include <linux/slab.h> | ||
91 | #include <asm/unaligned.h> | 92 | #include <asm/unaligned.h> |
92 | 93 | ||
93 | #include <scsi/fc/fc_gs.h> | 94 | #include <scsi/fc/fc_gs.h> |
diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c index 97923bb07765..b37d0ff28b35 100644 --- a/drivers/scsi/libfc/fc_rport.c +++ b/drivers/scsi/libfc/fc_rport.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <linux/kernel.h> | 47 | #include <linux/kernel.h> |
48 | #include <linux/spinlock.h> | 48 | #include <linux/spinlock.h> |
49 | #include <linux/interrupt.h> | 49 | #include <linux/interrupt.h> |
50 | #include <linux/slab.h> | ||
50 | #include <linux/rcupdate.h> | 51 | #include <linux/rcupdate.h> |
51 | #include <linux/timer.h> | 52 | #include <linux/timer.h> |
52 | #include <linux/workqueue.h> | 53 | #include <linux/workqueue.h> |
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c index 685eaec53218..633e09036357 100644 --- a/drivers/scsi/libiscsi.c +++ b/drivers/scsi/libiscsi.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/kfifo.h> | 25 | #include <linux/kfifo.h> |
26 | #include <linux/delay.h> | 26 | #include <linux/delay.h> |
27 | #include <linux/log2.h> | 27 | #include <linux/log2.h> |
28 | #include <linux/slab.h> | ||
28 | #include <asm/unaligned.h> | 29 | #include <asm/unaligned.h> |
29 | #include <net/tcp.h> | 30 | #include <net/tcp.h> |
30 | #include <scsi/scsi_cmnd.h> | 31 | #include <scsi/scsi_cmnd.h> |
@@ -470,12 +471,12 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task) | |||
470 | 471 | ||
471 | WARN_ON(hdrlength >= 256); | 472 | WARN_ON(hdrlength >= 256); |
472 | hdr->hlength = hdrlength & 0xFF; | 473 | hdr->hlength = hdrlength & 0xFF; |
474 | hdr->cmdsn = task->cmdsn = cpu_to_be32(session->cmdsn); | ||
473 | 475 | ||
474 | if (session->tt->init_task && session->tt->init_task(task)) | 476 | if (session->tt->init_task && session->tt->init_task(task)) |
475 | return -EIO; | 477 | return -EIO; |
476 | 478 | ||
477 | task->state = ISCSI_TASK_RUNNING; | 479 | task->state = ISCSI_TASK_RUNNING; |
478 | hdr->cmdsn = task->cmdsn = cpu_to_be32(session->cmdsn); | ||
479 | session->cmdsn++; | 480 | session->cmdsn++; |
480 | 481 | ||
481 | conn->scsicmd_pdus_cnt++; | 482 | conn->scsicmd_pdus_cnt++; |
@@ -3087,14 +3088,15 @@ static void iscsi_start_session_recovery(struct iscsi_session *session, | |||
3087 | session->state = ISCSI_STATE_TERMINATE; | 3088 | session->state = ISCSI_STATE_TERMINATE; |
3088 | else if (conn->stop_stage != STOP_CONN_RECOVER) | 3089 | else if (conn->stop_stage != STOP_CONN_RECOVER) |
3089 | session->state = ISCSI_STATE_IN_RECOVERY; | 3090 | session->state = ISCSI_STATE_IN_RECOVERY; |
3091 | |||
3092 | old_stop_stage = conn->stop_stage; | ||
3093 | conn->stop_stage = flag; | ||
3090 | spin_unlock_bh(&session->lock); | 3094 | spin_unlock_bh(&session->lock); |
3091 | 3095 | ||
3092 | del_timer_sync(&conn->transport_timer); | 3096 | del_timer_sync(&conn->transport_timer); |
3093 | iscsi_suspend_tx(conn); | 3097 | iscsi_suspend_tx(conn); |
3094 | 3098 | ||
3095 | spin_lock_bh(&session->lock); | 3099 | spin_lock_bh(&session->lock); |
3096 | old_stop_stage = conn->stop_stage; | ||
3097 | conn->stop_stage = flag; | ||
3098 | conn->c_stage = ISCSI_CONN_STOPPED; | 3100 | conn->c_stage = ISCSI_CONN_STOPPED; |
3099 | spin_unlock_bh(&session->lock); | 3101 | spin_unlock_bh(&session->lock); |
3100 | 3102 | ||
diff --git a/drivers/scsi/libiscsi_tcp.c b/drivers/scsi/libiscsi_tcp.c index 4ad87fd74ddd..5c92620292fb 100644 --- a/drivers/scsi/libiscsi_tcp.c +++ b/drivers/scsi/libiscsi_tcp.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/types.h> | 29 | #include <linux/types.h> |
30 | #include <linux/list.h> | 30 | #include <linux/list.h> |
31 | #include <linux/inet.h> | 31 | #include <linux/inet.h> |
32 | #include <linux/slab.h> | ||
32 | #include <linux/file.h> | 33 | #include <linux/file.h> |
33 | #include <linux/blkdev.h> | 34 | #include <linux/blkdev.h> |
34 | #include <linux/crypto.h> | 35 | #include <linux/crypto.h> |
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index e15501170698..88f744672576 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c | |||
@@ -22,6 +22,7 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <linux/scatterlist.h> | 24 | #include <linux/scatterlist.h> |
25 | #include <linux/slab.h> | ||
25 | 26 | ||
26 | #include <scsi/sas_ata.h> | 27 | #include <scsi/sas_ata.h> |
27 | #include "sas_internal.h" | 28 | #include "sas_internal.h" |
@@ -394,11 +395,15 @@ int sas_ata_init_host_and_port(struct domain_device *found_dev, | |||
394 | void sas_ata_task_abort(struct sas_task *task) | 395 | void sas_ata_task_abort(struct sas_task *task) |
395 | { | 396 | { |
396 | struct ata_queued_cmd *qc = task->uldd_task; | 397 | struct ata_queued_cmd *qc = task->uldd_task; |
398 | struct request_queue *q = qc->scsicmd->device->request_queue; | ||
397 | struct completion *waiting; | 399 | struct completion *waiting; |
400 | unsigned long flags; | ||
398 | 401 | ||
399 | /* Bounce SCSI-initiated commands to the SCSI EH */ | 402 | /* Bounce SCSI-initiated commands to the SCSI EH */ |
400 | if (qc->scsicmd) { | 403 | if (qc->scsicmd) { |
404 | spin_lock_irqsave(q->queue_lock, flags); | ||
401 | blk_abort_request(qc->scsicmd->request); | 405 | blk_abort_request(qc->scsicmd->request); |
406 | spin_unlock_irqrestore(q->queue_lock, flags); | ||
402 | scsi_schedule_eh(qc->scsicmd->device->host); | 407 | scsi_schedule_eh(qc->scsicmd->device->host); |
403 | return; | 408 | return; |
404 | } | 409 | } |
diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c index facc5bfcf7db..f5831930df9b 100644 --- a/drivers/scsi/libsas/sas_discover.c +++ b/drivers/scsi/libsas/sas_discover.c | |||
@@ -23,6 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <linux/scatterlist.h> | 25 | #include <linux/scatterlist.h> |
26 | #include <linux/slab.h> | ||
26 | #include <scsi/scsi_host.h> | 27 | #include <scsi/scsi_host.h> |
27 | #include <scsi/scsi_eh.h> | 28 | #include <scsi/scsi_eh.h> |
28 | #include "sas_internal.h" | 29 | #include "sas_internal.h" |
diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c index 33cf988c8c8a..c65af02dcfe8 100644 --- a/drivers/scsi/libsas/sas_expander.c +++ b/drivers/scsi/libsas/sas_expander.c | |||
@@ -24,6 +24,7 @@ | |||
24 | 24 | ||
25 | #include <linux/scatterlist.h> | 25 | #include <linux/scatterlist.h> |
26 | #include <linux/blkdev.h> | 26 | #include <linux/blkdev.h> |
27 | #include <linux/slab.h> | ||
27 | 28 | ||
28 | #include "sas_internal.h" | 29 | #include "sas_internal.h" |
29 | 30 | ||
diff --git a/drivers/scsi/libsas/sas_host_smp.c b/drivers/scsi/libsas/sas_host_smp.c index 1bc3b7567994..04ad8dd1a74c 100644 --- a/drivers/scsi/libsas/sas_host_smp.c +++ b/drivers/scsi/libsas/sas_host_smp.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | #include <linux/scatterlist.h> | 11 | #include <linux/scatterlist.h> |
12 | #include <linux/blkdev.h> | 12 | #include <linux/blkdev.h> |
13 | #include <linux/slab.h> | ||
13 | 14 | ||
14 | #include "sas_internal.h" | 15 | #include "sas_internal.h" |
15 | 16 | ||
diff --git a/drivers/scsi/libsas/sas_init.c b/drivers/scsi/libsas/sas_init.c index 9cd5abe9e714..2dc55343f671 100644 --- a/drivers/scsi/libsas/sas_init.c +++ b/drivers/scsi/libsas/sas_init.c | |||
@@ -24,6 +24,7 @@ | |||
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
27 | #include <linux/slab.h> | ||
27 | #include <linux/init.h> | 28 | #include <linux/init.h> |
28 | #include <linux/device.h> | 29 | #include <linux/device.h> |
29 | #include <linux/spinlock.h> | 30 | #include <linux/spinlock.h> |
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c index 14b13196b22d..822835055cef 100644 --- a/drivers/scsi/libsas/sas_scsi_host.c +++ b/drivers/scsi/libsas/sas_scsi_host.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <linux/err.h> | 44 | #include <linux/err.h> |
45 | #include <linux/blkdev.h> | 45 | #include <linux/blkdev.h> |
46 | #include <linux/freezer.h> | 46 | #include <linux/freezer.h> |
47 | #include <linux/gfp.h> | ||
47 | #include <linux/scatterlist.h> | 48 | #include <linux/scatterlist.h> |
48 | #include <linux/libata.h> | 49 | #include <linux/libata.h> |
49 | 50 | ||
@@ -1029,6 +1030,8 @@ int __sas_task_abort(struct sas_task *task) | |||
1029 | void sas_task_abort(struct sas_task *task) | 1030 | void sas_task_abort(struct sas_task *task) |
1030 | { | 1031 | { |
1031 | struct scsi_cmnd *sc = task->uldd_task; | 1032 | struct scsi_cmnd *sc = task->uldd_task; |
1033 | struct request_queue *q = sc->device->request_queue; | ||
1034 | unsigned long flags; | ||
1032 | 1035 | ||
1033 | /* Escape for libsas internal commands */ | 1036 | /* Escape for libsas internal commands */ |
1034 | if (!sc) { | 1037 | if (!sc) { |
@@ -1043,7 +1046,9 @@ void sas_task_abort(struct sas_task *task) | |||
1043 | return; | 1046 | return; |
1044 | } | 1047 | } |
1045 | 1048 | ||
1049 | spin_lock_irqsave(q->queue_lock, flags); | ||
1046 | blk_abort_request(sc->request); | 1050 | blk_abort_request(sc->request); |
1051 | spin_unlock_irqrestore(q->queue_lock, flags); | ||
1047 | scsi_schedule_eh(sc->device->host); | 1052 | scsi_schedule_eh(sc->device->host); |
1048 | } | 1053 | } |
1049 | 1054 | ||
diff --git a/drivers/scsi/libsrp.c b/drivers/scsi/libsrp.c index 22775165bf6a..ff6a28ce9b69 100644 --- a/drivers/scsi/libsrp.c +++ b/drivers/scsi/libsrp.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * 02110-1301 USA | 19 | * 02110-1301 USA |
20 | */ | 20 | */ |
21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
22 | #include <linux/slab.h> | ||
22 | #include <linux/kfifo.h> | 23 | #include <linux/kfifo.h> |
23 | #include <linux/scatterlist.h> | 24 | #include <linux/scatterlist.h> |
24 | #include <linux/dma-mapping.h> | 25 | #include <linux/dma-mapping.h> |
diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c index 64cd17eedb64..1849e33e68f9 100644 --- a/drivers/scsi/lpfc/lpfc_attr.c +++ b/drivers/scsi/lpfc/lpfc_attr.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/pci.h> | 24 | #include <linux/pci.h> |
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/aer.h> | 26 | #include <linux/aer.h> |
27 | #include <linux/gfp.h> | ||
27 | 28 | ||
28 | #include <scsi/scsi.h> | 29 | #include <scsi/scsi.h> |
29 | #include <scsi/scsi_device.h> | 30 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c index 692c29f6048e..d62b3e467926 100644 --- a/drivers/scsi/lpfc/lpfc_bsg.c +++ b/drivers/scsi/lpfc/lpfc_bsg.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
22 | #include <linux/mempool.h> | 22 | #include <linux/mempool.h> |
23 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
24 | #include <linux/slab.h> | ||
24 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
25 | 26 | ||
26 | #include <scsi/scsi.h> | 27 | #include <scsi/scsi.h> |
@@ -432,7 +433,7 @@ lpfc_bsg_rport_els_cmp(struct lpfc_hba *phba, | |||
432 | dd_data = cmdiocbq->context1; | 433 | dd_data = cmdiocbq->context1; |
433 | /* normal completion and timeout crossed paths, already done */ | 434 | /* normal completion and timeout crossed paths, already done */ |
434 | if (!dd_data) { | 435 | if (!dd_data) { |
435 | spin_unlock_irqrestore(&phba->hbalock, flags); | 436 | spin_unlock_irqrestore(&phba->ct_ev_lock, flags); |
436 | return; | 437 | return; |
437 | } | 438 | } |
438 | 439 | ||
@@ -1195,7 +1196,7 @@ lpfc_issue_ct_rsp_cmp(struct lpfc_hba *phba, | |||
1195 | dd_data = cmdiocbq->context1; | 1196 | dd_data = cmdiocbq->context1; |
1196 | /* normal completion and timeout crossed paths, already done */ | 1197 | /* normal completion and timeout crossed paths, already done */ |
1197 | if (!dd_data) { | 1198 | if (!dd_data) { |
1198 | spin_unlock_irqrestore(&phba->hbalock, flags); | 1199 | spin_unlock_irqrestore(&phba->ct_ev_lock, flags); |
1199 | return; | 1200 | return; |
1200 | } | 1201 | } |
1201 | 1202 | ||
diff --git a/drivers/scsi/lpfc/lpfc_ct.c b/drivers/scsi/lpfc/lpfc_ct.c index c7e921973f66..463b74902ac4 100644 --- a/drivers/scsi/lpfc/lpfc_ct.c +++ b/drivers/scsi/lpfc/lpfc_ct.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/blkdev.h> | 25 | #include <linux/blkdev.h> |
26 | #include <linux/pci.h> | 26 | #include <linux/pci.h> |
27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
28 | #include <linux/slab.h> | ||
28 | #include <linux/utsname.h> | 29 | #include <linux/utsname.h> |
29 | 30 | ||
30 | #include <scsi/scsi.h> | 31 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c index 391584183d81..a80d938fafc9 100644 --- a/drivers/scsi/lpfc/lpfc_debugfs.c +++ b/drivers/scsi/lpfc/lpfc_debugfs.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/idr.h> | 24 | #include <linux/idr.h> |
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/kthread.h> | 26 | #include <linux/kthread.h> |
27 | #include <linux/slab.h> | ||
27 | #include <linux/pci.h> | 28 | #include <linux/pci.h> |
28 | #include <linux/spinlock.h> | 29 | #include <linux/spinlock.h> |
29 | #include <linux/ctype.h> | 30 | #include <linux/ctype.h> |
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index ee980bd66869..5fbdb22c1899 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -21,6 +21,7 @@ | |||
21 | /* See Fibre Channel protocol T11 FC-LS for details */ | 21 | /* See Fibre Channel protocol T11 FC-LS for details */ |
22 | #include <linux/blkdev.h> | 22 | #include <linux/blkdev.h> |
23 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
24 | #include <linux/slab.h> | ||
24 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
25 | 26 | ||
26 | #include <scsi/scsi.h> | 27 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index c555e3b7f202..e1466eec56b7 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c | |||
@@ -20,6 +20,7 @@ | |||
20 | *******************************************************************/ | 20 | *******************************************************************/ |
21 | 21 | ||
22 | #include <linux/blkdev.h> | 22 | #include <linux/blkdev.h> |
23 | #include <linux/slab.h> | ||
23 | #include <linux/pci.h> | 24 | #include <linux/pci.h> |
24 | #include <linux/kthread.h> | 25 | #include <linux/kthread.h> |
25 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index ea44239eeb33..774663e8e1fe 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/spinlock.h> | 29 | #include <linux/spinlock.h> |
30 | #include <linux/ctype.h> | 30 | #include <linux/ctype.h> |
31 | #include <linux/aer.h> | 31 | #include <linux/aer.h> |
32 | #include <linux/slab.h> | ||
32 | 33 | ||
33 | #include <scsi/scsi.h> | 34 | #include <scsi/scsi.h> |
34 | #include <scsi/scsi_device.h> | 35 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/lpfc/lpfc_mbox.c b/drivers/scsi/lpfc/lpfc_mbox.c index 1e61ae3bc4eb..72e6adb0643e 100644 --- a/drivers/scsi/lpfc/lpfc_mbox.c +++ b/drivers/scsi/lpfc/lpfc_mbox.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <linux/blkdev.h> | 22 | #include <linux/blkdev.h> |
23 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
24 | #include <linux/slab.h> | ||
24 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
25 | 26 | ||
26 | #include <scsi/scsi_device.h> | 27 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/lpfc/lpfc_mem.c b/drivers/scsi/lpfc/lpfc_mem.c index a1b6db6016da..8f879e477e9d 100644 --- a/drivers/scsi/lpfc/lpfc_mem.c +++ b/drivers/scsi/lpfc/lpfc_mem.c | |||
@@ -20,6 +20,7 @@ | |||
20 | *******************************************************************/ | 20 | *******************************************************************/ |
21 | 21 | ||
22 | #include <linux/mempool.h> | 22 | #include <linux/mempool.h> |
23 | #include <linux/slab.h> | ||
23 | #include <linux/pci.h> | 24 | #include <linux/pci.h> |
24 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
25 | 26 | ||
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c index d20ae6b3b3cf..e331204a4d56 100644 --- a/drivers/scsi/lpfc/lpfc_nportdisc.c +++ b/drivers/scsi/lpfc/lpfc_nportdisc.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <linux/blkdev.h> | 22 | #include <linux/blkdev.h> |
23 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
24 | #include <linux/slab.h> | ||
24 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
25 | 26 | ||
26 | #include <scsi/scsi.h> | 27 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index b16bb2c9978b..dccdb822328c 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * included with this package. * | 19 | * included with this package. * |
20 | *******************************************************************/ | 20 | *******************************************************************/ |
21 | #include <linux/pci.h> | 21 | #include <linux/pci.h> |
22 | #include <linux/slab.h> | ||
22 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
23 | #include <linux/delay.h> | 24 | #include <linux/delay.h> |
24 | #include <asm/unaligned.h> | 25 | #include <asm/unaligned.h> |
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index fe6660ca6452..049fb9a17b3f 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
26 | #include <linux/slab.h> | ||
26 | 27 | ||
27 | #include <scsi/scsi.h> | 28 | #include <scsi/scsi.h> |
28 | #include <scsi/scsi_cmnd.h> | 29 | #include <scsi/scsi_cmnd.h> |
diff --git a/drivers/scsi/lpfc/lpfc_vport.c b/drivers/scsi/lpfc/lpfc_vport.c index 869f76cbc58a..ffd575c379f3 100644 --- a/drivers/scsi/lpfc/lpfc_vport.c +++ b/drivers/scsi/lpfc/lpfc_vport.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
27 | #include <linux/kthread.h> | 27 | #include <linux/kthread.h> |
28 | #include <linux/pci.h> | 28 | #include <linux/pci.h> |
29 | #include <linux/slab.h> | ||
29 | #include <linux/spinlock.h> | 30 | #include <linux/spinlock.h> |
30 | 31 | ||
31 | #include <scsi/scsi.h> | 32 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/mac_esp.c b/drivers/scsi/mac_esp.c index 4a90eaf7cb63..3893337e3dd3 100644 --- a/drivers/scsi/mac_esp.c +++ b/drivers/scsi/mac_esp.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | #include <linux/nubus.h> | 21 | #include <linux/nubus.h> |
22 | #include <linux/slab.h> | ||
22 | 23 | ||
23 | #include <asm/irq.h> | 24 | #include <asm/irq.h> |
24 | #include <asm/dma.h> | 25 | #include <asm/dma.h> |
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index 49eb0612d5af..4bf7edca9e69 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <linux/init.h> | 47 | #include <linux/init.h> |
48 | #include <linux/dma-mapping.h> | 48 | #include <linux/dma-mapping.h> |
49 | #include <linux/smp_lock.h> | 49 | #include <linux/smp_lock.h> |
50 | #include <linux/slab.h> | ||
50 | #include <scsi/scsicam.h> | 51 | #include <scsi/scsicam.h> |
51 | 52 | ||
52 | #include "scsi.h" | 53 | #include "scsi.h" |
diff --git a/drivers/scsi/megaraid/megaraid_mbox.c b/drivers/scsi/megaraid/megaraid_mbox.c index 7f977967b884..a7810a106b37 100644 --- a/drivers/scsi/megaraid/megaraid_mbox.c +++ b/drivers/scsi/megaraid/megaraid_mbox.c | |||
@@ -70,6 +70,7 @@ | |||
70 | * For history of changes, see Documentation/ChangeLog.megaraid | 70 | * For history of changes, see Documentation/ChangeLog.megaraid |
71 | */ | 71 | */ |
72 | 72 | ||
73 | #include <linux/slab.h> | ||
73 | #include "megaraid_mbox.h" | 74 | #include "megaraid_mbox.h" |
74 | 75 | ||
75 | static int megaraid_init(void); | 76 | static int megaraid_init(void); |
diff --git a/drivers/scsi/megaraid/megaraid_mm.c b/drivers/scsi/megaraid/megaraid_mm.c index f680561d2c6f..36e0b7d05c1d 100644 --- a/drivers/scsi/megaraid/megaraid_mm.c +++ b/drivers/scsi/megaraid/megaraid_mm.c | |||
@@ -15,6 +15,7 @@ | |||
15 | * Common management module | 15 | * Common management module |
16 | */ | 16 | */ |
17 | #include <linux/sched.h> | 17 | #include <linux/sched.h> |
18 | #include <linux/slab.h> | ||
18 | #include <linux/smp_lock.h> | 19 | #include <linux/smp_lock.h> |
19 | #include "megaraid_mm.h" | 20 | #include "megaraid_mm.h" |
20 | 21 | ||
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c index 409648f5845f..99e4478c3f3e 100644 --- a/drivers/scsi/megaraid/megaraid_sas.c +++ b/drivers/scsi/megaraid/megaraid_sas.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/delay.h> | 35 | #include <linux/delay.h> |
36 | #include <linux/smp_lock.h> | 36 | #include <linux/smp_lock.h> |
37 | #include <linux/uio.h> | 37 | #include <linux/uio.h> |
38 | #include <linux/slab.h> | ||
38 | #include <asm/uaccess.h> | 39 | #include <asm/uaccess.h> |
39 | #include <linux/fs.h> | 40 | #include <linux/fs.h> |
40 | #include <linux/compat.h> | 41 | #include <linux/compat.h> |
diff --git a/drivers/scsi/mesh.c b/drivers/scsi/mesh.c index 11aa917629ac..a1c97e88068a 100644 --- a/drivers/scsi/mesh.c +++ b/drivers/scsi/mesh.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
24 | #include <linux/types.h> | 24 | #include <linux/types.h> |
25 | #include <linux/string.h> | 25 | #include <linux/string.h> |
26 | #include <linux/slab.h> | ||
27 | #include <linux/blkdev.h> | 26 | #include <linux/blkdev.h> |
28 | #include <linux/proc_fs.h> | 27 | #include <linux/proc_fs.h> |
29 | #include <linux/stat.h> | 28 | #include <linux/stat.h> |
diff --git a/drivers/scsi/mpt2sas/mpt2sas_config.c b/drivers/scsi/mpt2sas/mpt2sas_config.c index 411c27d7f787..cf44b355bc97 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_config.c +++ b/drivers/scsi/mpt2sas/mpt2sas_config.c | |||
@@ -51,6 +51,7 @@ | |||
51 | #include <linux/workqueue.h> | 51 | #include <linux/workqueue.h> |
52 | #include <linux/delay.h> | 52 | #include <linux/delay.h> |
53 | #include <linux/pci.h> | 53 | #include <linux/pci.h> |
54 | #include <linux/slab.h> | ||
54 | 55 | ||
55 | #include "mpt2sas_base.h" | 56 | #include "mpt2sas_base.h" |
56 | 57 | ||
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c index c7ec3f174782..be171ed682e0 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c +++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c | |||
@@ -53,6 +53,7 @@ | |||
53 | #include <linux/pci.h> | 53 | #include <linux/pci.h> |
54 | #include <linux/interrupt.h> | 54 | #include <linux/interrupt.h> |
55 | #include <linux/raid_class.h> | 55 | #include <linux/raid_class.h> |
56 | #include <linux/slab.h> | ||
56 | 57 | ||
57 | #include "mpt2sas_base.h" | 58 | #include "mpt2sas_base.h" |
58 | 59 | ||
diff --git a/drivers/scsi/mpt2sas/mpt2sas_transport.c b/drivers/scsi/mpt2sas/mpt2sas_transport.c index 789f9ee7f001..bd7ca2b49f81 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_transport.c +++ b/drivers/scsi/mpt2sas/mpt2sas_transport.c | |||
@@ -49,6 +49,7 @@ | |||
49 | #include <linux/workqueue.h> | 49 | #include <linux/workqueue.h> |
50 | #include <linux/delay.h> | 50 | #include <linux/delay.h> |
51 | #include <linux/pci.h> | 51 | #include <linux/pci.h> |
52 | #include <linux/slab.h> | ||
52 | 53 | ||
53 | #include <scsi/scsi.h> | 54 | #include <scsi/scsi.h> |
54 | #include <scsi/scsi_cmnd.h> | 55 | #include <scsi/scsi_cmnd.h> |
diff --git a/drivers/scsi/mvme16x_scsi.c b/drivers/scsi/mvme16x_scsi.c index b5fbfd6ce870..39f554f5f261 100644 --- a/drivers/scsi/mvme16x_scsi.c +++ b/drivers/scsi/mvme16x_scsi.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/slab.h> | ||
15 | #include <asm/mvme16xhw.h> | 16 | #include <asm/mvme16xhw.h> |
16 | #include <scsi/scsi_host.h> | 17 | #include <scsi/scsi_host.h> |
17 | #include <scsi/scsi_device.h> | 18 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/mvsas/mv_sas.h b/drivers/scsi/mvsas/mv_sas.h index aa2270af1bac..885858bcc403 100644 --- a/drivers/scsi/mvsas/mv_sas.h +++ b/drivers/scsi/mvsas/mv_sas.h | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/platform_device.h> | 36 | #include <linux/platform_device.h> |
37 | #include <linux/interrupt.h> | 37 | #include <linux/interrupt.h> |
38 | #include <linux/irq.h> | 38 | #include <linux/irq.h> |
39 | #include <linux/slab.h> | ||
39 | #include <linux/vmalloc.h> | 40 | #include <linux/vmalloc.h> |
40 | #include <scsi/libsas.h> | 41 | #include <scsi/libsas.h> |
41 | #include <scsi/scsi_tcq.h> | 42 | #include <scsi/scsi_tcq.h> |
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c index a2d569828308..d013a2aa2fd5 100644 --- a/drivers/scsi/ncr53c8xx.c +++ b/drivers/scsi/ncr53c8xx.c | |||
@@ -98,6 +98,7 @@ | |||
98 | #include <linux/delay.h> | 98 | #include <linux/delay.h> |
99 | #include <linux/dma-mapping.h> | 99 | #include <linux/dma-mapping.h> |
100 | #include <linux/errno.h> | 100 | #include <linux/errno.h> |
101 | #include <linux/gfp.h> | ||
101 | #include <linux/init.h> | 102 | #include <linux/init.h> |
102 | #include <linux/interrupt.h> | 103 | #include <linux/interrupt.h> |
103 | #include <linux/ioport.h> | 104 | #include <linux/ioport.h> |
diff --git a/drivers/scsi/nsp32.c b/drivers/scsi/nsp32.c index 2c98a6ee973b..4c1e54545200 100644 --- a/drivers/scsi/nsp32.c +++ b/drivers/scsi/nsp32.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
27 | #include <linux/init.h> | 27 | #include <linux/init.h> |
28 | #include <linux/kernel.h> | 28 | #include <linux/kernel.h> |
29 | #include <linux/slab.h> | ||
30 | #include <linux/string.h> | 29 | #include <linux/string.h> |
31 | #include <linux/timer.h> | 30 | #include <linux/timer.h> |
32 | #include <linux/ioport.h> | 31 | #include <linux/ioport.h> |
diff --git a/drivers/scsi/osd/osd_initiator.c b/drivers/scsi/osd/osd_initiator.c index 60de85091502..ee4b6914667f 100644 --- a/drivers/scsi/osd/osd_initiator.c +++ b/drivers/scsi/osd/osd_initiator.c | |||
@@ -39,6 +39,8 @@ | |||
39 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 39 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
40 | */ | 40 | */ |
41 | 41 | ||
42 | #include <linux/slab.h> | ||
43 | |||
42 | #include <scsi/osd_initiator.h> | 44 | #include <scsi/osd_initiator.h> |
43 | #include <scsi/osd_sec.h> | 45 | #include <scsi/osd_sec.h> |
44 | #include <scsi/osd_attributes.h> | 46 | #include <scsi/osd_attributes.h> |
diff --git a/drivers/scsi/osd/osd_uld.c b/drivers/scsi/osd/osd_uld.c index 0a90702b3d71..ffdd9fdb9995 100644 --- a/drivers/scsi/osd/osd_uld.c +++ b/drivers/scsi/osd/osd_uld.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <linux/idr.h> | 50 | #include <linux/idr.h> |
51 | #include <linux/major.h> | 51 | #include <linux/major.h> |
52 | #include <linux/file.h> | 52 | #include <linux/file.h> |
53 | #include <linux/slab.h> | ||
53 | 54 | ||
54 | #include <scsi/scsi.h> | 55 | #include <scsi/scsi.h> |
55 | #include <scsi/scsi_driver.h> | 56 | #include <scsi/scsi_driver.h> |
diff --git a/drivers/scsi/osst.c b/drivers/scsi/osst.c index acb835837eec..b219118f8bd6 100644 --- a/drivers/scsi/osst.c +++ b/drivers/scsi/osst.c | |||
@@ -38,6 +38,7 @@ static const char * osst_version = "0.99.4"; | |||
38 | #include <linux/sched.h> | 38 | #include <linux/sched.h> |
39 | #include <linux/proc_fs.h> | 39 | #include <linux/proc_fs.h> |
40 | #include <linux/mm.h> | 40 | #include <linux/mm.h> |
41 | #include <linux/slab.h> | ||
41 | #include <linux/init.h> | 42 | #include <linux/init.h> |
42 | #include <linux/string.h> | 43 | #include <linux/string.h> |
43 | #include <linux/errno.h> | 44 | #include <linux/errno.h> |
diff --git a/drivers/scsi/pm8001/pm8001_ctl.c b/drivers/scsi/pm8001/pm8001_ctl.c index 14b13acae6dd..45bc197bc22f 100644 --- a/drivers/scsi/pm8001/pm8001_ctl.c +++ b/drivers/scsi/pm8001/pm8001_ctl.c | |||
@@ -38,6 +38,7 @@ | |||
38 | * | 38 | * |
39 | */ | 39 | */ |
40 | #include <linux/firmware.h> | 40 | #include <linux/firmware.h> |
41 | #include <linux/slab.h> | ||
41 | #include "pm8001_sas.h" | 42 | #include "pm8001_sas.h" |
42 | #include "pm8001_ctl.h" | 43 | #include "pm8001_ctl.h" |
43 | 44 | ||
diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c index 7985ae45d688..909c00ec044f 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.c +++ b/drivers/scsi/pm8001/pm8001_hwi.c | |||
@@ -37,6 +37,7 @@ | |||
37 | * POSSIBILITY OF SUCH DAMAGES. | 37 | * POSSIBILITY OF SUCH DAMAGES. |
38 | * | 38 | * |
39 | */ | 39 | */ |
40 | #include <linux/slab.h> | ||
40 | #include "pm8001_sas.h" | 41 | #include "pm8001_sas.h" |
41 | #include "pm8001_hwi.h" | 42 | #include "pm8001_hwi.h" |
42 | #include "pm8001_chips.h" | 43 | #include "pm8001_chips.h" |
diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c index f80c1da8f6ca..f8c86b28f03f 100644 --- a/drivers/scsi/pm8001/pm8001_init.c +++ b/drivers/scsi/pm8001/pm8001_init.c | |||
@@ -38,6 +38,7 @@ | |||
38 | * | 38 | * |
39 | */ | 39 | */ |
40 | 40 | ||
41 | #include <linux/slab.h> | ||
41 | #include "pm8001_sas.h" | 42 | #include "pm8001_sas.h" |
42 | #include "pm8001_chips.h" | 43 | #include "pm8001_chips.h" |
43 | 44 | ||
diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c index 3b2c98fba834..bff4f5139b9c 100644 --- a/drivers/scsi/pm8001/pm8001_sas.c +++ b/drivers/scsi/pm8001/pm8001_sas.c | |||
@@ -38,6 +38,7 @@ | |||
38 | * | 38 | * |
39 | */ | 39 | */ |
40 | 40 | ||
41 | #include <linux/slab.h> | ||
41 | #include "pm8001_sas.h" | 42 | #include "pm8001_sas.h" |
42 | 43 | ||
43 | /** | 44 | /** |
diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c index 9b1c1433c26b..53aefffbaead 100644 --- a/drivers/scsi/pmcraid.c +++ b/drivers/scsi/pmcraid.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <linux/hdreg.h> | 41 | #include <linux/hdreg.h> |
42 | #include <linux/version.h> | 42 | #include <linux/version.h> |
43 | #include <linux/io.h> | 43 | #include <linux/io.h> |
44 | #include <linux/slab.h> | ||
44 | #include <asm/irq.h> | 45 | #include <asm/irq.h> |
45 | #include <asm/processor.h> | 46 | #include <asm/processor.h> |
46 | #include <linux/libata.h> | 47 | #include <linux/libata.h> |
diff --git a/drivers/scsi/ppa.c b/drivers/scsi/ppa.c index 8aa0bd987e29..7bc2d796e403 100644 --- a/drivers/scsi/ppa.c +++ b/drivers/scsi/ppa.c | |||
@@ -10,6 +10,7 @@ | |||
10 | 10 | ||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/slab.h> | ||
13 | #include <linux/module.h> | 14 | #include <linux/module.h> |
14 | #include <linux/blkdev.h> | 15 | #include <linux/blkdev.h> |
15 | #include <linux/parport.h> | 16 | #include <linux/parport.h> |
diff --git a/drivers/scsi/ps3rom.c b/drivers/scsi/ps3rom.c index db90caf43f42..92ffbb510498 100644 --- a/drivers/scsi/ps3rom.c +++ b/drivers/scsi/ps3rom.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include <linux/cdrom.h> | 21 | #include <linux/cdrom.h> |
22 | #include <linux/highmem.h> | 22 | #include <linux/highmem.h> |
23 | #include <linux/slab.h> | ||
23 | 24 | ||
24 | #include <scsi/scsi.h> | 25 | #include <scsi/scsi.h> |
25 | #include <scsi/scsi_cmnd.h> | 26 | #include <scsi/scsi_cmnd.h> |
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c index 49ac4148493b..b8166ecfd0e3 100644 --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c | |||
@@ -17,9 +17,11 @@ | |||
17 | * General Public License for more details. | 17 | * General Public License for more details. |
18 | * | 18 | * |
19 | ******************************************************************************/ | 19 | ******************************************************************************/ |
20 | #define QLA1280_VERSION "3.27" | 20 | #define QLA1280_VERSION "3.27.1" |
21 | /***************************************************************************** | 21 | /***************************************************************************** |
22 | Revision History: | 22 | Revision History: |
23 | Rev 3.27.1, February 8, 2010, Michael Reed | ||
24 | - Retain firmware image for error recovery. | ||
23 | Rev 3.27, February 10, 2009, Michael Reed | 25 | Rev 3.27, February 10, 2009, Michael Reed |
24 | - General code cleanup. | 26 | - General code cleanup. |
25 | - Improve error recovery. | 27 | - Improve error recovery. |
@@ -346,7 +348,6 @@ | |||
346 | #include <linux/pci.h> | 348 | #include <linux/pci.h> |
347 | #include <linux/proc_fs.h> | 349 | #include <linux/proc_fs.h> |
348 | #include <linux/stat.h> | 350 | #include <linux/stat.h> |
349 | #include <linux/slab.h> | ||
350 | #include <linux/pci_ids.h> | 351 | #include <linux/pci_ids.h> |
351 | #include <linux/interrupt.h> | 352 | #include <linux/interrupt.h> |
352 | #include <linux/init.h> | 353 | #include <linux/init.h> |
@@ -538,9 +539,9 @@ __setup("qla1280=", qla1280_setup); | |||
538 | /*****************************************/ | 539 | /*****************************************/ |
539 | 540 | ||
540 | struct qla_boards { | 541 | struct qla_boards { |
541 | unsigned char name[9]; /* Board ID String */ | 542 | char *name; /* Board ID String */ |
542 | int numPorts; /* Number of SCSI ports */ | 543 | int numPorts; /* Number of SCSI ports */ |
543 | char *fwname; /* firmware name */ | 544 | int fw_index; /* index into qla1280_fw_tbl for firmware */ |
544 | }; | 545 | }; |
545 | 546 | ||
546 | /* NOTE: the last argument in each entry is used to index ql1280_board_tbl */ | 547 | /* NOTE: the last argument in each entry is used to index ql1280_board_tbl */ |
@@ -561,15 +562,30 @@ static struct pci_device_id qla1280_pci_tbl[] = { | |||
561 | }; | 562 | }; |
562 | MODULE_DEVICE_TABLE(pci, qla1280_pci_tbl); | 563 | MODULE_DEVICE_TABLE(pci, qla1280_pci_tbl); |
563 | 564 | ||
565 | DEFINE_MUTEX(qla1280_firmware_mutex); | ||
566 | |||
567 | struct qla_fw { | ||
568 | char *fwname; | ||
569 | const struct firmware *fw; | ||
570 | }; | ||
571 | |||
572 | #define QL_NUM_FW_IMAGES 3 | ||
573 | |||
574 | struct qla_fw qla1280_fw_tbl[QL_NUM_FW_IMAGES] = { | ||
575 | {"qlogic/1040.bin", NULL}, /* image 0 */ | ||
576 | {"qlogic/1280.bin", NULL}, /* image 1 */ | ||
577 | {"qlogic/12160.bin", NULL}, /* image 2 */ | ||
578 | }; | ||
579 | |||
580 | /* NOTE: Order of boards in this table must match order in qla1280_pci_tbl */ | ||
564 | static struct qla_boards ql1280_board_tbl[] = { | 581 | static struct qla_boards ql1280_board_tbl[] = { |
565 | /* Name , Number of ports, FW details */ | 582 | {.name = "QLA12160", .numPorts = 2, .fw_index = 2}, |
566 | {"QLA12160", 2, "qlogic/12160.bin"}, | 583 | {.name = "QLA1040" , .numPorts = 1, .fw_index = 0}, |
567 | {"QLA1040", 1, "qlogic/1040.bin"}, | 584 | {.name = "QLA1080" , .numPorts = 1, .fw_index = 1}, |
568 | {"QLA1080", 1, "qlogic/1280.bin"}, | 585 | {.name = "QLA1240" , .numPorts = 2, .fw_index = 1}, |
569 | {"QLA1240", 2, "qlogic/1280.bin"}, | 586 | {.name = "QLA1280" , .numPorts = 2, .fw_index = 1}, |
570 | {"QLA1280", 2, "qlogic/1280.bin"}, | 587 | {.name = "QLA10160", .numPorts = 1, .fw_index = 2}, |
571 | {"QLA10160", 1, "qlogic/12160.bin"}, | 588 | {.name = " ", .numPorts = 0, .fw_index = -1}, |
572 | {" ", 0, " "}, | ||
573 | }; | 589 | }; |
574 | 590 | ||
575 | static int qla1280_verbose = 1; | 591 | static int qla1280_verbose = 1; |
@@ -1512,6 +1528,63 @@ qla1280_initialize_adapter(struct scsi_qla_host *ha) | |||
1512 | } | 1528 | } |
1513 | 1529 | ||
1514 | /* | 1530 | /* |
1531 | * qla1280_request_firmware | ||
1532 | * Acquire firmware for chip. Retain in memory | ||
1533 | * for error recovery. | ||
1534 | * | ||
1535 | * Input: | ||
1536 | * ha = adapter block pointer. | ||
1537 | * | ||
1538 | * Returns: | ||
1539 | * Pointer to firmware image or an error code | ||
1540 | * cast to pointer via ERR_PTR(). | ||
1541 | */ | ||
1542 | static const struct firmware * | ||
1543 | qla1280_request_firmware(struct scsi_qla_host *ha) | ||
1544 | { | ||
1545 | const struct firmware *fw; | ||
1546 | int err; | ||
1547 | int index; | ||
1548 | char *fwname; | ||
1549 | |||
1550 | spin_unlock_irq(ha->host->host_lock); | ||
1551 | mutex_lock(&qla1280_firmware_mutex); | ||
1552 | |||
1553 | index = ql1280_board_tbl[ha->devnum].fw_index; | ||
1554 | fw = qla1280_fw_tbl[index].fw; | ||
1555 | if (fw) | ||
1556 | goto out; | ||
1557 | |||
1558 | fwname = qla1280_fw_tbl[index].fwname; | ||
1559 | err = request_firmware(&fw, fwname, &ha->pdev->dev); | ||
1560 | |||
1561 | if (err) { | ||
1562 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | ||
1563 | fwname, err); | ||
1564 | fw = ERR_PTR(err); | ||
1565 | goto unlock; | ||
1566 | } | ||
1567 | if ((fw->size % 2) || (fw->size < 6)) { | ||
1568 | printk(KERN_ERR "Invalid firmware length %zu in image \"%s\"\n", | ||
1569 | fw->size, fwname); | ||
1570 | release_firmware(fw); | ||
1571 | fw = ERR_PTR(-EINVAL); | ||
1572 | goto unlock; | ||
1573 | } | ||
1574 | |||
1575 | qla1280_fw_tbl[index].fw = fw; | ||
1576 | |||
1577 | out: | ||
1578 | ha->fwver1 = fw->data[0]; | ||
1579 | ha->fwver2 = fw->data[1]; | ||
1580 | ha->fwver3 = fw->data[2]; | ||
1581 | unlock: | ||
1582 | mutex_unlock(&qla1280_firmware_mutex); | ||
1583 | spin_lock_irq(ha->host->host_lock); | ||
1584 | return fw; | ||
1585 | } | ||
1586 | |||
1587 | /* | ||
1515 | * Chip diagnostics | 1588 | * Chip diagnostics |
1516 | * Test chip for proper operation. | 1589 | * Test chip for proper operation. |
1517 | * | 1590 | * |
@@ -1634,30 +1707,18 @@ qla1280_chip_diag(struct scsi_qla_host *ha) | |||
1634 | static int | 1707 | static int |
1635 | qla1280_load_firmware_pio(struct scsi_qla_host *ha) | 1708 | qla1280_load_firmware_pio(struct scsi_qla_host *ha) |
1636 | { | 1709 | { |
1710 | /* enter with host_lock acquired */ | ||
1711 | |||
1637 | const struct firmware *fw; | 1712 | const struct firmware *fw; |
1638 | const __le16 *fw_data; | 1713 | const __le16 *fw_data; |
1639 | uint16_t risc_address, risc_code_size; | 1714 | uint16_t risc_address, risc_code_size; |
1640 | uint16_t mb[MAILBOX_REGISTER_COUNT], i; | 1715 | uint16_t mb[MAILBOX_REGISTER_COUNT], i; |
1641 | int err; | 1716 | int err = 0; |
1717 | |||
1718 | fw = qla1280_request_firmware(ha); | ||
1719 | if (IS_ERR(fw)) | ||
1720 | return PTR_ERR(fw); | ||
1642 | 1721 | ||
1643 | spin_unlock_irq(ha->host->host_lock); | ||
1644 | err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname, | ||
1645 | &ha->pdev->dev); | ||
1646 | spin_lock_irq(ha->host->host_lock); | ||
1647 | if (err) { | ||
1648 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | ||
1649 | ql1280_board_tbl[ha->devnum].fwname, err); | ||
1650 | return err; | ||
1651 | } | ||
1652 | if ((fw->size % 2) || (fw->size < 6)) { | ||
1653 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", | ||
1654 | fw->size, ql1280_board_tbl[ha->devnum].fwname); | ||
1655 | err = -EINVAL; | ||
1656 | goto out; | ||
1657 | } | ||
1658 | ha->fwver1 = fw->data[0]; | ||
1659 | ha->fwver2 = fw->data[1]; | ||
1660 | ha->fwver3 = fw->data[2]; | ||
1661 | fw_data = (const __le16 *)&fw->data[0]; | 1722 | fw_data = (const __le16 *)&fw->data[0]; |
1662 | ha->fwstart = __le16_to_cpu(fw_data[2]); | 1723 | ha->fwstart = __le16_to_cpu(fw_data[2]); |
1663 | 1724 | ||
@@ -1675,11 +1736,10 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha) | |||
1675 | if (err) { | 1736 | if (err) { |
1676 | printk(KERN_ERR "scsi(%li): Failed to load firmware\n", | 1737 | printk(KERN_ERR "scsi(%li): Failed to load firmware\n", |
1677 | ha->host_no); | 1738 | ha->host_no); |
1678 | goto out; | 1739 | break; |
1679 | } | 1740 | } |
1680 | } | 1741 | } |
1681 | out: | 1742 | |
1682 | release_firmware(fw); | ||
1683 | return err; | 1743 | return err; |
1684 | } | 1744 | } |
1685 | 1745 | ||
@@ -1687,6 +1747,7 @@ out: | |||
1687 | static int | 1747 | static int |
1688 | qla1280_load_firmware_dma(struct scsi_qla_host *ha) | 1748 | qla1280_load_firmware_dma(struct scsi_qla_host *ha) |
1689 | { | 1749 | { |
1750 | /* enter with host_lock acquired */ | ||
1690 | const struct firmware *fw; | 1751 | const struct firmware *fw; |
1691 | const __le16 *fw_data; | 1752 | const __le16 *fw_data; |
1692 | uint16_t risc_address, risc_code_size; | 1753 | uint16_t risc_address, risc_code_size; |
@@ -1701,24 +1762,10 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha) | |||
1701 | return -ENOMEM; | 1762 | return -ENOMEM; |
1702 | #endif | 1763 | #endif |
1703 | 1764 | ||
1704 | spin_unlock_irq(ha->host->host_lock); | 1765 | fw = qla1280_request_firmware(ha); |
1705 | err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname, | 1766 | if (IS_ERR(fw)) |
1706 | &ha->pdev->dev); | 1767 | return PTR_ERR(fw); |
1707 | spin_lock_irq(ha->host->host_lock); | 1768 | |
1708 | if (err) { | ||
1709 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | ||
1710 | ql1280_board_tbl[ha->devnum].fwname, err); | ||
1711 | return err; | ||
1712 | } | ||
1713 | if ((fw->size % 2) || (fw->size < 6)) { | ||
1714 | printk(KERN_ERR "Bogus length %zu in image \"%s\"\n", | ||
1715 | fw->size, ql1280_board_tbl[ha->devnum].fwname); | ||
1716 | err = -EINVAL; | ||
1717 | goto out; | ||
1718 | } | ||
1719 | ha->fwver1 = fw->data[0]; | ||
1720 | ha->fwver2 = fw->data[1]; | ||
1721 | ha->fwver3 = fw->data[2]; | ||
1722 | fw_data = (const __le16 *)&fw->data[0]; | 1769 | fw_data = (const __le16 *)&fw->data[0]; |
1723 | ha->fwstart = __le16_to_cpu(fw_data[2]); | 1770 | ha->fwstart = __le16_to_cpu(fw_data[2]); |
1724 | 1771 | ||
@@ -1803,7 +1850,6 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha) | |||
1803 | #if DUMP_IT_BACK | 1850 | #if DUMP_IT_BACK |
1804 | pci_free_consistent(ha->pdev, 8000, tbuf, p_tbuf); | 1851 | pci_free_consistent(ha->pdev, 8000, tbuf, p_tbuf); |
1805 | #endif | 1852 | #endif |
1806 | release_firmware(fw); | ||
1807 | return err; | 1853 | return err; |
1808 | } | 1854 | } |
1809 | 1855 | ||
@@ -1842,6 +1888,7 @@ qla1280_start_firmware(struct scsi_qla_host *ha) | |||
1842 | static int | 1888 | static int |
1843 | qla1280_load_firmware(struct scsi_qla_host *ha) | 1889 | qla1280_load_firmware(struct scsi_qla_host *ha) |
1844 | { | 1890 | { |
1891 | /* enter with host_lock taken */ | ||
1845 | int err; | 1892 | int err; |
1846 | 1893 | ||
1847 | err = qla1280_chip_diag(ha); | 1894 | err = qla1280_chip_diag(ha); |
@@ -4420,7 +4467,16 @@ qla1280_init(void) | |||
4420 | static void __exit | 4467 | static void __exit |
4421 | qla1280_exit(void) | 4468 | qla1280_exit(void) |
4422 | { | 4469 | { |
4470 | int i; | ||
4471 | |||
4423 | pci_unregister_driver(&qla1280_pci_driver); | 4472 | pci_unregister_driver(&qla1280_pci_driver); |
4473 | /* release any allocated firmware images */ | ||
4474 | for (i = 0; i < QL_NUM_FW_IMAGES; i++) { | ||
4475 | if (qla1280_fw_tbl[i].fw) { | ||
4476 | release_firmware(qla1280_fw_tbl[i].fw); | ||
4477 | qla1280_fw_tbl[i].fw = NULL; | ||
4478 | } | ||
4479 | } | ||
4424 | } | 4480 | } |
4425 | 4481 | ||
4426 | module_init(qla1280_init); | 4482 | module_init(qla1280_init); |
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index 90d1e062ec4f..1c7ef55966fb 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c | |||
@@ -8,6 +8,7 @@ | |||
8 | 8 | ||
9 | #include <linux/kthread.h> | 9 | #include <linux/kthread.h> |
10 | #include <linux/vmalloc.h> | 10 | #include <linux/vmalloc.h> |
11 | #include <linux/slab.h> | ||
11 | #include <linux/delay.h> | 12 | #include <linux/delay.h> |
12 | 13 | ||
13 | static int qla24xx_vport_disable(struct fc_vport *, bool); | 14 | static int qla24xx_vport_disable(struct fc_vport *, bool); |
@@ -1274,7 +1275,11 @@ qla2x00_fw_state_show(struct device *dev, struct device_attribute *attr, | |||
1274 | int rval = QLA_FUNCTION_FAILED; | 1275 | int rval = QLA_FUNCTION_FAILED; |
1275 | uint16_t state[5]; | 1276 | uint16_t state[5]; |
1276 | 1277 | ||
1277 | if (!vha->hw->flags.eeh_busy) | 1278 | if (test_bit(ABORT_ISP_ACTIVE, &vha->dpc_flags) || |
1279 | test_bit(ISP_ABORT_NEEDED, &vha->dpc_flags)) | ||
1280 | DEBUG2_3_11(printk("%s(%ld): isp reset in progress.\n", | ||
1281 | __func__, vha->host_no)); | ||
1282 | else if (!vha->hw->flags.eeh_busy) | ||
1278 | rval = qla2x00_get_firmware_state(vha, state); | 1283 | rval = qla2x00_get_firmware_state(vha, state); |
1279 | if (rval != QLA_SUCCESS) | 1284 | if (rval != QLA_SUCCESS) |
1280 | memset(state, -1, sizeof(state)); | 1285 | memset(state, -1, sizeof(state)); |
@@ -2388,6 +2393,7 @@ qla24xx_bsg_timeout(struct fc_bsg_job *bsg_job) | |||
2388 | return 0; | 2393 | return 0; |
2389 | 2394 | ||
2390 | done: | 2395 | done: |
2396 | spin_unlock_irqrestore(&ha->hardware_lock, flags); | ||
2391 | if (bsg_job->request->msgcode == FC_BSG_HST_CT) | 2397 | if (bsg_job->request->msgcode == FC_BSG_HST_CT) |
2392 | kfree(sp->fcport); | 2398 | kfree(sp->fcport); |
2393 | kfree(sp->ctx); | 2399 | kfree(sp->ctx); |
diff --git a/drivers/scsi/qla2xxx/qla_fw.h b/drivers/scsi/qla2xxx/qla_fw.h index cebf4f1bb7d9..42c5587cc50c 100644 --- a/drivers/scsi/qla2xxx/qla_fw.h +++ b/drivers/scsi/qla2xxx/qla_fw.h | |||
@@ -1592,10 +1592,22 @@ struct nvram_81xx { | |||
1592 | 1592 | ||
1593 | /* Offset 384. */ | 1593 | /* Offset 384. */ |
1594 | uint8_t reserved_21[16]; | 1594 | uint8_t reserved_21[16]; |
1595 | uint16_t reserved_22[8]; | 1595 | uint16_t reserved_22[3]; |
1596 | |||
1597 | /* | ||
1598 | * BIT 0 = Extended BB credits for LR | ||
1599 | * BIT 1 = Virtual Fabric Enable | ||
1600 | * BIT 2 = Enhanced Features Unused | ||
1601 | * BIT 3-7 = Enhanced Features Reserved | ||
1602 | */ | ||
1603 | /* Enhanced Features */ | ||
1604 | uint8_t enhanced_features; | ||
1605 | |||
1606 | uint8_t reserved_23; | ||
1607 | uint16_t reserved_24[4]; | ||
1596 | 1608 | ||
1597 | /* Offset 416. */ | 1609 | /* Offset 416. */ |
1598 | uint16_t reserved_23[32]; | 1610 | uint16_t reserved_25[32]; |
1599 | 1611 | ||
1600 | /* Offset 480. */ | 1612 | /* Offset 480. */ |
1601 | uint8_t model_name[16]; | 1613 | uint8_t model_name[16]; |
@@ -1603,7 +1615,7 @@ struct nvram_81xx { | |||
1603 | /* Offset 496. */ | 1615 | /* Offset 496. */ |
1604 | uint16_t feature_mask_l; | 1616 | uint16_t feature_mask_l; |
1605 | uint16_t feature_mask_h; | 1617 | uint16_t feature_mask_h; |
1606 | uint16_t reserved_24[2]; | 1618 | uint16_t reserved_26[2]; |
1607 | 1619 | ||
1608 | uint16_t subsystem_vendor_id; | 1620 | uint16_t subsystem_vendor_id; |
1609 | uint16_t subsystem_device_id; | 1621 | uint16_t subsystem_device_id; |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index a67b2bafb882..4229bb483c5e 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -8,6 +8,7 @@ | |||
8 | #include "qla_gbl.h" | 8 | #include "qla_gbl.h" |
9 | 9 | ||
10 | #include <linux/delay.h> | 10 | #include <linux/delay.h> |
11 | #include <linux/slab.h> | ||
11 | #include <linux/vmalloc.h> | 12 | #include <linux/vmalloc.h> |
12 | 13 | ||
13 | #include "qla_devtbl.h" | 14 | #include "qla_devtbl.h" |
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index ab90329ff2e4..db539b0c3dae 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include "qla_def.h" | 7 | #include "qla_def.h" |
8 | 8 | ||
9 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
10 | #include <linux/slab.h> | ||
10 | #include <scsi/scsi_tcq.h> | 11 | #include <scsi/scsi_tcq.h> |
11 | #include <scsi/scsi_bsg_fc.h> | 12 | #include <scsi/scsi_bsg_fc.h> |
12 | 13 | ||
@@ -620,11 +621,10 @@ skip_rio: | |||
620 | * vp_idx does not match | 621 | * vp_idx does not match |
621 | * Event is not global, vp_idx does not match | 622 | * Event is not global, vp_idx does not match |
622 | */ | 623 | */ |
623 | if ((mb[1] == 0xffff && (mb[3] & 0xff) != 0xff) | 624 | if (IS_QLA2XXX_MIDTYPE(ha) && |
624 | || (mb[1] != 0xffff)) { | 625 | ((mb[1] == 0xffff && (mb[3] & 0xff) != 0xff) || |
625 | if (vha->vp_idx != (mb[3] & 0xff)) | 626 | (mb[1] != 0xffff)) && vha->vp_idx != (mb[3] & 0xff)) |
626 | break; | 627 | break; |
627 | } | ||
628 | 628 | ||
629 | /* Global event -- port logout or port unavailable. */ | 629 | /* Global event -- port logout or port unavailable. */ |
630 | if (mb[1] == 0xffff && mb[2] == 0x7) { | 630 | if (mb[1] == 0xffff && mb[2] == 0x7) { |
@@ -2272,30 +2272,28 @@ qla2x00_request_irqs(struct qla_hw_data *ha, struct rsp_que *rsp) | |||
2272 | 2272 | ||
2273 | /* If possible, enable MSI-X. */ | 2273 | /* If possible, enable MSI-X. */ |
2274 | if (!IS_QLA2432(ha) && !IS_QLA2532(ha) && | 2274 | if (!IS_QLA2432(ha) && !IS_QLA2532(ha) && |
2275 | !IS_QLA8432(ha) && !IS_QLA8001(ha)) | 2275 | !IS_QLA8432(ha) && !IS_QLA8001(ha)) |
2276 | goto skip_msix; | 2276 | goto skip_msi; |
2277 | |||
2278 | if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_HP && | ||
2279 | (ha->pdev->subsystem_device == 0x7040 || | ||
2280 | ha->pdev->subsystem_device == 0x7041 || | ||
2281 | ha->pdev->subsystem_device == 0x1705)) { | ||
2282 | DEBUG2(qla_printk(KERN_WARNING, ha, | ||
2283 | "MSI-X: Unsupported ISP2432 SSVID/SSDID (0x%X,0x%X).\n", | ||
2284 | ha->pdev->subsystem_vendor, | ||
2285 | ha->pdev->subsystem_device)); | ||
2286 | goto skip_msi; | ||
2287 | } | ||
2277 | 2288 | ||
2278 | if (IS_QLA2432(ha) && (ha->pdev->revision < QLA_MSIX_CHIP_REV_24XX || | 2289 | if (IS_QLA2432(ha) && (ha->pdev->revision < QLA_MSIX_CHIP_REV_24XX || |
2279 | !QLA_MSIX_FW_MODE_1(ha->fw_attributes))) { | 2290 | !QLA_MSIX_FW_MODE_1(ha->fw_attributes))) { |
2280 | DEBUG2(qla_printk(KERN_WARNING, ha, | 2291 | DEBUG2(qla_printk(KERN_WARNING, ha, |
2281 | "MSI-X: Unsupported ISP2432 (0x%X, 0x%X).\n", | 2292 | "MSI-X: Unsupported ISP2432 (0x%X, 0x%X).\n", |
2282 | ha->pdev->revision, ha->fw_attributes)); | 2293 | ha->pdev->revision, ha->fw_attributes)); |
2283 | |||
2284 | goto skip_msix; | 2294 | goto skip_msix; |
2285 | } | 2295 | } |
2286 | 2296 | ||
2287 | if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_HP && | ||
2288 | (ha->pdev->subsystem_device == 0x7040 || | ||
2289 | ha->pdev->subsystem_device == 0x7041 || | ||
2290 | ha->pdev->subsystem_device == 0x1705)) { | ||
2291 | DEBUG2(qla_printk(KERN_WARNING, ha, | ||
2292 | "MSI-X: Unsupported ISP2432 SSVID/SSDID (0x%X, 0x%X).\n", | ||
2293 | ha->pdev->subsystem_vendor, | ||
2294 | ha->pdev->subsystem_device)); | ||
2295 | |||
2296 | goto skip_msi; | ||
2297 | } | ||
2298 | |||
2299 | ret = qla24xx_enable_msix(ha, rsp); | 2297 | ret = qla24xx_enable_msix(ha, rsp); |
2300 | if (!ret) { | 2298 | if (!ret) { |
2301 | DEBUG2(qla_printk(KERN_INFO, ha, | 2299 | DEBUG2(qla_printk(KERN_INFO, ha, |
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 6e53bdbb1da8..42eb7ffd5942 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include "qla_def.h" | 7 | #include "qla_def.h" |
8 | 8 | ||
9 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
10 | #include <linux/gfp.h> | ||
10 | 11 | ||
11 | 12 | ||
12 | /* | 13 | /* |
@@ -339,6 +340,7 @@ qla2x00_load_ram(scsi_qla_host_t *vha, dma_addr_t req_dma, uint32_t risc_addr, | |||
339 | return rval; | 340 | return rval; |
340 | } | 341 | } |
341 | 342 | ||
343 | #define EXTENDED_BB_CREDITS BIT_0 | ||
342 | /* | 344 | /* |
343 | * qla2x00_execute_fw | 345 | * qla2x00_execute_fw |
344 | * Start adapter firmware. | 346 | * Start adapter firmware. |
@@ -371,7 +373,12 @@ qla2x00_execute_fw(scsi_qla_host_t *vha, uint32_t risc_addr) | |||
371 | mcp->mb[1] = MSW(risc_addr); | 373 | mcp->mb[1] = MSW(risc_addr); |
372 | mcp->mb[2] = LSW(risc_addr); | 374 | mcp->mb[2] = LSW(risc_addr); |
373 | mcp->mb[3] = 0; | 375 | mcp->mb[3] = 0; |
374 | mcp->mb[4] = 0; | 376 | if (IS_QLA81XX(ha)) { |
377 | struct nvram_81xx *nv = ha->nvram; | ||
378 | mcp->mb[4] = (nv->enhanced_features & | ||
379 | EXTENDED_BB_CREDITS); | ||
380 | } else | ||
381 | mcp->mb[4] = 0; | ||
375 | mcp->out_mb |= MBX_4|MBX_3|MBX_2|MBX_1; | 382 | mcp->out_mb |= MBX_4|MBX_3|MBX_2|MBX_1; |
376 | mcp->in_mb |= MBX_1; | 383 | mcp->in_mb |= MBX_1; |
377 | } else { | 384 | } else { |
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c index ff17dee28613..8220e7b9799b 100644 --- a/drivers/scsi/qla2xxx/qla_mid.c +++ b/drivers/scsi/qla2xxx/qla_mid.c | |||
@@ -9,6 +9,7 @@ | |||
9 | 9 | ||
10 | #include <linux/moduleparam.h> | 10 | #include <linux/moduleparam.h> |
11 | #include <linux/vmalloc.h> | 11 | #include <linux/vmalloc.h> |
12 | #include <linux/slab.h> | ||
12 | #include <linux/list.h> | 13 | #include <linux/list.h> |
13 | 14 | ||
14 | #include <scsi/scsi_tcq.h> | 15 | #include <scsi/scsi_tcq.h> |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 46720b23028f..48c37e38ed01 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/kthread.h> | 12 | #include <linux/kthread.h> |
13 | #include <linux/mutex.h> | 13 | #include <linux/mutex.h> |
14 | #include <linux/kobject.h> | 14 | #include <linux/kobject.h> |
15 | #include <linux/slab.h> | ||
15 | 16 | ||
16 | #include <scsi/scsi_tcq.h> | 17 | #include <scsi/scsi_tcq.h> |
17 | #include <scsi/scsicam.h> | 18 | #include <scsi/scsicam.h> |
@@ -1676,9 +1677,11 @@ skip_pio: | |||
1676 | 1677 | ||
1677 | /* Determine queue resources */ | 1678 | /* Determine queue resources */ |
1678 | ha->max_req_queues = ha->max_rsp_queues = 1; | 1679 | ha->max_req_queues = ha->max_rsp_queues = 1; |
1679 | if ((ql2xmaxqueues <= 1 || ql2xmultique_tag < 1) && | 1680 | if ((ql2xmaxqueues <= 1 && !ql2xmultique_tag) || |
1681 | (ql2xmaxqueues > 1 && ql2xmultique_tag) || | ||
1680 | (!IS_QLA25XX(ha) && !IS_QLA81XX(ha))) | 1682 | (!IS_QLA25XX(ha) && !IS_QLA81XX(ha))) |
1681 | goto mqiobase_exit; | 1683 | goto mqiobase_exit; |
1684 | |||
1682 | ha->mqiobase = ioremap(pci_resource_start(ha->pdev, 3), | 1685 | ha->mqiobase = ioremap(pci_resource_start(ha->pdev, 3), |
1683 | pci_resource_len(ha->pdev, 3)); | 1686 | pci_resource_len(ha->pdev, 3)); |
1684 | if (ha->mqiobase) { | 1687 | if (ha->mqiobase) { |
diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c index 371dc895972a..8b3de4e54c28 100644 --- a/drivers/scsi/qla2xxx/qla_sup.c +++ b/drivers/scsi/qla2xxx/qla_sup.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include "qla_def.h" | 7 | #include "qla_def.h" |
8 | 8 | ||
9 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
10 | #include <linux/slab.h> | ||
10 | #include <linux/vmalloc.h> | 11 | #include <linux/vmalloc.h> |
11 | #include <asm/uaccess.h> | 12 | #include <asm/uaccess.h> |
12 | 13 | ||
diff --git a/drivers/scsi/qla2xxx/qla_version.h b/drivers/scsi/qla2xxx/qla_version.h index 8d2fc2fa7a6b..109068df933f 100644 --- a/drivers/scsi/qla2xxx/qla_version.h +++ b/drivers/scsi/qla2xxx/qla_version.h | |||
@@ -7,9 +7,9 @@ | |||
7 | /* | 7 | /* |
8 | * Driver version | 8 | * Driver version |
9 | */ | 9 | */ |
10 | #define QLA2XXX_VERSION "8.03.02-k1" | 10 | #define QLA2XXX_VERSION "8.03.02-k2" |
11 | 11 | ||
12 | #define QLA_DRIVER_MAJOR_VER 8 | 12 | #define QLA_DRIVER_MAJOR_VER 8 |
13 | #define QLA_DRIVER_MINOR_VER 3 | 13 | #define QLA_DRIVER_MINOR_VER 3 |
14 | #define QLA_DRIVER_PATCH_VER 2 | 14 | #define QLA_DRIVER_PATCH_VER 2 |
15 | #define QLA_DRIVER_BETA_VER 1 | 15 | #define QLA_DRIVER_BETA_VER 2 |
diff --git a/drivers/scsi/qla4xxx/ql4_mbx.c b/drivers/scsi/qla4xxx/ql4_mbx.c index 09d6d4b76f39..caeb7d10ae04 100644 --- a/drivers/scsi/qla4xxx/ql4_mbx.c +++ b/drivers/scsi/qla4xxx/ql4_mbx.c | |||
@@ -467,7 +467,7 @@ int qla4xxx_get_fwddb_entry(struct scsi_qla_host *ha, | |||
467 | if (conn_err_detail) | 467 | if (conn_err_detail) |
468 | *conn_err_detail = mbox_sts[5]; | 468 | *conn_err_detail = mbox_sts[5]; |
469 | if (tcp_source_port_num) | 469 | if (tcp_source_port_num) |
470 | *tcp_source_port_num = (uint16_t) mbox_sts[6] >> 16; | 470 | *tcp_source_port_num = (uint16_t) (mbox_sts[6] >> 16); |
471 | if (connection_id) | 471 | if (connection_id) |
472 | *connection_id = (uint16_t) mbox_sts[6] & 0x00FF; | 472 | *connection_id = (uint16_t) mbox_sts[6] & 0x00FF; |
473 | status = QLA_SUCCESS; | 473 | status = QLA_SUCCESS; |
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 83c8b5e4fc8b..2ccad36bee9f 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c | |||
@@ -5,6 +5,7 @@ | |||
5 | * See LICENSE.qla4xxx for copyright and licensing details. | 5 | * See LICENSE.qla4xxx for copyright and licensing details. |
6 | */ | 6 | */ |
7 | #include <linux/moduleparam.h> | 7 | #include <linux/moduleparam.h> |
8 | #include <linux/slab.h> | ||
8 | 9 | ||
9 | #include <scsi/scsi_tcq.h> | 10 | #include <scsi/scsi_tcq.h> |
10 | #include <scsi/scsicam.h> | 11 | #include <scsi/scsicam.h> |
diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c index 1b8217076b0e..aa406497eebc 100644 --- a/drivers/scsi/qlogicpti.c +++ b/drivers/scsi/qlogicpti.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <linux/string.h> | 18 | #include <linux/string.h> |
19 | #include <linux/slab.h> | 19 | #include <linux/gfp.h> |
20 | #include <linux/blkdev.h> | 20 | #include <linux/blkdev.h> |
21 | #include <linux/proc_fs.h> | 21 | #include <linux/proc_fs.h> |
22 | #include <linux/stat.h> | 22 | #include <linux/stat.h> |
diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index 0b575c871007..3a5bfd10b2cb 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/kernel.h> | 30 | #include <linux/kernel.h> |
31 | #include <linux/errno.h> | 31 | #include <linux/errno.h> |
32 | #include <linux/timer.h> | 32 | #include <linux/timer.h> |
33 | #include <linux/slab.h> | ||
33 | #include <linux/types.h> | 34 | #include <linux/types.h> |
34 | #include <linux/string.h> | 35 | #include <linux/string.h> |
35 | #include <linux/genhd.h> | 36 | #include <linux/genhd.h> |
@@ -956,7 +957,8 @@ static int resp_start_stop(struct scsi_cmnd * scp, | |||
956 | static sector_t get_sdebug_capacity(void) | 957 | static sector_t get_sdebug_capacity(void) |
957 | { | 958 | { |
958 | if (scsi_debug_virtual_gb > 0) | 959 | if (scsi_debug_virtual_gb > 0) |
959 | return 2048 * 1024 * (sector_t)scsi_debug_virtual_gb; | 960 | return (sector_t)scsi_debug_virtual_gb * |
961 | (1073741824 / scsi_debug_sector_size); | ||
960 | else | 962 | else |
961 | return sdebug_store_sectors; | 963 | return sdebug_store_sectors; |
962 | } | 964 | } |
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c index 37af178b2d17..43fad4c09beb 100644 --- a/drivers/scsi/scsi_devinfo.c +++ b/drivers/scsi/scsi_devinfo.c | |||
@@ -6,6 +6,7 @@ | |||
6 | #include <linux/moduleparam.h> | 6 | #include <linux/moduleparam.h> |
7 | #include <linux/proc_fs.h> | 7 | #include <linux/proc_fs.h> |
8 | #include <linux/seq_file.h> | 8 | #include <linux/seq_file.h> |
9 | #include <linux/slab.h> | ||
9 | 10 | ||
10 | #include <scsi/scsi_device.h> | 11 | #include <scsi/scsi_device.h> |
11 | #include <scsi/scsi_devinfo.h> | 12 | #include <scsi/scsi_devinfo.h> |
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 08ed506e6059..7ad53fa42766 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #include <linux/sched.h> | 18 | #include <linux/sched.h> |
19 | #include <linux/gfp.h> | ||
19 | #include <linux/timer.h> | 20 | #include <linux/timer.h> |
20 | #include <linux/string.h> | 21 | #include <linux/string.h> |
21 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
@@ -301,7 +302,20 @@ static int scsi_check_sense(struct scsi_cmnd *scmd) | |||
301 | if (scmd->device->allow_restart && | 302 | if (scmd->device->allow_restart && |
302 | (sshdr.asc == 0x04) && (sshdr.ascq == 0x02)) | 303 | (sshdr.asc == 0x04) && (sshdr.ascq == 0x02)) |
303 | return FAILED; | 304 | return FAILED; |
304 | return SUCCESS; | 305 | |
306 | if (blk_barrier_rq(scmd->request)) | ||
307 | /* | ||
308 | * barrier requests should always retry on UA | ||
309 | * otherwise block will get a spurious error | ||
310 | */ | ||
311 | return NEEDS_RETRY; | ||
312 | else | ||
313 | /* | ||
314 | * for normal (non barrier) commands, pass the | ||
315 | * UA upwards for a determination in the | ||
316 | * completion functions | ||
317 | */ | ||
318 | return SUCCESS; | ||
305 | 319 | ||
306 | /* these three are not supported */ | 320 | /* these three are not supported */ |
307 | case COPY_ABORTED: | 321 | case COPY_ABORTED: |
diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c index 0fd6ae6911ad..d53e6503c6d5 100644 --- a/drivers/scsi/scsi_netlink.c +++ b/drivers/scsi/scsi_netlink.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/jiffies.h> | 22 | #include <linux/jiffies.h> |
23 | #include <linux/security.h> | 23 | #include <linux/security.h> |
24 | #include <linux/delay.h> | 24 | #include <linux/delay.h> |
25 | #include <linux/slab.h> | ||
25 | #include <net/sock.h> | 26 | #include <net/sock.h> |
26 | #include <net/netlink.h> | 27 | #include <net/netlink.h> |
27 | 28 | ||
diff --git a/drivers/scsi/scsi_proc.c b/drivers/scsi/scsi_proc.c index 77fbddb507fd..c99da926fdac 100644 --- a/drivers/scsi/scsi_proc.c +++ b/drivers/scsi/scsi_proc.c | |||
@@ -20,12 +20,12 @@ | |||
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/string.h> | 21 | #include <linux/string.h> |
22 | #include <linux/mm.h> | 22 | #include <linux/mm.h> |
23 | #include <linux/slab.h> | ||
24 | #include <linux/proc_fs.h> | 23 | #include <linux/proc_fs.h> |
25 | #include <linux/errno.h> | 24 | #include <linux/errno.h> |
26 | #include <linux/blkdev.h> | 25 | #include <linux/blkdev.h> |
27 | #include <linux/seq_file.h> | 26 | #include <linux/seq_file.h> |
28 | #include <linux/mutex.h> | 27 | #include <linux/mutex.h> |
28 | #include <linux/gfp.h> | ||
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | 30 | ||
31 | #include <scsi/scsi.h> | 31 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 4bc8b77a2ef3..38518b088073 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/kthread.h> | 33 | #include <linux/kthread.h> |
34 | #include <linux/spinlock.h> | 34 | #include <linux/spinlock.h> |
35 | #include <linux/async.h> | 35 | #include <linux/async.h> |
36 | #include <linux/slab.h> | ||
36 | 37 | ||
37 | #include <scsi/scsi.h> | 38 | #include <scsi/scsi.h> |
38 | #include <scsi/scsi_cmnd.h> | 39 | #include <scsi/scsi_cmnd.h> |
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 19ec9e2d3f39..429c9b73e3e4 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c | |||
@@ -7,6 +7,7 @@ | |||
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/slab.h> | ||
10 | #include <linux/init.h> | 11 | #include <linux/init.h> |
11 | #include <linux/blkdev.h> | 12 | #include <linux/blkdev.h> |
12 | #include <linux/device.h> | 13 | #include <linux/device.h> |
diff --git a/drivers/scsi/scsi_tgt_if.c b/drivers/scsi/scsi_tgt_if.c index 0e9533f7aabc..a87e21c35ef2 100644 --- a/drivers/scsi/scsi_tgt_if.c +++ b/drivers/scsi/scsi_tgt_if.c | |||
@@ -20,6 +20,7 @@ | |||
20 | * 02110-1301 USA | 20 | * 02110-1301 USA |
21 | */ | 21 | */ |
22 | #include <linux/miscdevice.h> | 22 | #include <linux/miscdevice.h> |
23 | #include <linux/gfp.h> | ||
23 | #include <linux/file.h> | 24 | #include <linux/file.h> |
24 | #include <linux/smp_lock.h> | 25 | #include <linux/smp_lock.h> |
25 | #include <net/tcp.h> | 26 | #include <net/tcp.h> |
diff --git a/drivers/scsi/scsi_tgt_lib.c b/drivers/scsi/scsi_tgt_lib.c index 10303272ba45..66241dd525ae 100644 --- a/drivers/scsi/scsi_tgt_lib.c +++ b/drivers/scsi/scsi_tgt_lib.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/hash.h> | 23 | #include <linux/hash.h> |
24 | #include <linux/module.h> | 24 | #include <linux/module.h> |
25 | #include <linux/pagemap.h> | 25 | #include <linux/pagemap.h> |
26 | #include <linux/slab.h> | ||
26 | #include <scsi/scsi.h> | 27 | #include <scsi/scsi.h> |
27 | #include <scsi/scsi_cmnd.h> | 28 | #include <scsi/scsi_cmnd.h> |
28 | #include <scsi/scsi_device.h> | 29 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index 1d5b72173dd8..6cfffc88022a 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
@@ -27,6 +27,7 @@ | |||
27 | */ | 27 | */ |
28 | #include <linux/module.h> | 28 | #include <linux/module.h> |
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <linux/slab.h> | ||
30 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
31 | #include <scsi/scsi_device.h> | 32 | #include <scsi/scsi_device.h> |
32 | #include <scsi/scsi_host.h> | 33 | #include <scsi/scsi_host.h> |
@@ -3852,7 +3853,7 @@ fc_bsg_request_handler(struct request_queue *q, struct Scsi_Host *shost, | |||
3852 | if (rport && (rport->port_state != FC_PORTSTATE_ONLINE)) { | 3853 | if (rport && (rport->port_state != FC_PORTSTATE_ONLINE)) { |
3853 | req->errors = -ENXIO; | 3854 | req->errors = -ENXIO; |
3854 | spin_unlock_irq(q->queue_lock); | 3855 | spin_unlock_irq(q->queue_lock); |
3855 | blk_end_request(req, -ENXIO, blk_rq_bytes(req)); | 3856 | blk_end_request_all(req, -ENXIO); |
3856 | spin_lock_irq(q->queue_lock); | 3857 | spin_lock_irq(q->queue_lock); |
3857 | continue; | 3858 | continue; |
3858 | } | 3859 | } |
@@ -3862,7 +3863,7 @@ fc_bsg_request_handler(struct request_queue *q, struct Scsi_Host *shost, | |||
3862 | ret = fc_req_to_bsgjob(shost, rport, req); | 3863 | ret = fc_req_to_bsgjob(shost, rport, req); |
3863 | if (ret) { | 3864 | if (ret) { |
3864 | req->errors = ret; | 3865 | req->errors = ret; |
3865 | blk_end_request(req, ret, blk_rq_bytes(req)); | 3866 | blk_end_request_all(req, ret); |
3866 | spin_lock_irq(q->queue_lock); | 3867 | spin_lock_irq(q->queue_lock); |
3867 | continue; | 3868 | continue; |
3868 | } | 3869 | } |
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index ea3892e7e0f7..1e6d4793542c 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c | |||
@@ -22,6 +22,7 @@ | |||
22 | */ | 22 | */ |
23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
24 | #include <linux/mutex.h> | 24 | #include <linux/mutex.h> |
25 | #include <linux/slab.h> | ||
25 | #include <net/tcp.h> | 26 | #include <net/tcp.h> |
26 | #include <scsi/scsi.h> | 27 | #include <scsi/scsi.h> |
27 | #include <scsi/scsi_host.h> | 28 | #include <scsi/scsi_host.h> |
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c index c25bd9a34e02..8a172d4f4564 100644 --- a/drivers/scsi/scsi_transport_spi.c +++ b/drivers/scsi/scsi_transport_spi.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/blkdev.h> | 25 | #include <linux/blkdev.h> |
26 | #include <linux/mutex.h> | 26 | #include <linux/mutex.h> |
27 | #include <linux/sysfs.h> | 27 | #include <linux/sysfs.h> |
28 | #include <linux/slab.h> | ||
28 | #include <scsi/scsi.h> | 29 | #include <scsi/scsi.h> |
29 | #include "scsi_priv.h" | 30 | #include "scsi_priv.h" |
30 | #include <scsi/scsi_device.h> | 31 | #include <scsi/scsi_device.h> |
diff --git a/drivers/scsi/scsicam.c b/drivers/scsi/scsicam.c index 3f21bc65e8c6..6803b1e26ecc 100644 --- a/drivers/scsi/scsicam.c +++ b/drivers/scsi/scsicam.c | |||
@@ -11,6 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/slab.h> | ||
14 | #include <linux/fs.h> | 15 | #include <linux/fs.h> |
15 | #include <linux/genhd.h> | 16 | #include <linux/genhd.h> |
16 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 7b75c8a2a49d..de6c60320f6f 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c | |||
@@ -49,6 +49,7 @@ | |||
49 | #include <linux/mutex.h> | 49 | #include <linux/mutex.h> |
50 | #include <linux/string_helpers.h> | 50 | #include <linux/string_helpers.h> |
51 | #include <linux/async.h> | 51 | #include <linux/async.h> |
52 | #include <linux/slab.h> | ||
52 | #include <asm/uaccess.h> | 53 | #include <asm/uaccess.h> |
53 | #include <asm/unaligned.h> | 54 | #include <asm/unaligned.h> |
54 | 55 | ||
@@ -1039,6 +1040,7 @@ static void sd_prepare_flush(struct request_queue *q, struct request *rq) | |||
1039 | { | 1040 | { |
1040 | rq->cmd_type = REQ_TYPE_BLOCK_PC; | 1041 | rq->cmd_type = REQ_TYPE_BLOCK_PC; |
1041 | rq->timeout = SD_TIMEOUT; | 1042 | rq->timeout = SD_TIMEOUT; |
1043 | rq->retries = SD_MAX_RETRIES; | ||
1042 | rq->cmd[0] = SYNCHRONIZE_CACHE; | 1044 | rq->cmd[0] = SYNCHRONIZE_CACHE; |
1043 | rq->cmd_len = 10; | 1045 | rq->cmd_len = 10; |
1044 | } | 1046 | } |
@@ -2185,7 +2187,7 @@ static void sd_probe_async(void *data, async_cookie_t cookie) | |||
2185 | blk_queue_prep_rq(sdp->request_queue, sd_prep_fn); | 2187 | blk_queue_prep_rq(sdp->request_queue, sd_prep_fn); |
2186 | 2188 | ||
2187 | gd->driverfs_dev = &sdp->sdev_gendev; | 2189 | gd->driverfs_dev = &sdp->sdev_gendev; |
2188 | gd->flags = GENHD_FL_EXT_DEVT | GENHD_FL_DRIVERFS; | 2190 | gd->flags = GENHD_FL_EXT_DEVT; |
2189 | if (sdp->removable) | 2191 | if (sdp->removable) |
2190 | gd->flags |= GENHD_FL_REMOVABLE; | 2192 | gd->flags |= GENHD_FL_REMOVABLE; |
2191 | 2193 | ||
diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c index 0d9d6f7567f5..7f5a6a86f820 100644 --- a/drivers/scsi/ses.c +++ b/drivers/scsi/ses.c | |||
@@ -21,6 +21,7 @@ | |||
21 | **----------------------------------------------------------------------------- | 21 | **----------------------------------------------------------------------------- |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <linux/slab.h> | ||
24 | #include <linux/module.h> | 25 | #include <linux/module.h> |
25 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
26 | #include <linux/enclosure.h> | 27 | #include <linux/enclosure.h> |
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index c996d98636f3..dee1c96288d4 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c | |||
@@ -38,6 +38,7 @@ static int sg_version_num = 30534; /* 2 digits for each component */ | |||
38 | #include <linux/errno.h> | 38 | #include <linux/errno.h> |
39 | #include <linux/mtio.h> | 39 | #include <linux/mtio.h> |
40 | #include <linux/ioctl.h> | 40 | #include <linux/ioctl.h> |
41 | #include <linux/slab.h> | ||
41 | #include <linux/fcntl.h> | 42 | #include <linux/fcntl.h> |
42 | #include <linux/init.h> | 43 | #include <linux/init.h> |
43 | #include <linux/poll.h> | 44 | #include <linux/poll.h> |
diff --git a/drivers/scsi/sim710.c b/drivers/scsi/sim710.c index 6dc8b846c112..8ac6ce792b69 100644 --- a/drivers/scsi/sim710.c +++ b/drivers/scsi/sim710.c | |||
@@ -27,6 +27,7 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <linux/module.h> | 29 | #include <linux/module.h> |
30 | #include <linux/slab.h> | ||
30 | 31 | ||
31 | #include <linux/blkdev.h> | 32 | #include <linux/blkdev.h> |
32 | #include <linux/device.h> | 33 | #include <linux/device.h> |
diff --git a/drivers/scsi/sni_53c710.c b/drivers/scsi/sni_53c710.c index 56cf0bb4ed1f..9acc2b2a3601 100644 --- a/drivers/scsi/sni_53c710.c +++ b/drivers/scsi/sni_53c710.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/module.h> | 30 | #include <linux/module.h> |
31 | #include <linux/init.h> | 31 | #include <linux/init.h> |
32 | #include <linux/types.h> | 32 | #include <linux/types.h> |
33 | #include <linux/slab.h> | ||
33 | #include <linux/stat.h> | 34 | #include <linux/stat.h> |
34 | #include <linux/mm.h> | 35 | #include <linux/mm.h> |
35 | #include <linux/blkdev.h> | 36 | #include <linux/blkdev.h> |
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c index d6f340f48a3b..0a90abc7f140 100644 --- a/drivers/scsi/sr.c +++ b/drivers/scsi/sr.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <linux/init.h> | 44 | #include <linux/init.h> |
45 | #include <linux/blkdev.h> | 45 | #include <linux/blkdev.h> |
46 | #include <linux/mutex.h> | 46 | #include <linux/mutex.h> |
47 | #include <linux/slab.h> | ||
47 | #include <asm/uaccess.h> | 48 | #include <asm/uaccess.h> |
48 | 49 | ||
49 | #include <scsi/scsi.h> | 50 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/sr_ioctl.c b/drivers/scsi/sr_ioctl.c index 291236e6e435..cbb38c5197fa 100644 --- a/drivers/scsi/sr_ioctl.c +++ b/drivers/scsi/sr_ioctl.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/blkpg.h> | 7 | #include <linux/blkpg.h> |
8 | #include <linux/cdrom.h> | 8 | #include <linux/cdrom.h> |
9 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
10 | #include <linux/slab.h> | ||
10 | #include <asm/io.h> | 11 | #include <asm/io.h> |
11 | #include <asm/uaccess.h> | 12 | #include <asm/uaccess.h> |
12 | 13 | ||
diff --git a/drivers/scsi/sr_vendor.c b/drivers/scsi/sr_vendor.c index 4ad3e017213f..92cc2efb25d7 100644 --- a/drivers/scsi/sr_vendor.c +++ b/drivers/scsi/sr_vendor.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <linux/string.h> | 39 | #include <linux/string.h> |
40 | #include <linux/bcd.h> | 40 | #include <linux/bcd.h> |
41 | #include <linux/blkdev.h> | 41 | #include <linux/blkdev.h> |
42 | #include <linux/slab.h> | ||
42 | 43 | ||
43 | #include <scsi/scsi.h> | 44 | #include <scsi/scsi.h> |
44 | #include <scsi/scsi_cmnd.h> | 45 | #include <scsi/scsi_cmnd.h> |
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index f67d1a159aad..3ea1a713ef25 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c | |||
@@ -27,6 +27,7 @@ static const char *verstr = "20081215"; | |||
27 | #include <linux/mm.h> | 27 | #include <linux/mm.h> |
28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
29 | #include <linux/string.h> | 29 | #include <linux/string.h> |
30 | #include <linux/slab.h> | ||
30 | #include <linux/errno.h> | 31 | #include <linux/errno.h> |
31 | #include <linux/mtio.h> | 32 | #include <linux/mtio.h> |
32 | #include <linux/cdrom.h> | 33 | #include <linux/cdrom.h> |
diff --git a/drivers/scsi/stex.c b/drivers/scsi/stex.c index fd7b15be7640..9c73dbda3bbb 100644 --- a/drivers/scsi/stex.c +++ b/drivers/scsi/stex.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/slab.h> | ||
20 | #include <linux/time.h> | 21 | #include <linux/time.h> |
21 | #include <linux/pci.h> | 22 | #include <linux/pci.h> |
22 | #include <linux/blkdev.h> | 23 | #include <linux/blkdev.h> |
diff --git a/drivers/scsi/sun3_NCR5380.c b/drivers/scsi/sun3_NCR5380.c index 75da6e58ce55..b5838d547c68 100644 --- a/drivers/scsi/sun3_NCR5380.c +++ b/drivers/scsi/sun3_NCR5380.c | |||
@@ -645,6 +645,7 @@ __inline__ void NCR5380_print_phase(struct Scsi_Host *instance) { }; | |||
645 | * interrupt or bottom half. | 645 | * interrupt or bottom half. |
646 | */ | 646 | */ |
647 | 647 | ||
648 | #include <linux/gfp.h> | ||
648 | #include <linux/workqueue.h> | 649 | #include <linux/workqueue.h> |
649 | #include <linux/interrupt.h> | 650 | #include <linux/interrupt.h> |
650 | 651 | ||
diff --git a/drivers/scsi/sun3x_esp.c b/drivers/scsi/sun3x_esp.c index 34a99620e5bd..0621037f0271 100644 --- a/drivers/scsi/sun3x_esp.c +++ b/drivers/scsi/sun3x_esp.c | |||
@@ -4,6 +4,7 @@ | |||
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include <linux/kernel.h> | 6 | #include <linux/kernel.h> |
7 | #include <linux/gfp.h> | ||
7 | #include <linux/types.h> | 8 | #include <linux/types.h> |
8 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
9 | #include <linux/module.h> | 10 | #include <linux/module.h> |
diff --git a/drivers/scsi/sun_esp.c b/drivers/scsi/sun_esp.c index 3d73aad4bc82..fc23d273fb1a 100644 --- a/drivers/scsi/sun_esp.c +++ b/drivers/scsi/sun_esp.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/dma-mapping.h> | 12 | #include <linux/dma-mapping.h> |
13 | #include <linux/of.h> | 13 | #include <linux/of.h> |
14 | #include <linux/of_device.h> | 14 | #include <linux/of_device.h> |
15 | #include <linux/gfp.h> | ||
15 | 16 | ||
16 | #include <asm/irq.h> | 17 | #include <asm/irq.h> |
17 | #include <asm/io.h> | 18 | #include <asm/io.h> |
diff --git a/drivers/scsi/tmscsim.c b/drivers/scsi/tmscsim.c index 9a4273445c0d..27866b0adfeb 100644 --- a/drivers/scsi/tmscsim.c +++ b/drivers/scsi/tmscsim.c | |||
@@ -233,6 +233,7 @@ | |||
233 | #include <linux/interrupt.h> | 233 | #include <linux/interrupt.h> |
234 | #include <linux/init.h> | 234 | #include <linux/init.h> |
235 | #include <linux/spinlock.h> | 235 | #include <linux/spinlock.h> |
236 | #include <linux/slab.h> | ||
236 | #include <asm/io.h> | 237 | #include <asm/io.h> |
237 | 238 | ||
238 | #include <scsi/scsi.h> | 239 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/u14-34f.c b/drivers/scsi/u14-34f.c index 26e8e0e6b8dd..5d9fdeeb2315 100644 --- a/drivers/scsi/u14-34f.c +++ b/drivers/scsi/u14-34f.c | |||
@@ -420,6 +420,7 @@ | |||
420 | #include <linux/init.h> | 420 | #include <linux/init.h> |
421 | #include <linux/ctype.h> | 421 | #include <linux/ctype.h> |
422 | #include <linux/spinlock.h> | 422 | #include <linux/spinlock.h> |
423 | #include <linux/slab.h> | ||
423 | #include <asm/dma.h> | 424 | #include <asm/dma.h> |
424 | #include <asm/irq.h> | 425 | #include <asm/irq.h> |
425 | 426 | ||
diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c index e4ac5829b637..26894459c37f 100644 --- a/drivers/scsi/vmw_pvscsi.c +++ b/drivers/scsi/vmw_pvscsi.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/kernel.h> | 24 | #include <linux/kernel.h> |
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
27 | #include <linux/slab.h> | ||
27 | #include <linux/workqueue.h> | 28 | #include <linux/workqueue.h> |
28 | #include <linux/pci.h> | 29 | #include <linux/pci.h> |
29 | 30 | ||
diff --git a/drivers/scsi/wd7000.c b/drivers/scsi/wd7000.c index 2f6e9d8eaf71..333580bf37c5 100644 --- a/drivers/scsi/wd7000.c +++ b/drivers/scsi/wd7000.c | |||
@@ -171,7 +171,6 @@ | |||
171 | #include <linux/kernel.h> | 171 | #include <linux/kernel.h> |
172 | #include <linux/types.h> | 172 | #include <linux/types.h> |
173 | #include <linux/string.h> | 173 | #include <linux/string.h> |
174 | #include <linux/slab.h> | ||
175 | #include <linux/spinlock.h> | 174 | #include <linux/spinlock.h> |
176 | #include <linux/ioport.h> | 175 | #include <linux/ioport.h> |
177 | #include <linux/proc_fs.h> | 176 | #include <linux/proc_fs.h> |
@@ -1588,7 +1587,7 @@ static int wd7000_host_reset(struct scsi_cmnd *SCpnt) | |||
1588 | { | 1587 | { |
1589 | Adapter *host = (Adapter *) SCpnt->device->host->hostdata; | 1588 | Adapter *host = (Adapter *) SCpnt->device->host->hostdata; |
1590 | 1589 | ||
1591 | spin_unlock_irq(SCpnt->device->host->host_lock); | 1590 | spin_lock_irq(SCpnt->device->host->host_lock); |
1592 | 1591 | ||
1593 | if (wd7000_adapter_reset(host) < 0) { | 1592 | if (wd7000_adapter_reset(host) < 0) { |
1594 | spin_unlock_irq(SCpnt->device->host->host_lock); | 1593 | spin_unlock_irq(SCpnt->device->host->host_lock); |
diff --git a/drivers/scsi/zorro7xx.c b/drivers/scsi/zorro7xx.c index 64d40a2d4d4d..105449c15fa9 100644 --- a/drivers/scsi/zorro7xx.c +++ b/drivers/scsi/zorro7xx.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/zorro.h> | 15 | #include <linux/zorro.h> |
16 | #include <linux/slab.h> | ||
16 | 17 | ||
17 | #include <asm/amigahw.h> | 18 | #include <asm/amigahw.h> |
18 | #include <asm/amigaints.h> | 19 | #include <asm/amigaints.h> |