Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db371446 authored by Linux Build Service Account's avatar Linux Build Service Account
Browse files

Merge 86100918 on remote branch

Change-Id: I81ea7be9139d6652ab4988e5da9aa2aa15e02070
parents 97270637 86100918
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1609,6 +1609,7 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
	struct ipa3_ep_context *ep;
	int result = -EFAULT;
	enum gsi_status gsi_res;
	unsigned long flags;

	IPADBG("entry\n");
	if (clnt_hdl >= ipa3_ctx->ipa_num_pipes ||
@@ -1623,10 +1624,9 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
		IPA_ACTIVE_CLIENTS_INC_EP(ipa3_get_client_mapping(clnt_hdl));

	/* Set the disconnect in progress flag to avoid calling cb.*/
	spin_lock(&ipa3_ctx->disconnect_lock);
	spin_lock_irqsave(&ipa3_ctx->disconnect_lock, flags);
	atomic_set(&ep->disconnect_in_progress, 1);
	spin_unlock(&ipa3_ctx->disconnect_lock);

	spin_unlock_irqrestore(&ipa3_ctx->disconnect_lock, flags);

	gsi_res = gsi_dealloc_channel(ep->gsi_chan_hdl);
	if (gsi_res != GSI_STATUS_SUCCESS) {
@@ -1646,9 +1646,9 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
	if (!ep->keep_ipa_awake)
		IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(clnt_hdl));

	spin_lock(&ipa3_ctx->disconnect_lock);
	spin_lock_irqsave(&ipa3_ctx->disconnect_lock, flags);
	memset(&ipa3_ctx->ep[clnt_hdl], 0, sizeof(struct ipa3_ep_context));
	spin_unlock(&ipa3_ctx->disconnect_lock);
	spin_unlock_irqrestore(&ipa3_ctx->disconnect_lock, flags);

	IPADBG("exit\n");
	return 0;
+2 −5
Original line number Diff line number Diff line
@@ -7120,16 +7120,13 @@ int ipa3_alloc_counter_id(struct ipa_ioc_flt_rt_counter_alloc *header)
{
	int i, unused_cnt, unused_max, unused_start_id;
	struct ipa_ioc_flt_rt_counter_alloc *counter;

	idr_preload(GFP_KERNEL);
	spin_lock(&ipa3_ctx->flt_rt_counters.hdl_lock);

	counter = kmem_cache_zalloc(ipa3_ctx->fnr_stats_cache, GFP_KERNEL);
	if (!counter) {
		IPAERR_RL("failed to alloc fnr stats counter object\n");
		spin_unlock(&ipa3_ctx->flt_rt_counters.hdl_lock);
		return -ENOMEM;
	}
	idr_preload(GFP_KERNEL);
	spin_lock(&ipa3_ctx->flt_rt_counters.hdl_lock);
	memcpy(counter, header, sizeof(struct ipa_ioc_flt_rt_counter_alloc));
	/* allocate hw counters */
	counter->hw_counter.start_id = 0;