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

Commit 22198ab7 authored by Service qcabuildsw's avatar Service qcabuildsw Committed by Gerrit - the friendly Code Review server
Browse files

Merge "soc: qcom: ssr: add crash status to know why subsys crashed" into msm-4.4

parents d0deb260 ef124ecd
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2472,7 +2472,7 @@ void *cnss_pci_get_virt_ramdump_mem(unsigned long *size)
void cnss_pci_device_crashed(void)
{
	if (penv && penv->subsys) {
		subsys_set_crash_status(penv->subsys, true);
		subsys_set_crash_status(penv->subsys, CRASH_STATUS_ERR_FATAL);
		subsystem_restart_dev(penv->subsys);
	}
}
@@ -2491,7 +2491,7 @@ EXPORT_SYMBOL(cnss_get_virt_ramdump_mem);
void cnss_device_crashed(void)
{
	if (penv && penv->subsys) {
		subsys_set_crash_status(penv->subsys, true);
		subsys_set_crash_status(penv->subsys, CRASH_STATUS_ERR_FATAL);
		subsystem_restart_dev(penv->subsys);
	}
}
+2 −1
Original line number Diff line number Diff line
@@ -605,7 +605,8 @@ void cnss_sdio_device_crashed(void)
		return;
	ssr_info = &cnss_pdata->ssr_info;
	if (ssr_info->subsys) {
		subsys_set_crash_status(ssr_info->subsys, true);
		subsys_set_crash_status(ssr_info->subsys,
					CRASH_STATUS_ERR_FATAL);
		subsystem_restart_dev(ssr_info->subsys);
	}
}
+2 −2
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ static irqreturn_t modem_err_fatal_intr_handler(int irq, void *dev_id)
		return IRQ_HANDLED;

	pr_err("Fatal error on the modem.\n");
	subsys_set_crash_status(drv->subsys, true);
	subsys_set_crash_status(drv->subsys, CRASH_STATUS_ERR_FATAL);
	restart_modem(drv);
	return IRQ_HANDLED;
}
@@ -193,7 +193,7 @@ static irqreturn_t modem_wdog_bite_intr_handler(int irq, void *dev_id)
			!gpio_get_value(drv->subsys_desc.err_fatal_gpio))
		panic("%s: System ramdump requested. Triggering device restart!\n",
							__func__);
	subsys_set_crash_status(drv->subsys, true);
	subsys_set_crash_status(drv->subsys, CRASH_STATUS_WDOG_BITE);
	restart_modem(drv);
	return IRQ_HANDLED;
}
+3 −3
Original line number Diff line number Diff line
@@ -876,7 +876,7 @@ static irqreturn_t subsys_err_fatal_intr_handler (int irq, void *dev_id)
							d->subsys_desc.name);
		return IRQ_HANDLED;
	}
	subsys_set_crash_status(d->subsys, true);
	subsys_set_crash_status(d->subsys, CRASH_STATUS_ERR_FATAL);
	log_failure_reason(d);
	subsystem_restart_dev(d->subsys);

@@ -895,7 +895,7 @@ static irqreturn_t subsys_wdog_bite_irq_handler(int irq, void *dev_id)
			!gpio_get_value(d->subsys_desc.err_fatal_gpio))
		panic("%s: System ramdump requested. Triggering device restart!\n",
							__func__);
	subsys_set_crash_status(d->subsys, true);
	subsys_set_crash_status(d->subsys, CRASH_STATUS_WDOG_BITE);
	log_failure_reason(d);
	subsystem_restart_dev(d->subsys);

@@ -952,7 +952,7 @@ static void clear_wdog(struct pil_tz_data *d)
	if (!subsys_get_crash_status(d->subsys)) {
		pr_err("wdog bite received from %s!\n", d->subsys_desc.name);
		__raw_writel(BIT(d->bits_arr[ERR_READY]), d->irq_clear);
		subsys_set_crash_status(d->subsys, true);
		subsys_set_crash_status(d->subsys, CRASH_STATUS_WDOG_BITE);
		log_failure_reason(d);
		subsystem_restart_dev(d->subsys);
	}
+5 −4
Original line number Diff line number Diff line
@@ -178,7 +178,7 @@ struct subsys_device {
	struct cdev char_dev;
	dev_t dev_no;
	struct completion err_ready;
	bool crashed;
	enum crash_status crashed;
	int notif_state;
	struct list_head list;
};
@@ -646,7 +646,7 @@ static void subsystem_powerup(struct subsys_device *dev, void *data)
			current, name);
	}
	subsys_set_state(dev, SUBSYS_ONLINE);
	subsys_set_crash_status(dev, false);
	subsys_set_crash_status(dev, CRASH_STATUS_NO_CRASH);
}

static int __find_subsys(struct device *dev, void *data)
@@ -1126,12 +1126,13 @@ int subsystem_crashed(const char *name)
}
EXPORT_SYMBOL(subsystem_crashed);

void subsys_set_crash_status(struct subsys_device *dev, bool crashed)
void subsys_set_crash_status(struct subsys_device *dev,
				enum crash_status crashed)
{
	dev->crashed = crashed;
}

bool subsys_get_crash_status(struct subsys_device *dev)
enum crash_status subsys_get_crash_status(struct subsys_device *dev)
{
	return dev->crashed;
}
Loading