Loading drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c +17 −9 Original line number Original line Diff line number Diff line Loading @@ -326,7 +326,7 @@ static int __ipa_add_hdr_proc_ctx(struct ipa_hdr_proc_ctx_add *proc_ctx, int needed_len; int needed_len; int mem_size; int mem_size; IPADBG_LOW("processing type %d hdr_hdl %d\n", IPADBG_LOW("Add processing type %d hdr_hdl %d\n", proc_ctx->type, proc_ctx->hdr_hdl); proc_ctx->type, proc_ctx->hdr_hdl); if (!HDR_PROC_TYPE_IS_VALID(proc_ctx->type)) { if (!HDR_PROC_TYPE_IS_VALID(proc_ctx->type)) { Loading @@ -335,10 +335,17 @@ static int __ipa_add_hdr_proc_ctx(struct ipa_hdr_proc_ctx_add *proc_ctx, } } hdr_entry = ipa3_id_find(proc_ctx->hdr_hdl); hdr_entry = ipa3_id_find(proc_ctx->hdr_hdl); if (!hdr_entry || (hdr_entry->cookie != IPA_COOKIE)) { if (!hdr_entry) { IPAERR("hdr_hdl is invalid\n"); IPAERR("hdr_hdl is invalid\n"); return -EINVAL; return -EINVAL; } } if (hdr_entry->cookie != IPA_COOKIE) { IPAERR("Invalid header cookie %u\n", hdr_entry->cookie); WARN_ON(1); return -EINVAL; } IPADBG("Associated header is name=%s is_hdr_proc_ctx=%d\n", hdr_entry->name, hdr_entry->is_hdr_proc_ctx); entry = kmem_cache_zalloc(ipa3_ctx->hdr_proc_ctx_cache, GFP_KERNEL); entry = kmem_cache_zalloc(ipa3_ctx->hdr_proc_ctx_cache, GFP_KERNEL); if (!entry) { if (!entry) { Loading Loading @@ -403,7 +410,7 @@ static int __ipa_add_hdr_proc_ctx(struct ipa_hdr_proc_ctx_add *proc_ctx, entry->offset_entry = offset; entry->offset_entry = offset; list_add(&entry->link, &htbl->head_proc_ctx_entry_list); list_add(&entry->link, &htbl->head_proc_ctx_entry_list); htbl->proc_ctx_cnt++; htbl->proc_ctx_cnt++; IPADBG_LOW("add proc ctx of sz=%d cnt=%d ofst=%d\n", needed_len, IPADBG("add proc ctx of sz=%d cnt=%d ofst=%d\n", needed_len, htbl->proc_ctx_cnt, offset->offset); htbl->proc_ctx_cnt, offset->offset); id = ipa3_id_alloc(entry); id = ipa3_id_alloc(entry); Loading Loading @@ -520,12 +527,12 @@ static int __ipa_add_hdr(struct ipa_hdr_add *hdr) list_add(&entry->link, &htbl->head_hdr_entry_list); list_add(&entry->link, &htbl->head_hdr_entry_list); htbl->hdr_cnt++; htbl->hdr_cnt++; if (entry->is_hdr_proc_ctx) if (entry->is_hdr_proc_ctx) IPADBG_LOW("add hdr of sz=%d hdr_cnt=%d phys_base=%pa\n", IPADBG("add hdr of sz=%d hdr_cnt=%d phys_base=%pa\n", hdr->hdr_len, hdr->hdr_len, htbl->hdr_cnt, htbl->hdr_cnt, &entry->phys_base); &entry->phys_base); else else IPADBG_LOW("add hdr of sz=%d hdr_cnt=%d ofst=%d\n", IPADBG("add hdr of sz=%d hdr_cnt=%d ofst=%d\n", hdr->hdr_len, hdr->hdr_len, htbl->hdr_cnt, htbl->hdr_cnt, entry->offset_entry->offset); entry->offset_entry->offset); Loading Loading @@ -580,7 +587,7 @@ static int __ipa3_del_hdr_proc_ctx(u32 proc_ctx_hdl, bool release_hdr) return -EINVAL; return -EINVAL; } } IPADBG("del ctx proc cnt=%d ofst=%d\n", IPADBG("del proc ctx cnt=%d ofst=%d\n", htbl->proc_ctx_cnt, entry->offset_entry->offset); htbl->proc_ctx_cnt, entry->offset_entry->offset); if (--entry->ref_cnt) { if (--entry->ref_cnt) { Loading Loading @@ -624,11 +631,12 @@ int __ipa3_del_hdr(u32 hdr_hdl) } } if (entry->is_hdr_proc_ctx) if (entry->is_hdr_proc_ctx) IPADBG("del hdr of sz=%d hdr_cnt=%d phys_base=%pa\n", IPADBG("del hdr of len=%d hdr_cnt=%d phys_base=%pa\n", entry->hdr_len, htbl->hdr_cnt, &entry->phys_base); entry->hdr_len, htbl->hdr_cnt, &entry->phys_base); else else IPADBG("del hdr of sz=%d hdr_cnt=%d ofst=%d\n", entry->hdr_len, IPADBG("del hdr of len=%d hdr_cnt=%d ofst=%d\n", htbl->hdr_cnt, entry->offset_entry->offset); entry->hdr_len, htbl->hdr_cnt, entry->offset_entry->offset); if (--entry->ref_cnt) { if (--entry->ref_cnt) { IPADBG("hdr_hdl %x ref_cnt %d\n", hdr_hdl, entry->ref_cnt); IPADBG("hdr_hdl %x ref_cnt %d\n", hdr_hdl, entry->ref_cnt); Loading drivers/platform/msm/ipa/ipa_v3/ipa_rt.c +5 −2 Original line number Original line Diff line number Diff line Loading @@ -1210,8 +1210,9 @@ int __ipa3_del_rt_rule(u32 rule_hdl) __ipa3_release_hdr_proc_ctx(entry->proc_ctx->id); __ipa3_release_hdr_proc_ctx(entry->proc_ctx->id); list_del(&entry->link); list_del(&entry->link); entry->tbl->rule_cnt--; entry->tbl->rule_cnt--; IPADBG("del rt rule tbl_idx=%d rule_cnt=%d rule_id=%d\n", IPADBG("del rt rule tbl_idx=%d rule_cnt=%d rule_id=%d\n ref_cnt=%u", entry->tbl->idx, entry->tbl->rule_cnt, entry->rule_id); entry->tbl->idx, entry->tbl->rule_cnt, entry->rule_id, entry->tbl->ref_cnt); idr_remove(&entry->tbl->rule_ids, entry->rule_id); idr_remove(&entry->tbl->rule_ids, entry->rule_id); if (entry->tbl->rule_cnt == 0 && entry->tbl->ref_cnt == 0) { if (entry->tbl->rule_cnt == 0 && entry->tbl->ref_cnt == 0) { if (__ipa_del_rt_tbl(entry->tbl)) if (__ipa_del_rt_tbl(entry->tbl)) Loading Loading @@ -1488,6 +1489,8 @@ int ipa3_put_rt_tbl(u32 rt_tbl_hdl) entry->ref_cnt--; entry->ref_cnt--; if (entry->ref_cnt == 0 && entry->rule_cnt == 0) { if (entry->ref_cnt == 0 && entry->rule_cnt == 0) { IPADBG("zero ref_cnt, delete rt tbl (idx=%u)\n", entry->idx); if (__ipa_del_rt_tbl(entry)) if (__ipa_del_rt_tbl(entry)) IPAERR("fail to del RT tbl\n"); IPAERR("fail to del RT tbl\n"); /* commit for put */ /* commit for put */ Loading drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c +3 −3 Original line number Original line Diff line number Diff line Loading @@ -1222,9 +1222,9 @@ int ipahal_cp_proc_ctx_to_hw_buff(enum ipa_hdr_proc_type type, if (!base || if (!base || !hdr_len || !hdr_len || (!phys_base && !hdr_base_addr) || (is_hdr_proc_ctx && !phys_base) || !hdr_base_addr || (!is_hdr_proc_ctx && !offset_entry) || ((is_hdr_proc_ctx == false) && !offset_entry)) { (!is_hdr_proc_ctx && !hdr_base_addr)) { IPAHAL_ERR( IPAHAL_ERR( "invalid input: hdr_len:%u phys_base:%pad hdr_base_addr:%u is_hdr_proc_ctx:%d offset_entry:%pK\n" "invalid input: hdr_len:%u phys_base:%pad hdr_base_addr:%u is_hdr_proc_ctx:%d offset_entry:%pK\n" , hdr_len, &phys_base, hdr_base_addr , hdr_len, &phys_base, hdr_base_addr Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_hdr.c +17 −9 Original line number Original line Diff line number Diff line Loading @@ -326,7 +326,7 @@ static int __ipa_add_hdr_proc_ctx(struct ipa_hdr_proc_ctx_add *proc_ctx, int needed_len; int needed_len; int mem_size; int mem_size; IPADBG_LOW("processing type %d hdr_hdl %d\n", IPADBG_LOW("Add processing type %d hdr_hdl %d\n", proc_ctx->type, proc_ctx->hdr_hdl); proc_ctx->type, proc_ctx->hdr_hdl); if (!HDR_PROC_TYPE_IS_VALID(proc_ctx->type)) { if (!HDR_PROC_TYPE_IS_VALID(proc_ctx->type)) { Loading @@ -335,10 +335,17 @@ static int __ipa_add_hdr_proc_ctx(struct ipa_hdr_proc_ctx_add *proc_ctx, } } hdr_entry = ipa3_id_find(proc_ctx->hdr_hdl); hdr_entry = ipa3_id_find(proc_ctx->hdr_hdl); if (!hdr_entry || (hdr_entry->cookie != IPA_COOKIE)) { if (!hdr_entry) { IPAERR("hdr_hdl is invalid\n"); IPAERR("hdr_hdl is invalid\n"); return -EINVAL; return -EINVAL; } } if (hdr_entry->cookie != IPA_COOKIE) { IPAERR("Invalid header cookie %u\n", hdr_entry->cookie); WARN_ON(1); return -EINVAL; } IPADBG("Associated header is name=%s is_hdr_proc_ctx=%d\n", hdr_entry->name, hdr_entry->is_hdr_proc_ctx); entry = kmem_cache_zalloc(ipa3_ctx->hdr_proc_ctx_cache, GFP_KERNEL); entry = kmem_cache_zalloc(ipa3_ctx->hdr_proc_ctx_cache, GFP_KERNEL); if (!entry) { if (!entry) { Loading Loading @@ -403,7 +410,7 @@ static int __ipa_add_hdr_proc_ctx(struct ipa_hdr_proc_ctx_add *proc_ctx, entry->offset_entry = offset; entry->offset_entry = offset; list_add(&entry->link, &htbl->head_proc_ctx_entry_list); list_add(&entry->link, &htbl->head_proc_ctx_entry_list); htbl->proc_ctx_cnt++; htbl->proc_ctx_cnt++; IPADBG_LOW("add proc ctx of sz=%d cnt=%d ofst=%d\n", needed_len, IPADBG("add proc ctx of sz=%d cnt=%d ofst=%d\n", needed_len, htbl->proc_ctx_cnt, offset->offset); htbl->proc_ctx_cnt, offset->offset); id = ipa3_id_alloc(entry); id = ipa3_id_alloc(entry); Loading Loading @@ -520,12 +527,12 @@ static int __ipa_add_hdr(struct ipa_hdr_add *hdr) list_add(&entry->link, &htbl->head_hdr_entry_list); list_add(&entry->link, &htbl->head_hdr_entry_list); htbl->hdr_cnt++; htbl->hdr_cnt++; if (entry->is_hdr_proc_ctx) if (entry->is_hdr_proc_ctx) IPADBG_LOW("add hdr of sz=%d hdr_cnt=%d phys_base=%pa\n", IPADBG("add hdr of sz=%d hdr_cnt=%d phys_base=%pa\n", hdr->hdr_len, hdr->hdr_len, htbl->hdr_cnt, htbl->hdr_cnt, &entry->phys_base); &entry->phys_base); else else IPADBG_LOW("add hdr of sz=%d hdr_cnt=%d ofst=%d\n", IPADBG("add hdr of sz=%d hdr_cnt=%d ofst=%d\n", hdr->hdr_len, hdr->hdr_len, htbl->hdr_cnt, htbl->hdr_cnt, entry->offset_entry->offset); entry->offset_entry->offset); Loading Loading @@ -580,7 +587,7 @@ static int __ipa3_del_hdr_proc_ctx(u32 proc_ctx_hdl, bool release_hdr) return -EINVAL; return -EINVAL; } } IPADBG("del ctx proc cnt=%d ofst=%d\n", IPADBG("del proc ctx cnt=%d ofst=%d\n", htbl->proc_ctx_cnt, entry->offset_entry->offset); htbl->proc_ctx_cnt, entry->offset_entry->offset); if (--entry->ref_cnt) { if (--entry->ref_cnt) { Loading Loading @@ -624,11 +631,12 @@ int __ipa3_del_hdr(u32 hdr_hdl) } } if (entry->is_hdr_proc_ctx) if (entry->is_hdr_proc_ctx) IPADBG("del hdr of sz=%d hdr_cnt=%d phys_base=%pa\n", IPADBG("del hdr of len=%d hdr_cnt=%d phys_base=%pa\n", entry->hdr_len, htbl->hdr_cnt, &entry->phys_base); entry->hdr_len, htbl->hdr_cnt, &entry->phys_base); else else IPADBG("del hdr of sz=%d hdr_cnt=%d ofst=%d\n", entry->hdr_len, IPADBG("del hdr of len=%d hdr_cnt=%d ofst=%d\n", htbl->hdr_cnt, entry->offset_entry->offset); entry->hdr_len, htbl->hdr_cnt, entry->offset_entry->offset); if (--entry->ref_cnt) { if (--entry->ref_cnt) { IPADBG("hdr_hdl %x ref_cnt %d\n", hdr_hdl, entry->ref_cnt); IPADBG("hdr_hdl %x ref_cnt %d\n", hdr_hdl, entry->ref_cnt); Loading
drivers/platform/msm/ipa/ipa_v3/ipa_rt.c +5 −2 Original line number Original line Diff line number Diff line Loading @@ -1210,8 +1210,9 @@ int __ipa3_del_rt_rule(u32 rule_hdl) __ipa3_release_hdr_proc_ctx(entry->proc_ctx->id); __ipa3_release_hdr_proc_ctx(entry->proc_ctx->id); list_del(&entry->link); list_del(&entry->link); entry->tbl->rule_cnt--; entry->tbl->rule_cnt--; IPADBG("del rt rule tbl_idx=%d rule_cnt=%d rule_id=%d\n", IPADBG("del rt rule tbl_idx=%d rule_cnt=%d rule_id=%d\n ref_cnt=%u", entry->tbl->idx, entry->tbl->rule_cnt, entry->rule_id); entry->tbl->idx, entry->tbl->rule_cnt, entry->rule_id, entry->tbl->ref_cnt); idr_remove(&entry->tbl->rule_ids, entry->rule_id); idr_remove(&entry->tbl->rule_ids, entry->rule_id); if (entry->tbl->rule_cnt == 0 && entry->tbl->ref_cnt == 0) { if (entry->tbl->rule_cnt == 0 && entry->tbl->ref_cnt == 0) { if (__ipa_del_rt_tbl(entry->tbl)) if (__ipa_del_rt_tbl(entry->tbl)) Loading Loading @@ -1488,6 +1489,8 @@ int ipa3_put_rt_tbl(u32 rt_tbl_hdl) entry->ref_cnt--; entry->ref_cnt--; if (entry->ref_cnt == 0 && entry->rule_cnt == 0) { if (entry->ref_cnt == 0 && entry->rule_cnt == 0) { IPADBG("zero ref_cnt, delete rt tbl (idx=%u)\n", entry->idx); if (__ipa_del_rt_tbl(entry)) if (__ipa_del_rt_tbl(entry)) IPAERR("fail to del RT tbl\n"); IPAERR("fail to del RT tbl\n"); /* commit for put */ /* commit for put */ Loading
drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c +3 −3 Original line number Original line Diff line number Diff line Loading @@ -1222,9 +1222,9 @@ int ipahal_cp_proc_ctx_to_hw_buff(enum ipa_hdr_proc_type type, if (!base || if (!base || !hdr_len || !hdr_len || (!phys_base && !hdr_base_addr) || (is_hdr_proc_ctx && !phys_base) || !hdr_base_addr || (!is_hdr_proc_ctx && !offset_entry) || ((is_hdr_proc_ctx == false) && !offset_entry)) { (!is_hdr_proc_ctx && !hdr_base_addr)) { IPAHAL_ERR( IPAHAL_ERR( "invalid input: hdr_len:%u phys_base:%pad hdr_base_addr:%u is_hdr_proc_ctx:%d offset_entry:%pK\n" "invalid input: hdr_len:%u phys_base:%pad hdr_base_addr:%u is_hdr_proc_ctx:%d offset_entry:%pK\n" , hdr_len, &phys_base, hdr_base_addr , hdr_len, &phys_base, hdr_base_addr Loading