summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammed Javid <mjavid@codeaurora.org>2017-11-02 19:10:22 +0530
committerMohammed Javid <mjavid@codeaurora.org>2017-11-02 19:10:22 +0530
commit34db235e958cfce2e445bc63c4ef62b1526eceef (patch)
treec78fde7ec6b00c5f71b390678ea991af10f7ce26
parent502914e130709bfaf33ab1411b712290ccef19ca (diff)
msm: ipa: Fix to use GFP_DMA flag
IPAv2 hardware works with 32 bit addressing, so allocate a kernel memory using GFP_DMA flag which is processed by IPA hardware. Change-Id: I6f35e7f2179dc48f718221f6a3d228aca67c4154 Acked-by: Ashok Vuyyuru <avuyyuru@qti.qualcomm.com> Signed-off-by: Mohammed Javid <mjavid@codeaurora.org>
-rw-r--r--drivers/platform/msm/ipa/ipa_v2/ipa.c5
-rw-r--r--drivers/platform/msm/ipa/ipa_v2/ipa_utils.c8
2 files changed, 7 insertions, 6 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa.c b/drivers/platform/msm/ipa/ipa_v2/ipa.c
index 85fa9da50779..8ef3b06f03d2 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa.c
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa.c
@@ -1979,6 +1979,7 @@ static int ipa_q6_set_ex_path_dis_agg(void)
int index;
struct ipa_register_write *reg_write;
int retval;
+ gfp_t flag = GFP_KERNEL | (ipa_ctx->use_dma_zone ? GFP_DMA : 0);
desc = kcalloc(ipa_ctx->ipa_num_pipes, sizeof(struct ipa_desc),
GFP_KERNEL);
@@ -1996,7 +1997,7 @@ static int ipa_q6_set_ex_path_dis_agg(void)
if (ipa_ctx->ep[ep_idx].valid &&
ipa_ctx->ep[ep_idx].skip_ep_cfg) {
BUG_ON(num_descs >= ipa_ctx->ipa_num_pipes);
- reg_write = kzalloc(sizeof(*reg_write), GFP_KERNEL);
+ reg_write = kzalloc(sizeof(*reg_write), flag);
if (!reg_write) {
IPAERR("failed to allocate memory\n");
@@ -2029,7 +2030,7 @@ static int ipa_q6_set_ex_path_dis_agg(void)
continue;
if (IPA_CLIENT_IS_Q6_NON_ZIP_CONS(client_idx) ||
IPA_CLIENT_IS_Q6_ZIP_CONS(client_idx)) {
- reg_write = kzalloc(sizeof(*reg_write), GFP_KERNEL);
+ reg_write = kzalloc(sizeof(*reg_write), flag);
if (!reg_write) {
IPAERR("failed to allocate memory\n");
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_utils.c b/drivers/platform/msm/ipa/ipa_v2/ipa_utils.c
index 50a8e46d3b12..bd0c338dc2ff 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_utils.c
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_utils.c
@@ -4538,7 +4538,7 @@ int ipa_tag_process(struct ipa_desc desc[],
}
/* IP_PACKET_INIT IC for tag status to be sent to apps */
- pkt_init = kzalloc(sizeof(*pkt_init), GFP_KERNEL);
+ pkt_init = kzalloc(sizeof(*pkt_init), flag);
if (!pkt_init) {
IPAERR("failed to allocate memory\n");
res = -ENOMEM;
@@ -4557,7 +4557,7 @@ int ipa_tag_process(struct ipa_desc desc[],
desc_idx++;
/* NO-OP IC for ensuring that IPA pipeline is empty */
- reg_write_nop = kzalloc(sizeof(*reg_write_nop), GFP_KERNEL);
+ reg_write_nop = kzalloc(sizeof(*reg_write_nop), flag);
if (!reg_write_nop) {
IPAERR("no mem\n");
res = -ENOMEM;
@@ -4576,7 +4576,7 @@ int ipa_tag_process(struct ipa_desc desc[],
desc_idx++;
/* status IC */
- status = kzalloc(sizeof(*status), GFP_KERNEL);
+ status = kzalloc(sizeof(*status), flag);
if (!status) {
IPAERR("no mem\n");
res = -ENOMEM;
@@ -4612,7 +4612,7 @@ int ipa_tag_process(struct ipa_desc desc[],
atomic_set(&comp->cnt, 2);
/* dummy packet to send to IPA. packet payload is a completion object */
- dummy_skb = alloc_skb(sizeof(comp), GFP_KERNEL);
+ dummy_skb = alloc_skb(sizeof(comp), flag);
if (!dummy_skb) {
IPAERR("failed to allocate memory\n");
res = -ENOMEM;