Re: [PATCH] megaraid_sas: silence a warning

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

 



On Sat, Feb 1, 2020 at 10:57 PM Lee Duncan <lduncan@xxxxxxxx> wrote:
>
> On 1/31/20 5:23 AM, Tomas Henzl wrote:
> > Add a flag to dma mem allocation to silence a warning.
> >
> > Signed-off-by: Tomas Henzl <thenzl@xxxxxxxxxx>
> > ---
> >  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)
> >  open-isns-updates.diff.bz2
> >               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) {
> >
>
> I'm fairly sure this is a good fix, but I'd appreciate more information
> in the comment, such as what warning was silenced, and why it's okay to
> silence it rather than "fix" it. I know from experience that, when
> choosing which commits to backport, more information is better than less.
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.

Thanks,
Sumit
>
> --
> Lee Duncan



[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