From d089ef2e02f94c5ea5bc45eae0046c10a242adb9 Mon Sep 17 00:00:00 2001 From: Pooja Kumari Date: Wed, 31 Jul 2019 15:20:19 +0530 Subject: [PATCH] sm: ipa3: Fix to memory allocation failure During device reboot when IPA is going for shutdown, the allocation for memory request fails. Add change in IPA to not sleep while memory allocation. Bug: 136455750 Test: Run Monkey/AUPT test Change-Id: I0bdbf0f622770566ad1135c76f6edc2790285420 Signed-off-by: Pooja Kumari --- drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_fltrt.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_fltrt.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_fltrt.c index bbc31505c3ce..93c9291d67ff 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_fltrt.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_fltrt.c @@ -3485,6 +3485,7 @@ bdy_alloc_fail: int ipahal_fltrt_allocate_hw_sys_tbl(struct ipa_mem_buffer *tbl_mem) { struct ipahal_fltrt_obj *obj; + gfp_t flag = GFP_KERNEL; IPAHAL_DBG_LOW("Entry\n"); @@ -3502,10 +3503,14 @@ int ipahal_fltrt_allocate_hw_sys_tbl(struct ipa_mem_buffer *tbl_mem) /* add word for rule-set terminator */ tbl_mem->size += obj->tbl_width; - +alloc: tbl_mem->base = dma_alloc_coherent(ipahal_ctx->ipa_pdev, tbl_mem->size, - &tbl_mem->phys_base, GFP_KERNEL); + &tbl_mem->phys_base, flag); if (!tbl_mem->base) { + if (flag == GFP_KERNEL) { + flag = GFP_ATOMIC; + goto alloc; + } IPAHAL_ERR("fail to alloc DMA buf of size %d\n", tbl_mem->size); return -ENOMEM;