Re: [PATCH V3 1/6] pm80xx : Increase request sg length.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 16, 2020 at 8:39 AM Deepak Ukey <deepak.ukey@xxxxxxxxxxxxx> wrote:
>
> From: Peter Chang <dpf@xxxxxxxxxx>
>
> Increasing the per-request size maximum (max_sectors_kb) runs into
> the per-device dma scatter gather list limit (max_segments) for
> users of the io vector system calls (eg, readv and writev). This is
> because the kernel combines io vectors into dma segments when
> possible, but it doesn't work for our user because the vectors in the
> buffer cache get scrambled.
> This change bumps the advertised max scatter gather length to 528 to
> cover 2M w/ x86's 4k pages and some extra for the user checksum.
> It trims the size of some of the tables we don't care about and
> exposes all of the command slots upstream to the scsi layer.
> Also reduced the PM8001_MAX_CCB to 256 as pm8001 driver has memory
> limit depend on machine capability. If we increase the sg length,
> we need to trade-off it by decreasing PM8001_MAX_CCB.
> PM8001_MAX_CCB = 256 does not have any influence on normal use
>
> Signed-off-by: Peter Chang <dpf@xxxxxxxxxx>
> Signed-off-by: Deepak Ukey <deepak.ukey@xxxxxxxxxxxxx>
> Signed-off-by: Viswas G <Viswas.G@xxxxxxxxxxxxx>
> Signed-off-by: Radha Ramachandran <radha@xxxxxxxxxx>
> Reported-by: kbuild test robot <lkp@xxxxxxxxx>
Acked-by: Jack Wang <jinpu.wang@xxxxxxxxxxxxxxx>
Thanks!
> ---
>  drivers/scsi/pm8001/pm8001_defs.h | 5 +++--
>  drivers/scsi/pm8001/pm8001_init.c | 2 +-
>  2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/scsi/pm8001/pm8001_defs.h b/drivers/scsi/pm8001/pm8001_defs.h
> index 48e0624ecc68..1c7f15fd69ce 100644
> --- a/drivers/scsi/pm8001/pm8001_defs.h
> +++ b/drivers/scsi/pm8001/pm8001_defs.h
> @@ -75,7 +75,7 @@ enum port_type {
>  };
>
>  /* driver compile-time configuration */
> -#define        PM8001_MAX_CCB           512    /* max ccbs supported */
> +#define        PM8001_MAX_CCB           256    /* max ccbs supported */
>  #define PM8001_MPI_QUEUE         1024   /* maximum mpi queue entries */
>  #define        PM8001_MAX_INB_NUM       1
>  #define        PM8001_MAX_OUTB_NUM      1
> @@ -99,7 +99,8 @@ enum port_type {
>  #define OB                     (CI + PM8001_MAX_SPCV_INB_NUM)
>  #define PI                     (OB + PM8001_MAX_SPCV_OUTB_NUM)
>  #define USI_MAX_MEMCNT         (PI + PM8001_MAX_SPCV_OUTB_NUM)
> -#define PM8001_MAX_DMA_SG      SG_ALL
> +#define        CONFIG_SCSI_PM8001_MAX_DMA_SG   528
> +#define PM8001_MAX_DMA_SG      CONFIG_SCSI_PM8001_MAX_DMA_SG
>  enum memory_region_num {
>         AAP1 = 0x0, /* application acceleration processor */
>         IOP,        /* IO processor */
> diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
> index ff618ad80ebd..3f1e755c52c6 100644
> --- a/drivers/scsi/pm8001/pm8001_init.c
> +++ b/drivers/scsi/pm8001/pm8001_init.c
> @@ -95,7 +95,7 @@ static struct scsi_host_template pm8001_sht = {
>         .bios_param             = sas_bios_param,
>         .can_queue              = 1,
>         .this_id                = -1,
> -       .sg_tablesize           = SG_ALL,
> +       .sg_tablesize           = PM8001_MAX_DMA_SG,
>         .max_sectors            = SCSI_DEFAULT_MAX_SECTORS,
>         .eh_device_reset_handler = sas_eh_device_reset_handler,
>         .eh_target_reset_handler = sas_eh_target_reset_handler,
> --
> 2.16.3
>



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux