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

Unverified Commit 8da1d337 authored by Michael Bestas's avatar Michael Bestas
Browse files

Merge tag 'LA.UM.9.14.r1-19600.01-LAHAINA.QSSI12.0' of...

Merge tag 'LA.UM.9.14.r1-19600.01-LAHAINA.QSSI12.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/dataipa into android12-5.4-lahaina

"LA.UM.9.14.r1-19600.01-LAHAINA.QSSI12.0"

* tag 'LA.UM.9.14.r1-19600.01-LAHAINA.QSSI12.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/dataipa:
  msm: ipa3: Handle race condition to avoid NULL access
  msm: ipa3: Reduce the QMI timeout value to avoid race condition
  msm: ipa: Set the logbuf NULL after destroy
  msm: gsi: Fix the incorrect evt ring pointer
  msm: ipa3: In deep sleep scenario destroy/ reinitialize uC interrupts
  msm: ipa3: Changes to resume only suspend operation complete
  msm: ipa3: Disable gsi fifo and test bus registers
  msm: ipa3: Fix to validate the NAT table entries during NAT table init
  msm: ipa3: Fix to avoid the boot up crash in non smmu targets
  msm: ipa3: Disable of ODL offload checksum
  msm: ipa3: Deepsleep enable changes
  msm: ipa3: enable ipa register save when device is about to crash
  msm: ipa3: Changes not allow ODL pipe setup during SSR
  msm: ipa: use lower order pages
  msm: ipa3: fix to cleanup the dma allocation.
  msm: ipa: Get device pointers if smmu is disabled
  msm: gsi: Read 64-bit ring RP value from registers
  msm: ipa3: Retry to attach smmu nodes if fails
  msm: ipa: add skb recycle if dma fails during replenish
  msm: ipa: remove initing head again if dma mapping fails
  msm: ipa3: Retry to attach smmu nodes if fails
  msm: ipa3: Adding changes to support the deep sleep mode
  msm: ipa3: Fix to NULL terminate the header pointer in proc header table
  msm: ipa3: Pointer Check and Fix overflow in Header Deletion
  msm: ipa3: Queue nop desc again if it fails.
  msm: ipa3: increasing the uC interrupt timeout value
  msm: ipa3: Add wait queue for the adpl
  msm: ipa3: Add change to not reset HOLB timer
  msm: ipa3: Add retry attempts for subsystem loading
  msm: ipa: Fix to free up all pending EOB pages
  msm: ipa3: Fix null pointer dereference error
  msm: ipa3: Reduced excessive logs from ipa
  msm: ipa3: Configure HOLB for WLAN2 consumer pipe

Change-Id: I86cdd282a02be47a6653b009a1f400fe67160edc
parents a7cc4292 e1110222
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 */

