On 2/4/20 7:24 AM, Tomas Henzl 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> > --- > 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) { > Reviewed-by: Lee Duncan <lduncan@xxxxxxxx>