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

Commit 10c10662 authored by Alan Chen's avatar Alan Chen Committed by snandini
Browse files

qcacld-3.0: Use sync API for target assert and dump collection

In internal builds, to catch all fw timeout issues, host-initiated
self-recovery is not enabled. To avoid a race between cld driver
triggering assert and RDDM dump collection, use the CNSS-provided
sync API, which guarantees target assert and dump collection before
returning.

Change-Id: Ib702bfa17616a100913f501f850d5c0b74ad39bb
CRs-Fixed: 2790271
parent 0620116f
Loading
Loading
Loading
Loading
+4 −15
Original line number Diff line number Diff line
@@ -1918,8 +1918,6 @@ static void cds_trigger_recovery_work(void *context)
void __cds_trigger_recovery(enum qdf_hang_reason reason, const char *func,
			    const uint32_t line)
{
	bool is_work_queue_needed = false;

	if (!gp_cds_context) {
		cds_err("gp_cds_context is null");
		return;
@@ -1927,19 +1925,10 @@ void __cds_trigger_recovery(enum qdf_hang_reason reason, const char *func,

	gp_cds_context->recovery_reason = reason;

	if (in_atomic() ||
	    (QDF_RESUME_TIMEOUT == reason || QDF_SUSPEND_TIMEOUT == reason))
		is_work_queue_needed = true;

	if (is_work_queue_needed) {
	__cds_recovery_caller.func = func;
	__cds_recovery_caller.line = line;
	qdf_queue_work(0, gp_cds_context->cds_recovery_wq,
		       &gp_cds_context->cds_recovery_work);
		return;
	}

	cds_trigger_recovery_handler(func, line);
}

void cds_trigger_recovery_psoc(void *psoc, enum qdf_hang_reason reason,
+1 −1
Original line number Diff line number Diff line
@@ -598,7 +598,7 @@ static inline int pld_pcie_idle_shutdown(struct device *dev)

static inline int pld_pcie_force_assert_target(struct device *dev)
{
	return cnss_force_fw_assert(dev);
	return cnss_force_collect_rddm(dev);
}

static inline int pld_pcie_get_user_msi_assignment(struct device *dev,