Re: [PATCH V2] megaraid_sas: silence a warning

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

 



On Tue, Feb 4, 2020 at 8:54 PM Tomas Henzl <thenzl@xxxxxxxxxx> wrote:
>
> Add a flag to dma mem allocation to silence a warning.
>
> This code allocates DMA memory for driver's IO frames which may exceed
> MAX_ORDER pages for few megaraid_sas controllers(controllers
> with High Queue Depth). So there is logic to keep on reducing controller
> Queue Depth until DMA memory required for IO frames fits within
> MAX_ORDER. So or impacted megaraid_sas controllers,
> there would be multiple DMA allocation failure until driver settles
> down to Controller Queue Depth which has memory requirement
> within MAX_ORDER. These failed DMA allocation requests causes stack
> traces in system logs which is not harmful and this patch
> would silence those warnings/stack traces.
>
> With CMA (Contiguous Memory Allocator) enabled, it's possible  to
> allocate DMA memory exceeding MAX_ORDER.
> And that is the reason of keeping this retry logic with less
> controller Queue Depth instead of calculating controller Queue depth
> at first hand which has memory requirement less than MAX_ORDER.
>
> Signed-off-by: Tomas Henzl <thenzl@xxxxxxxxxx>

Acked-by: Sumit Saxena <sumit.saxena@xxxxxxxxxxxx>

> ---
> V2: A change in the description, additional information is added,
> kindly written by Sumit.
>
>  drivers/scsi/megaraid/megaraid_sas_fusion.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
> index 0f5399b3e..1fa2d1449 100644
> --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
> +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
> @@ -606,7 +606,8 @@ megasas_alloc_request_fusion(struct megasas_instance *instance)
>
>         fusion->io_request_frames =
>                         dma_pool_alloc(fusion->io_request_frames_pool,
> -                               GFP_KERNEL, &fusion->io_request_frames_phys);
> +                               GFP_KERNEL | __GFP_NOWARN,
> +                               &fusion->io_request_frames_phys);
>         if (!fusion->io_request_frames) {
>                 if (instance->max_fw_cmds >= (MEGASAS_REDUCE_QD_COUNT * 2)) {
>                         instance->max_fw_cmds -= MEGASAS_REDUCE_QD_COUNT;
> @@ -644,7 +645,7 @@ megasas_alloc_request_fusion(struct megasas_instance *instance)
>
>                 fusion->io_request_frames =
>                         dma_pool_alloc(fusion->io_request_frames_pool,
> -                                      GFP_KERNEL,
> +                                      GFP_KERNEL | __GFP_NOWARN,
>                                        &fusion->io_request_frames_phys);
>
>                 if (!fusion->io_request_frames) {
> --
> 2.21.1
>



[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