aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/lpfc/lpfc_scsi.c7
-rw-r--r--drivers/scsi/qedi/qedi_main.c7
-rw-r--r--drivers/scsi/scsi_devinfo.c1
-rw-r--r--drivers/scsi/scsi_dh.c1
-rw-r--r--drivers/scsi/storvsc_drv.c15
5 files changed, 19 insertions, 12 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index c98f264f1d83..a497b2c0cb79 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -3878,10 +3878,9 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
3878 * wake up the thread. 3878 * wake up the thread.
3879 */ 3879 */
3880 spin_lock(&lpfc_cmd->buf_lock); 3880 spin_lock(&lpfc_cmd->buf_lock);
3881 if (unlikely(lpfc_cmd->cur_iocbq.iocb_flag & LPFC_DRIVER_ABORTED)) { 3881 lpfc_cmd->cur_iocbq.iocb_flag &= ~LPFC_DRIVER_ABORTED;
3882 lpfc_cmd->cur_iocbq.iocb_flag &= ~LPFC_DRIVER_ABORTED; 3882 if (lpfc_cmd->waitq) {
3883 if (lpfc_cmd->waitq) 3883 wake_up(lpfc_cmd->waitq);
3884 wake_up(lpfc_cmd->waitq);
3885 lpfc_cmd->waitq = NULL; 3884 lpfc_cmd->waitq = NULL;
3886 } 3885 }
3887 spin_unlock(&lpfc_cmd->buf_lock); 3886 spin_unlock(&lpfc_cmd->buf_lock);
diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
index e74a62448ba4..e5db9a9954dc 100644
--- a/drivers/scsi/qedi/qedi_main.c
+++ b/drivers/scsi/qedi/qedi_main.c
@@ -1392,10 +1392,8 @@ static void qedi_free_nvm_iscsi_cfg(struct qedi_ctx *qedi)
1392 1392
1393static int qedi_alloc_nvm_iscsi_cfg(struct qedi_ctx *qedi) 1393static int qedi_alloc_nvm_iscsi_cfg(struct qedi_ctx *qedi)
1394{ 1394{
1395 struct qedi_nvm_iscsi_image nvm_image;
1396
1397 qedi->iscsi_image = dma_alloc_coherent(&qedi->pdev->dev, 1395 qedi->iscsi_image = dma_alloc_coherent(&qedi->pdev->dev,
1398 sizeof(nvm_image), 1396 sizeof(struct qedi_nvm_iscsi_image),
1399 &qedi->nvm_buf_dma, GFP_KERNEL); 1397 &qedi->nvm_buf_dma, GFP_KERNEL);
1400 if (!qedi->iscsi_image) { 1398 if (!qedi->iscsi_image) {
1401 QEDI_ERR(&qedi->dbg_ctx, "Could not allocate NVM BUF.\n"); 1399 QEDI_ERR(&qedi->dbg_ctx, "Could not allocate NVM BUF.\n");
@@ -2236,14 +2234,13 @@ static void qedi_boot_release(void *data)
2236static int qedi_get_boot_info(struct qedi_ctx *qedi) 2234static int qedi_get_boot_info(struct qedi_ctx *qedi)
2237{ 2235{
2238 int ret = 1; 2236 int ret = 1;
2239 struct qedi_nvm_iscsi_image nvm_image;
2240 2237
2241 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO, 2238 QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
2242 "Get NVM iSCSI CFG image\n"); 2239 "Get NVM iSCSI CFG image\n");
2243 ret = qedi_ops->common->nvm_get_image(qedi->cdev, 2240 ret = qedi_ops->common->nvm_get_image(qedi->cdev,
2244 QED_NVM_IMAGE_ISCSI_CFG, 2241 QED_NVM_IMAGE_ISCSI_CFG,
2245 (char *)qedi->iscsi_image, 2242 (char *)qedi->iscsi_image,
2246 sizeof(nvm_image)); 2243 sizeof(struct qedi_nvm_iscsi_image));
2247 if (ret) 2244 if (ret)
2248 QEDI_ERR(&qedi->dbg_ctx, 2245 QEDI_ERR(&qedi->dbg_ctx,
2249 "Could not get NVM image. ret = %d\n", ret); 2246 "Could not get NVM image. ret = %d\n", ret);
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index c4cbfd07b916..a08ff3bd6310 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -238,6 +238,7 @@ static struct {
238 {"NETAPP", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, 238 {"NETAPP", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
239 {"LSI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, 239 {"LSI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
240 {"ENGENIO", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, 240 {"ENGENIO", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
241 {"LENOVO", "Universal Xport", "*", BLIST_NO_ULD_ATTACH},
241 {"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36}, 242 {"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36},
242 {"SONY", "CD-ROM CDU-8001", NULL, BLIST_BORKEN}, 243 {"SONY", "CD-ROM CDU-8001", NULL, BLIST_BORKEN},
243 {"SONY", "TSL", NULL, BLIST_FORCELUN}, /* DDS3 & DDS4 autoloaders */ 244 {"SONY", "TSL", NULL, BLIST_FORCELUN}, /* DDS3 & DDS4 autoloaders */
diff --git a/drivers/scsi/scsi_dh.c b/drivers/scsi/scsi_dh.c
index 5a58cbf3a75d..c14006ac98f9 100644
--- a/drivers/scsi/scsi_dh.c
+++ b/drivers/scsi/scsi_dh.c
@@ -75,6 +75,7 @@ static const struct scsi_dh_blist scsi_dh_blist[] = {
75 {"NETAPP", "INF-01-00", "rdac", }, 75 {"NETAPP", "INF-01-00", "rdac", },
76 {"LSI", "INF-01-00", "rdac", }, 76 {"LSI", "INF-01-00", "rdac", },
77 {"ENGENIO", "INF-01-00", "rdac", }, 77 {"ENGENIO", "INF-01-00", "rdac", },
78 {"LENOVO", "DE_Series", "rdac", },
78 {NULL, NULL, NULL }, 79 {NULL, NULL, NULL },
79}; 80};
80 81
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 84380bae20f1..8472de1007ff 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -385,7 +385,7 @@ enum storvsc_request_type {
385 * This is the end of Protocol specific defines. 385 * This is the end of Protocol specific defines.
386 */ 386 */
387 387
388static int storvsc_ringbuffer_size = (256 * PAGE_SIZE); 388static int storvsc_ringbuffer_size = (128 * 1024);
389static u32 max_outstanding_req_per_channel; 389static u32 max_outstanding_req_per_channel;
390 390
391static int storvsc_vcpus_per_sub_channel = 4; 391static int storvsc_vcpus_per_sub_channel = 4;
@@ -668,13 +668,22 @@ static void handle_multichannel_storage(struct hv_device *device, int max_chns)
668{ 668{
669 struct device *dev = &device->device; 669 struct device *dev = &device->device;
670 struct storvsc_device *stor_device; 670 struct storvsc_device *stor_device;
671 int num_cpus = num_online_cpus();
672 int num_sc; 671 int num_sc;
673 struct storvsc_cmd_request *request; 672 struct storvsc_cmd_request *request;
674 struct vstor_packet *vstor_packet; 673 struct vstor_packet *vstor_packet;
675 int ret, t; 674 int ret, t;
676 675
677 num_sc = ((max_chns > num_cpus) ? num_cpus : max_chns); 676 /*
677 * If the number of CPUs is artificially restricted, such as
678 * with maxcpus=1 on the kernel boot line, Hyper-V could offer
679 * sub-channels >= the number of CPUs. These sub-channels
680 * should not be created. The primary channel is already created
681 * and assigned to one CPU, so check against # CPUs - 1.
682 */
683 num_sc = min((int)(num_online_cpus() - 1), max_chns);
684 if (!num_sc)
685 return;
686
678 stor_device = get_out_stor_device(device); 687 stor_device = get_out_stor_device(device);
679 if (!stor_device) 688 if (!stor_device)
680 return; 689 return;