RE: [PATCH V4 04/11] megaraid_sas: SAS3.5 Generic Megaraid Controllers Stream Detection and IO Coalescing
Hi Tomas, Please see my response inline Thanks sasi -Original Message- From: Tomas Henzl [mailto:the...@redhat.com] Sent: Monday, December 12, 2016 11:39 AM To: Sasikumar Chandrasekaran; j...@kernel.org; h...@infradead.org Cc: linux-scsi@vger.kernel.org; sathya.prak...@broadcom.com; linux-ker...@vger.kernel.org; christopher.ow...@broadcom.com; kiran-kumar.kast...@broadcom.com Subject: Re: [PATCH V4 04/11] megaraid_sas: SAS3.5 Generic Megaraid Controllers Stream Detection and IO Coalescing On 7.12.2016 00:00, Sasikumar Chandrasekaran wrote: > Detect sequential IO streams and pass those IOs directly to FW. > > This patch is depending on patch 3 > > Signed-off-by: Sasikumar Chandrasekaran <sasikumar...@broadcom.com> > --- > drivers/scsi/megaraid/megaraid_sas.h| 5 +- > drivers/scsi/megaraid/megaraid_sas_base.c | 43 +++- > drivers/scsi/megaraid/megaraid_sas_fp.c | 2 + > drivers/scsi/megaraid/megaraid_sas_fusion.c | 164 > +++- > drivers/scsi/megaraid/megaraid_sas_fusion.h | 117 +++- > 5 files changed, 298 insertions(+), 33 deletions(-) > > diff --git a/drivers/scsi/megaraid/megaraid_sas.h > b/drivers/scsi/megaraid/megaraid_sas.h > index 9d4ca8d..d07b3e1 100644 > --- a/drivers/scsi/megaraid/megaraid_sas.h > +++ b/drivers/scsi/megaraid/megaraid_sas.h > @@ -105,7 +105,7 @@ > */ > > /* > - * MFI stands for MegaRAID SAS FW Interface. This is just a moniker > for > + * MFI stands for MegaRAID SAS FW Interface. This is just a moniker > + for > * protocol between the software and firmware. Commands are issued using > * "message frames" > */ > @@ -1440,7 +1440,7 @@ enum FW_BOOT_CONTEXT { > * register set for both 1068 and 1078 controllers > * structure extended for 1078 registers */ > - > + > struct megasas_register_set { > u32 doorbell; /*h*/ > u32 fusion_seq_offset; /*0004h*/ > @@ -2070,6 +2070,7 @@ struct megasas_instance { > /* used to sync fire the cmd to fw */ > spinlock_t hba_lock; > /* used to synch producer, consumer ptrs in dpc */ > + spinlock_t stream_lock; > spinlock_t completion_lock; > struct dma_pool *frame_dma_pool; > struct dma_pool *sense_dma_pool; > diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c > b/drivers/scsi/megaraid/megaraid_sas_base.c > index c583e0b..c52f7be 100644 > --- a/drivers/scsi/megaraid/megaraid_sas_base.c > +++ b/drivers/scsi/megaraid/megaraid_sas_base.c > @@ -5015,7 +5015,7 @@ static int megasas_init_fw(struct megasas_instance > *instance) > struct megasas_register_set __iomem *reg_set; > struct megasas_ctrl_info *ctrl_info = NULL; > unsigned long bar_list; > - int i, loop, fw_msix_count = 0; > + int i, j, loop, fw_msix_count = 0; > struct IOV_111 *iovPtr; > struct fusion_context *fusion; > > @@ -5202,6 +5202,36 @@ static int megasas_init_fw(struct megasas_instance > *instance) > } > > memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS); > + > + /* stream detection initialization */ > + if (instance->is_ventura) { > + fusion->stream_detect_by_ld = > + kzalloc(sizeof(struct LD_STREAM_DETECT *) > + * MAX_LOGICAL_DRIVES_EXT, > + GFP_KERNEL); > + if (!fusion->stream_detect_by_ld) { > + dev_err(>pdev->dev, > + "unable to allocate stream detection > for pool of LDs\n"); > + goto fail_get_ld_pd_list; > + } > + for (i = 0; i < MAX_LOGICAL_DRIVES_EXT; ++i) { > + fusion->stream_detect_by_ld[i] = > + kmalloc(sizeof(struct LD_STREAM_DETECT), > + GFP_KERNEL); > + if (!fusion->stream_detect_by_ld[i]) { > + dev_err(>pdev->dev, > + "unable to allocate stream detect by > LD\n "); > + for (j = 0; j < i; ++j) > + kfree(fusion->stream_detect_by_ld[j]); > + kfree(fusion->stream_detect_by_ld); > + fusion->stream_detect_by_ld = NULL; > + goto fail_get_ld_pd_list; > + } > + fusion->stream_detect_by_ld[i]->mru_bit_map > + = MR_STREAM_BITMAP; > + } > + } > + > if (megasas_ld_list_query(instance, >
Re: [PATCH V4 04/11] megaraid_sas: SAS3.5 Generic Megaraid Controllers Stream Detection and IO Coalescing
On 7.12.2016 00:00, Sasikumar Chandrasekaran wrote: > Detect sequential IO streams and pass those IOs directly to FW. > > This patch is depending on patch 3 > > Signed-off-by: Sasikumar Chandrasekaran> --- > drivers/scsi/megaraid/megaraid_sas.h| 5 +- > drivers/scsi/megaraid/megaraid_sas_base.c | 43 +++- > drivers/scsi/megaraid/megaraid_sas_fp.c | 2 + > drivers/scsi/megaraid/megaraid_sas_fusion.c | 164 > +++- > drivers/scsi/megaraid/megaraid_sas_fusion.h | 117 +++- > 5 files changed, 298 insertions(+), 33 deletions(-) > > diff --git a/drivers/scsi/megaraid/megaraid_sas.h > b/drivers/scsi/megaraid/megaraid_sas.h > index 9d4ca8d..d07b3e1 100644 > --- a/drivers/scsi/megaraid/megaraid_sas.h > +++ b/drivers/scsi/megaraid/megaraid_sas.h > @@ -105,7 +105,7 @@ > */ > > /* > - * MFI stands for MegaRAID SAS FW Interface. This is just a moniker for > + * MFI stands for MegaRAID SAS FW Interface. This is just a moniker for > * protocol between the software and firmware. Commands are issued using > * "message frames" > */ > @@ -1440,7 +1440,7 @@ enum FW_BOOT_CONTEXT { > * register set for both 1068 and 1078 controllers > * structure extended for 1078 registers > */ > - > + > struct megasas_register_set { > u32 doorbell; /*h*/ > u32 fusion_seq_offset; /*0004h*/ > @@ -2070,6 +2070,7 @@ struct megasas_instance { > /* used to sync fire the cmd to fw */ > spinlock_t hba_lock; > /* used to synch producer, consumer ptrs in dpc */ > + spinlock_t stream_lock; > spinlock_t completion_lock; > struct dma_pool *frame_dma_pool; > struct dma_pool *sense_dma_pool; > diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c > b/drivers/scsi/megaraid/megaraid_sas_base.c > index c583e0b..c52f7be 100644 > --- a/drivers/scsi/megaraid/megaraid_sas_base.c > +++ b/drivers/scsi/megaraid/megaraid_sas_base.c > @@ -5015,7 +5015,7 @@ static int megasas_init_fw(struct megasas_instance > *instance) > struct megasas_register_set __iomem *reg_set; > struct megasas_ctrl_info *ctrl_info = NULL; > unsigned long bar_list; > - int i, loop, fw_msix_count = 0; > + int i, j, loop, fw_msix_count = 0; > struct IOV_111 *iovPtr; > struct fusion_context *fusion; > > @@ -5202,6 +5202,36 @@ static int megasas_init_fw(struct megasas_instance > *instance) > } > > memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS); > + > + /* stream detection initialization */ > + if (instance->is_ventura) { > + fusion->stream_detect_by_ld = > + kzalloc(sizeof(struct LD_STREAM_DETECT *) > + * MAX_LOGICAL_DRIVES_EXT, > + GFP_KERNEL); > + if (!fusion->stream_detect_by_ld) { > + dev_err(>pdev->dev, > + "unable to allocate stream detection > for pool of LDs\n"); > + goto fail_get_ld_pd_list; > + } > + for (i = 0; i < MAX_LOGICAL_DRIVES_EXT; ++i) { > + fusion->stream_detect_by_ld[i] = > + kmalloc(sizeof(struct LD_STREAM_DETECT), > + GFP_KERNEL); > + if (!fusion->stream_detect_by_ld[i]) { > + dev_err(>pdev->dev, > + "unable to allocate stream detect by > LD\n "); > + for (j = 0; j < i; ++j) > + kfree(fusion->stream_detect_by_ld[j]); > + kfree(fusion->stream_detect_by_ld); > + fusion->stream_detect_by_ld = NULL; > + goto fail_get_ld_pd_list; > + } > + fusion->stream_detect_by_ld[i]->mru_bit_map > + = MR_STREAM_BITMAP; > + } > + } > + > if (megasas_ld_list_query(instance, > MR_LD_QUERY_TYPE_EXPOSED_TO_HOST)) > megasas_get_ld_list(instance); > @@ -5321,6 +5351,8 @@ static int megasas_init_fw(struct megasas_instance > *instance) > > return 0; > > +fail_get_ld_pd_list: > + instance->instancet->disable_intr(instance); > fail_get_pd_list: > instance->instancet->disable_intr(instance); > megasas_destroy_irqs(instance); > @@ -5854,6 +5886,7 @@ static int megasas_probe_one(struct pci_dev *pdev, > > spin_lock_init(>mfi_pool_lock); > spin_lock_init(>hba_lock); > + spin_lock_init(>stream_lock); > spin_lock_init(>completion_lock); > > mutex_init(>reset_mutex); > @@ -6354,6 +6387,14 @@ static void megasas_detach_one(struct pci_dev *pdev) > if (instance->msix_vectors) > pci_disable_msix(instance->pdev); > > + if (instance->is_ventura) { > +
Re: [PATCH V4 04/11] megaraid_sas: SAS3.5 Generic Megaraid Controllers Stream Detection and IO Coalescing
On 7.12.2016 00:00, Sasikumar Chandrasekaran wrote: > Detect sequential IO streams and pass those IOs directly to FW. > > This patch is depending on patch 3 > > Signed-off-by: Sasikumar ChandrasekaranIndentation in megasas_stream_detect is wrong on several places, but ok for now. Reviewed-by: Tomas Henzl Tomas -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 04/11] megaraid_sas: SAS3.5 Generic Megaraid Controllers Stream Detection and IO Coalescing (fwd)
The code on lines 1744 and 1749 seems to need to be indented more. 1744 should be lined up with the inside of the first ( and the comment and the continue should be indented. julia -- Forwarded message -- Date: Wed, 7 Dec 2016 12:14:15 +0800 From: kbuild test robot <fengguang...@intel.com> To: kbu...@01.org Cc: Julia Lawall <julia.law...@lip6.fr> Subject: Re: [PATCH V4 04/11] megaraid_sas: SAS3.5 Generic Megaraid Controllers Stream Detection and IO Coalescing In-Reply-To: <1481065220-18431-5-git-send-email-sasikumar...@broadcom.com> Hi Sasikumar, [auto build test WARNING on scsi/for-next] [also build test WARNING on next-20161206] [cannot apply to v4.9-rc8] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Sasikumar-Chandrasekaran/megaraid_sas-Updates-for-scsi-next/20161207-102153 base: https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next :: branch date: 2 hours ago :: commit date: 2 hours ago >> drivers/scsi/megaraid/megaraid_sas_fusion.c:1749:3-12: code aligned with >> following code on line 1750 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout c919127dc789eec06ff5e34e06ebb05ef30dbb5e vim +1749 drivers/scsi/megaraid/megaraid_sas_fusion.c c919127d Sasikumar Chandrasekaran 2016-12-06 1743 if ((io_info->ldStartBlock != current_sd->next_seq_lba) && c919127d Sasikumar Chandrasekaran 2016-12-06 1744 ((!io_info->isRead) || (!is_read_ahead))) c919127d Sasikumar Chandrasekaran 2016-12-06 1745 /* c919127d Sasikumar Chandrasekaran 2016-12-06 1746 * Once the API availible we need to change this. c919127d Sasikumar Chandrasekaran 2016-12-06 1747 * At this point we are not allowing any gap c919127d Sasikumar Chandrasekaran 2016-12-06 1748 */ c919127d Sasikumar Chandrasekaran 2016-12-06 @1749 continue; c919127d Sasikumar Chandrasekaran 2016-12-06 @1750 cmd->io_request->RaidContext.raid_context_g35.stream_detected c919127d Sasikumar Chandrasekaran 2016-12-06 1751 = true; c919127d Sasikumar Chandrasekaran 2016-12-06 1752 current_sd->next_seq_lba = c919127d Sasikumar Chandrasekaran 2016-12-06 1753 io_info->ldStartBlock + io_info->numBlocks; --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html