diff options
author | James Bottomley <James.Bottomley@HansenPartnership.com> | 2017-03-29 10:10:30 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2017-03-29 10:10:30 -0400 |
commit | 0917ac4f5346d01cee1d568ff5dc0b99be02829e (patch) | |
tree | 6195542ea982d0ee813d4f7d0d33bad40dc4a1cc | |
parent | ca4a213db0b66513ba384d5f397fa60f1d0550d0 (diff) | |
parent | a3902ee98304324f681088203391b5c0353ce977 (diff) |
Merge remote-tracking branch 'mkp-scsi/4.11/scsi-fixes' into fixes
-rw-r--r-- | drivers/scsi/aacraid/commsup.c | 14 | ||||
-rw-r--r-- | drivers/scsi/device_handler/scsi_dh_alua.c | 38 | ||||
-rw-r--r-- | drivers/scsi/hpsa.c | 1 | ||||
-rw-r--r-- | drivers/scsi/libsas/sas_ata.c | 2 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_debugfs.h | 22 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_els.c | 3 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_nvmet.c | 4 | ||||
-rw-r--r-- | drivers/scsi/qedi/qedi_main.c | 1 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 3 | ||||
-rw-r--r-- | drivers/scsi/sg.c | 2 | ||||
-rw-r--r-- | drivers/scsi/ufs/ufshcd-pltfrm.c | 4 | ||||
-rw-r--r-- | drivers/scsi/ufs/ufshcd.c | 2 |
12 files changed, 57 insertions, 39 deletions
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index a3ad04293487..c8172f16cf33 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c | |||
@@ -2056,7 +2056,6 @@ static int fillup_pools(struct aac_dev *dev, struct hw_fib **hw_fib_pool, | |||
2056 | { | 2056 | { |
2057 | struct hw_fib **hw_fib_p; | 2057 | struct hw_fib **hw_fib_p; |
2058 | struct fib **fib_p; | 2058 | struct fib **fib_p; |
2059 | int rcode = 1; | ||
2060 | 2059 | ||
2061 | hw_fib_p = hw_fib_pool; | 2060 | hw_fib_p = hw_fib_pool; |
2062 | fib_p = fib_pool; | 2061 | fib_p = fib_pool; |
@@ -2074,11 +2073,11 @@ static int fillup_pools(struct aac_dev *dev, struct hw_fib **hw_fib_pool, | |||
2074 | } | 2073 | } |
2075 | } | 2074 | } |
2076 | 2075 | ||
2076 | /* | ||
2077 | * Get the actual number of allocated fibs | ||
2078 | */ | ||
2077 | num = hw_fib_p - hw_fib_pool; | 2079 | num = hw_fib_p - hw_fib_pool; |
2078 | if (!num) | 2080 | return num; |
2079 | rcode = 0; | ||
2080 | |||
2081 | return rcode; | ||
2082 | } | 2081 | } |
2083 | 2082 | ||
2084 | static void wakeup_fibctx_threads(struct aac_dev *dev, | 2083 | static void wakeup_fibctx_threads(struct aac_dev *dev, |
@@ -2186,7 +2185,6 @@ static void aac_process_events(struct aac_dev *dev) | |||
2186 | struct fib *fib; | 2185 | struct fib *fib; |
2187 | unsigned long flags; | 2186 | unsigned long flags; |
2188 | spinlock_t *t_lock; | 2187 | spinlock_t *t_lock; |
2189 | unsigned int rcode; | ||
2190 | 2188 | ||
2191 | t_lock = dev->queues->queue[HostNormCmdQueue].lock; | 2189 | t_lock = dev->queues->queue[HostNormCmdQueue].lock; |
2192 | spin_lock_irqsave(t_lock, flags); | 2190 | spin_lock_irqsave(t_lock, flags); |
@@ -2269,8 +2267,8 @@ static void aac_process_events(struct aac_dev *dev) | |||
2269 | * Fill up fib pointer pools with actual fibs | 2267 | * Fill up fib pointer pools with actual fibs |
2270 | * and hw_fibs | 2268 | * and hw_fibs |
2271 | */ | 2269 | */ |
2272 | rcode = fillup_pools(dev, hw_fib_pool, fib_pool, num); | 2270 | num = fillup_pools(dev, hw_fib_pool, fib_pool, num); |
2273 | if (!rcode) | 2271 | if (!num) |
2274 | goto free_mem; | 2272 | goto free_mem; |
2275 | 2273 | ||
2276 | /* | 2274 | /* |
diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c index 48e200102221..c01b47e5b55a 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c | |||
@@ -113,7 +113,7 @@ struct alua_queue_data { | |||
113 | #define ALUA_POLICY_SWITCH_ALL 1 | 113 | #define ALUA_POLICY_SWITCH_ALL 1 |
114 | 114 | ||
115 | static void alua_rtpg_work(struct work_struct *work); | 115 | static void alua_rtpg_work(struct work_struct *work); |
116 | static void alua_rtpg_queue(struct alua_port_group *pg, | 116 | static bool alua_rtpg_queue(struct alua_port_group *pg, |
117 | struct scsi_device *sdev, | 117 | struct scsi_device *sdev, |
118 | struct alua_queue_data *qdata, bool force); | 118 | struct alua_queue_data *qdata, bool force); |
119 | static void alua_check(struct scsi_device *sdev, bool force); | 119 | static void alua_check(struct scsi_device *sdev, bool force); |
@@ -862,7 +862,13 @@ static void alua_rtpg_work(struct work_struct *work) | |||
862 | kref_put(&pg->kref, release_port_group); | 862 | kref_put(&pg->kref, release_port_group); |
863 | } | 863 | } |
864 | 864 | ||
865 | static void alua_rtpg_queue(struct alua_port_group *pg, | 865 | /** |
866 | * alua_rtpg_queue() - cause RTPG to be submitted asynchronously | ||
867 | * | ||
868 | * Returns true if and only if alua_rtpg_work() will be called asynchronously. | ||
869 | * That function is responsible for calling @qdata->fn(). | ||
870 | */ | ||
871 | static bool alua_rtpg_queue(struct alua_port_group *pg, | ||
866 | struct scsi_device *sdev, | 872 | struct scsi_device *sdev, |
867 | struct alua_queue_data *qdata, bool force) | 873 | struct alua_queue_data *qdata, bool force) |
868 | { | 874 | { |
@@ -870,8 +876,8 @@ static void alua_rtpg_queue(struct alua_port_group *pg, | |||
870 | unsigned long flags; | 876 | unsigned long flags; |
871 | struct workqueue_struct *alua_wq = kaluad_wq; | 877 | struct workqueue_struct *alua_wq = kaluad_wq; |
872 | 878 | ||
873 | if (!pg) | 879 | if (WARN_ON_ONCE(!pg) || scsi_device_get(sdev)) |
874 | return; | 880 | return false; |
875 | 881 | ||
876 | spin_lock_irqsave(&pg->lock, flags); | 882 | spin_lock_irqsave(&pg->lock, flags); |
877 | if (qdata) { | 883 | if (qdata) { |
@@ -884,14 +890,12 @@ static void alua_rtpg_queue(struct alua_port_group *pg, | |||
884 | pg->flags |= ALUA_PG_RUN_RTPG; | 890 | pg->flags |= ALUA_PG_RUN_RTPG; |
885 | kref_get(&pg->kref); | 891 | kref_get(&pg->kref); |
886 | pg->rtpg_sdev = sdev; | 892 | pg->rtpg_sdev = sdev; |
887 | scsi_device_get(sdev); | ||
888 | start_queue = 1; | 893 | start_queue = 1; |
889 | } else if (!(pg->flags & ALUA_PG_RUN_RTPG) && force) { | 894 | } else if (!(pg->flags & ALUA_PG_RUN_RTPG) && force) { |
890 | pg->flags |= ALUA_PG_RUN_RTPG; | 895 | pg->flags |= ALUA_PG_RUN_RTPG; |
891 | /* Do not queue if the worker is already running */ | 896 | /* Do not queue if the worker is already running */ |
892 | if (!(pg->flags & ALUA_PG_RUNNING)) { | 897 | if (!(pg->flags & ALUA_PG_RUNNING)) { |
893 | kref_get(&pg->kref); | 898 | kref_get(&pg->kref); |
894 | sdev = NULL; | ||
895 | start_queue = 1; | 899 | start_queue = 1; |
896 | } | 900 | } |
897 | } | 901 | } |
@@ -900,13 +904,17 @@ static void alua_rtpg_queue(struct alua_port_group *pg, | |||
900 | alua_wq = kaluad_sync_wq; | 904 | alua_wq = kaluad_sync_wq; |
901 | spin_unlock_irqrestore(&pg->lock, flags); | 905 | spin_unlock_irqrestore(&pg->lock, flags); |
902 | 906 | ||
903 | if (start_queue && | 907 | if (start_queue) { |
904 | !queue_delayed_work(alua_wq, &pg->rtpg_work, | 908 | if (queue_delayed_work(alua_wq, &pg->rtpg_work, |
905 | msecs_to_jiffies(ALUA_RTPG_DELAY_MSECS))) { | 909 | msecs_to_jiffies(ALUA_RTPG_DELAY_MSECS))) |
906 | if (sdev) | 910 | sdev = NULL; |
907 | scsi_device_put(sdev); | 911 | else |
908 | kref_put(&pg->kref, release_port_group); | 912 | kref_put(&pg->kref, release_port_group); |
909 | } | 913 | } |
914 | if (sdev) | ||
915 | scsi_device_put(sdev); | ||
916 | |||
917 | return true; | ||
910 | } | 918 | } |
911 | 919 | ||
912 | /* | 920 | /* |
@@ -1007,11 +1015,13 @@ static int alua_activate(struct scsi_device *sdev, | |||
1007 | mutex_unlock(&h->init_mutex); | 1015 | mutex_unlock(&h->init_mutex); |
1008 | goto out; | 1016 | goto out; |
1009 | } | 1017 | } |
1010 | fn = NULL; | ||
1011 | rcu_read_unlock(); | 1018 | rcu_read_unlock(); |
1012 | mutex_unlock(&h->init_mutex); | 1019 | mutex_unlock(&h->init_mutex); |
1013 | 1020 | ||
1014 | alua_rtpg_queue(pg, sdev, qdata, true); | 1021 | if (alua_rtpg_queue(pg, sdev, qdata, true)) |
1022 | fn = NULL; | ||
1023 | else | ||
1024 | err = SCSI_DH_DEV_OFFLINED; | ||
1015 | kref_put(&pg->kref, release_port_group); | 1025 | kref_put(&pg->kref, release_port_group); |
1016 | out: | 1026 | out: |
1017 | if (fn) | 1027 | if (fn) |
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 0d0be7754a65..9d659aaace15 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c | |||
@@ -3885,6 +3885,7 @@ static int hpsa_update_device_info(struct ctlr_info *h, | |||
3885 | if (h->fw_support & MISC_FW_RAID_OFFLOAD_BASIC) | 3885 | if (h->fw_support & MISC_FW_RAID_OFFLOAD_BASIC) |
3886 | hpsa_get_ioaccel_status(h, scsi3addr, this_device); | 3886 | hpsa_get_ioaccel_status(h, scsi3addr, this_device); |
3887 | volume_offline = hpsa_volume_offline(h, scsi3addr); | 3887 | volume_offline = hpsa_volume_offline(h, scsi3addr); |
3888 | this_device->volume_offline = volume_offline; | ||
3888 | if (volume_offline == HPSA_LV_FAILED) { | 3889 | if (volume_offline == HPSA_LV_FAILED) { |
3889 | rc = HPSA_LV_FAILED; | 3890 | rc = HPSA_LV_FAILED; |
3890 | dev_err(&h->pdev->dev, | 3891 | dev_err(&h->pdev->dev, |
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index 763f012fdeca..87f5e694dbed 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c | |||
@@ -221,7 +221,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc) | |||
221 | task->num_scatter = qc->n_elem; | 221 | task->num_scatter = qc->n_elem; |
222 | } else { | 222 | } else { |
223 | for_each_sg(qc->sg, sg, qc->n_elem, si) | 223 | for_each_sg(qc->sg, sg, qc->n_elem, si) |
224 | xfer += sg->length; | 224 | xfer += sg_dma_len(sg); |
225 | 225 | ||
226 | task->total_xfer_len = xfer; | 226 | task->total_xfer_len = xfer; |
227 | task->num_scatter = si; | 227 | task->num_scatter = si; |
diff --git a/drivers/scsi/lpfc/lpfc_debugfs.h b/drivers/scsi/lpfc/lpfc_debugfs.h index c05f56c3023f..7b7d314af0e0 100644 --- a/drivers/scsi/lpfc/lpfc_debugfs.h +++ b/drivers/scsi/lpfc/lpfc_debugfs.h | |||
@@ -44,14 +44,6 @@ | |||
44 | /* hbqinfo output buffer size */ | 44 | /* hbqinfo output buffer size */ |
45 | #define LPFC_HBQINFO_SIZE 8192 | 45 | #define LPFC_HBQINFO_SIZE 8192 |
46 | 46 | ||
47 | enum { | ||
48 | DUMP_FCP, | ||
49 | DUMP_NVME, | ||
50 | DUMP_MBX, | ||
51 | DUMP_ELS, | ||
52 | DUMP_NVMELS, | ||
53 | }; | ||
54 | |||
55 | /* nvmestat output buffer size */ | 47 | /* nvmestat output buffer size */ |
56 | #define LPFC_NVMESTAT_SIZE 8192 | 48 | #define LPFC_NVMESTAT_SIZE 8192 |
57 | #define LPFC_NVMEKTIME_SIZE 8192 | 49 | #define LPFC_NVMEKTIME_SIZE 8192 |
@@ -283,8 +275,22 @@ struct lpfc_idiag { | |||
283 | struct lpfc_idiag_offset offset; | 275 | struct lpfc_idiag_offset offset; |
284 | void *ptr_private; | 276 | void *ptr_private; |
285 | }; | 277 | }; |
278 | |||
279 | #else | ||
280 | |||
281 | #define lpfc_nvmeio_data(phba, fmt, arg...) \ | ||
282 | no_printk(fmt, ##arg) | ||
283 | |||
286 | #endif | 284 | #endif |
287 | 285 | ||
286 | enum { | ||
287 | DUMP_FCP, | ||
288 | DUMP_NVME, | ||
289 | DUMP_MBX, | ||
290 | DUMP_ELS, | ||
291 | DUMP_NVMELS, | ||
292 | }; | ||
293 | |||
288 | /* Mask for discovery_trace */ | 294 | /* Mask for discovery_trace */ |
289 | #define LPFC_DISC_TRC_ELS_CMD 0x1 /* Trace ELS commands */ | 295 | #define LPFC_DISC_TRC_ELS_CMD 0x1 /* Trace ELS commands */ |
290 | #define LPFC_DISC_TRC_ELS_RSP 0x2 /* Trace ELS response */ | 296 | #define LPFC_DISC_TRC_ELS_RSP 0x2 /* Trace ELS response */ |
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index d9c61d030034..a5ca37e45fb6 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c | |||
@@ -7968,7 +7968,8 @@ lpfc_els_unsol_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, | |||
7968 | did, vport->port_state, ndlp->nlp_flag); | 7968 | did, vport->port_state, ndlp->nlp_flag); |
7969 | 7969 | ||
7970 | phba->fc_stat.elsRcvPRLI++; | 7970 | phba->fc_stat.elsRcvPRLI++; |
7971 | if (vport->port_state < LPFC_DISC_AUTH) { | 7971 | if ((vport->port_state < LPFC_DISC_AUTH) && |
7972 | (vport->fc_flag & FC_FABRIC)) { | ||
7972 | rjt_err = LSRJT_UNABLE_TPC; | 7973 | rjt_err = LSRJT_UNABLE_TPC; |
7973 | rjt_exp = LSEXP_NOTHING_MORE; | 7974 | rjt_exp = LSEXP_NOTHING_MORE; |
7974 | break; | 7975 | break; |
diff --git a/drivers/scsi/lpfc/lpfc_nvmet.c b/drivers/scsi/lpfc/lpfc_nvmet.c index 7ca868f394da..acba1b67e505 100644 --- a/drivers/scsi/lpfc/lpfc_nvmet.c +++ b/drivers/scsi/lpfc/lpfc_nvmet.c | |||
@@ -520,7 +520,7 @@ lpfc_nvmet_xmt_fcp_op(struct nvmet_fc_target_port *tgtport, | |||
520 | struct lpfc_hba *phba = ctxp->phba; | 520 | struct lpfc_hba *phba = ctxp->phba; |
521 | struct lpfc_iocbq *nvmewqeq; | 521 | struct lpfc_iocbq *nvmewqeq; |
522 | unsigned long iflags; | 522 | unsigned long iflags; |
523 | int rc, id; | 523 | int rc; |
524 | 524 | ||
525 | #ifdef CONFIG_SCSI_LPFC_DEBUG_FS | 525 | #ifdef CONFIG_SCSI_LPFC_DEBUG_FS |
526 | if (phba->ktime_on) { | 526 | if (phba->ktime_on) { |
@@ -530,7 +530,7 @@ lpfc_nvmet_xmt_fcp_op(struct nvmet_fc_target_port *tgtport, | |||
530 | ctxp->ts_nvme_data = ktime_get_ns(); | 530 | ctxp->ts_nvme_data = ktime_get_ns(); |
531 | } | 531 | } |
532 | if (phba->cpucheck_on & LPFC_CHECK_NVMET_IO) { | 532 | if (phba->cpucheck_on & LPFC_CHECK_NVMET_IO) { |
533 | id = smp_processor_id(); | 533 | int id = smp_processor_id(); |
534 | ctxp->cpu = id; | 534 | ctxp->cpu = id; |
535 | if (id < LPFC_CHECK_CPU_CNT) | 535 | if (id < LPFC_CHECK_CPU_CNT) |
536 | phba->cpucheck_xmt_io[id]++; | 536 | phba->cpucheck_xmt_io[id]++; |
diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c index 8e3d92807cb8..92775a8b74b1 100644 --- a/drivers/scsi/qedi/qedi_main.c +++ b/drivers/scsi/qedi/qedi_main.c | |||
@@ -2007,6 +2007,7 @@ static void qedi_remove(struct pci_dev *pdev) | |||
2007 | 2007 | ||
2008 | static struct pci_device_id qedi_pci_tbl[] = { | 2008 | static struct pci_device_id qedi_pci_tbl[] = { |
2009 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, 0x165E) }, | 2009 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, 0x165E) }, |
2010 | { PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, 0x8084) }, | ||
2010 | { 0 }, | 2011 | { 0 }, |
2011 | }; | 2012 | }; |
2012 | MODULE_DEVICE_TABLE(pci, qedi_pci_tbl); | 2013 | MODULE_DEVICE_TABLE(pci, qedi_pci_tbl); |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 1fed235a1b4a..f28d38e93439 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1651,7 +1651,8 @@ qla2x00_abort_all_cmds(scsi_qla_host_t *vha, int res) | |||
1651 | /* Don't abort commands in adapter during EEH | 1651 | /* Don't abort commands in adapter during EEH |
1652 | * recovery as it's not accessible/responding. | 1652 | * recovery as it's not accessible/responding. |
1653 | */ | 1653 | */ |
1654 | if (GET_CMD_SP(sp) && !ha->flags.eeh_busy) { | 1654 | if (GET_CMD_SP(sp) && !ha->flags.eeh_busy && |
1655 | (sp->type == SRB_SCSI_CMD)) { | ||
1655 | /* Get a reference to the sp and drop the lock. | 1656 | /* Get a reference to the sp and drop the lock. |
1656 | * The reference ensures this sp->done() call | 1657 | * The reference ensures this sp->done() call |
1657 | * - and not the call in qla2xxx_eh_abort() - | 1658 | * - and not the call in qla2xxx_eh_abort() - |
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index 29b86505f796..225abaad4d1c 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c | |||
@@ -996,6 +996,8 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg) | |||
996 | result = get_user(val, ip); | 996 | result = get_user(val, ip); |
997 | if (result) | 997 | if (result) |
998 | return result; | 998 | return result; |
999 | if (val > SG_MAX_CDB_SIZE) | ||
1000 | return -ENOMEM; | ||
999 | sfp->next_cmd_len = (val > 0) ? val : 0; | 1001 | sfp->next_cmd_len = (val > 0) ? val : 0; |
1000 | return 0; | 1002 | return 0; |
1001 | case SG_GET_VERSION_NUM: | 1003 | case SG_GET_VERSION_NUM: |
diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/scsi/ufs/ufshcd-pltfrm.c index a72a4ba78125..8e5e6c04c035 100644 --- a/drivers/scsi/ufs/ufshcd-pltfrm.c +++ b/drivers/scsi/ufs/ufshcd-pltfrm.c | |||
@@ -309,8 +309,8 @@ int ufshcd_pltfrm_init(struct platform_device *pdev, | |||
309 | 309 | ||
310 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 310 | mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
311 | mmio_base = devm_ioremap_resource(dev, mem_res); | 311 | mmio_base = devm_ioremap_resource(dev, mem_res); |
312 | if (IS_ERR(*(void **)&mmio_base)) { | 312 | if (IS_ERR(mmio_base)) { |
313 | err = PTR_ERR(*(void **)&mmio_base); | 313 | err = PTR_ERR(mmio_base); |
314 | goto out; | 314 | goto out; |
315 | } | 315 | } |
316 | 316 | ||
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index e8c26e6e6237..096e95b911bd 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c | |||
@@ -4662,8 +4662,6 @@ static void __ufshcd_transfer_req_compl(struct ufs_hba *hba, | |||
4662 | } | 4662 | } |
4663 | if (ufshcd_is_clkscaling_supported(hba)) | 4663 | if (ufshcd_is_clkscaling_supported(hba)) |
4664 | hba->clk_scaling.active_reqs--; | 4664 | hba->clk_scaling.active_reqs--; |
4665 | if (ufshcd_is_clkscaling_supported(hba)) | ||
4666 | hba->clk_scaling.active_reqs--; | ||
4667 | } | 4665 | } |
4668 | 4666 | ||
4669 | /* clear corresponding bits of completed commands */ | 4667 | /* clear corresponding bits of completed commands */ |