#define CONFIG_GSI 1
@@ -8,3 +9,8 @@
#define CONFIG_RMNET_IPA3 1
#define CONFIG_RNDIS_IPA 1
#define CONFIG_IPA_WDI_UNIFIED_API 1
#define CONFIG_IPA3_REGDUMP 1
#define CONFIG_IPA3_APPS_REGDUMP 1
#define CONFIG_IPA3_REGDUMP_IPA_4_5 1
#define CONFIG_IPA3_4_5_RGSTR 0
#define CONFIG_IPA3_REGDUMP_NUM_EXTRA_ENDP_REGS 0
+4 −0
Original line number Diff line number Diff line
@@ -4,3 +4,7 @@ export CONFIG_IPA_CLIENTS_MANAGER=m
export CONFIG_IPA_WDI_UNIFIED_API=y
export CONFIG_RMNET_IPA3=y
export CONFIG_RNDIS_IPA=m
export CONFIG_IPA3_REGDUMP=y
export CONFIG_IPA3_APPS_REGDUMP=y
export CONFIG_IPA3_REGDUMP_IPA_4_5=y
export CONFIG_IPA3_4_5_RGSTR=n
+4 −0
Original line number Diff line number Diff line
@@ -4,3 +4,7 @@ export CONFIG_IPA_CLIENTS_MANAGER=y
export CONFIG_IPA_WDI_UNIFIED_API=y
export CONFIG_RMNET_IPA3=y
export CONFIG_RNDIS_IPA=y
export CONFIG_IPA3_REGDUMP=y
export CONFIG_IPA3_APPS_REGDUMP=y
export CONFIG_IPA3_REGDUMP_IPA_4_5=y
export CONFIG_IPA3_4_5_RGSTR=n
+11 −5
Original line number Diff line number Diff line
@@ -1482,8 +1482,7 @@ int gsi_deregister_device(unsigned long dev_hdl, bool force)

	devm_free_irq(gsi_ctx->dev, gsi_ctx->per.irq, gsi_ctx);
	gsi_unmap_base();
	memset(gsi_ctx, 0, sizeof(*gsi_ctx));

	gsi_ctx->per_registered = false;
	return GSI_STATUS_SUCCESS;
}
EXPORT_SYMBOL(gsi_deregister_device);
@@ -1752,7 +1751,14 @@ static inline uint64_t gsi_read_event_ring_rp_ddr(struct gsi_evt_ring_props* pro
static inline uint64_t gsi_read_event_ring_rp_reg(struct gsi_evt_ring_props* props,
	uint8_t id, int ee)
{
	return gsi_readl(gsi_ctx->base + GSI_EE_n_EV_CH_k_CNTXT_4_OFFS(id, ee));
	uint64_t rp;

	rp = gsi_readl(gsi_ctx->base +
		GSI_EE_n_EV_CH_k_CNTXT_4_OFFS(id, ee));
	rp |= ((uint64_t)gsi_readl(gsi_ctx->base +
		GSI_EE_n_EV_CH_k_CNTXT_5_OFFS(id, ee))) << 32;

	return rp;
}

int gsi_alloc_evt_ring(struct gsi_evt_ring_props *props, unsigned long dev_hdl,
@@ -4051,7 +4057,7 @@ int gsi_poll_n_channel(unsigned long chan_hdl,
		/* update rp to see of we have anything new to process */
		rp = ctx->evtr->props.gsi_read_event_ring_rp(
			&ctx->evtr->props, ctx->evtr->id, ee);
		rp |= ctx->ring.rp & 0xFFFFFFFF00000000ULL;
		rp |= ctx->evtr->ring.rp & 0xFFFFFFFF00000000ULL;

		ctx->evtr->ring.rp = rp;
		/* read gsi event ring rp again if last read is empty */
@@ -4063,7 +4069,7 @@ int gsi_poll_n_channel(unsigned long chan_hdl,
			__iowmb();
			rp = ctx->evtr->props.gsi_read_event_ring_rp(
				&ctx->evtr->props, ctx->evtr->id, ee);
			rp |= ctx->ring.rp & 0xFFFFFFFF00000000ULL;
			rp |= ctx->evtr->ring.rp & 0xFFFFFFFF00000000ULL;
			ctx->evtr->ring.rp = rp;
			if (rp == ctx->evtr->ring.rp_local) {
				spin_unlock_irqrestore(
+12 −2
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
 */

#include <linux/debugfs.h>
@@ -56,6 +56,16 @@
			IPA_GSB_DRV_NAME " %s:%d " fmt, ## args); \
	} while (0)

#define IPA_GSB_ERR_RL(fmt, args...) \
	do { \
		pr_err_ratelimited_ipa(IPA_GSB_DRV_NAME " %s:%d " fmt, \
			__func__, __LINE__, ## args); \
		IPA_IPC_LOGGING(ipa3_get_ipc_logbuf(), \
			IPA_GSB_DRV_NAME " %s:%d " fmt, ## args); \
		IPA_IPC_LOGGING(ipa3_get_ipc_logbuf_low(), \
			IPA_GSB_DRV_NAME " %s:%d " fmt, ## args); \
	} while (0)

#define IPA_GSB_MAX_MSG_LEN 512

#ifdef CONFIG_DEBUG_FS
@@ -1184,7 +1194,7 @@ static int ipa_bridge_tx_dp_internal(u32 hdl, struct sk_buff *skb,
	}

	if (unlikely(!ipa_gsb_ctx->iface[hdl]->is_resumed)) {
		IPA_GSB_ERR("iface %d was suspended\n", hdl);
		IPA_GSB_ERR_RL("iface %d was suspended\n", hdl);
		return -EFAULT;
	}

Loading