| From 192cf7116e6107ff7f7e842ef1aecf8916e6ff2d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 4 Feb 2020 16:24:13 +0100 |
| Subject: scsi: megaraid_sas: silence a warning |
| |
| From: Tomas Henzl <thenzl@redhat.com> |
| |
| [ Upstream commit 0e99b2c625da181aebf1a3d13493e3f7a5057a9c ] |
| |
| Add a flag to DMA memory allocation to silence a warning. |
| |
| This driver allocates DMA memory for IO frames. This allocation may exceed |
| MAX_ORDER pages for few megaraid_sas controllers (controllers with very |
| high queue depth). Consequently, the driver has logic to keep reducing the |
| controller queue depth until the DMA memory allocation succeeds. |
| |
| On impacted megaraid_sas controllers there would be multiple DMA allocation |
| failures until driver settled on an allocation that fit. These failed DMA |
| allocation requests caused stack traces in system logs. These were not |
| harmful and this patch silences those warnings/stack traces. |
| |
| [mkp: clarified commit desc] |
| |
| Link: https://lore.kernel.org/r/20200204152413.7107-1-thenzl@redhat.com |
| Signed-off-by: Tomas Henzl <thenzl@redhat.com> |
| Acked-by: Sumit Saxena <sumit.saxena@broadcom.com> |
| Reviewed-by: Lee Duncan <lduncan@suse.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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 46bc062d873ef..d868388018053 100644 |
| --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c |
| +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c |
| @@ -594,7 +594,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; |
| @@ -632,7 +633,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.20.1 |
| |