Loading drivers/soc/qcom/pil-q6v5-mss.c +2 −2 Original line number Diff line number Diff line Loading @@ -80,7 +80,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; } Loading Loading @@ -194,7 +194,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; } Loading drivers/soc/qcom/subsys-pil-tz.c +3 −3 Original line number Diff line number Diff line Loading @@ -882,7 +882,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); Loading @@ -901,7 +901,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); Loading Loading @@ -958,7 +958,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); } Loading drivers/soc/qcom/subsystem_restart.c +5 −4 Original line number Diff line number Diff line Loading @@ -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; }; Loading Loading @@ -649,7 +649,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) Loading Loading @@ -1130,12 +1130,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 include/soc/qcom/subsystem_restart.h +14 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,12 @@ enum { RESET_LEVEL_MAX }; enum crash_status { CRASH_STATUS_NO_CRASH = 0, CRASH_STATUS_ERR_FATAL, CRASH_STATUS_WDOG_BITE, }; struct device; struct module; Loading Loading @@ -89,7 +95,7 @@ struct subsys_desc { /** * struct notif_data - additional notif information * @crashed: indicates if subsystem has crashed * @crashed: indicates if subsystem has crashed due to wdog bite or err fatal * @enable_ramdump: ramdumps disabled if set to 0 * @enable_mini_ramdumps: enable flag for minimized critical-memory-only * ramdumps Loading @@ -97,7 +103,7 @@ struct subsys_desc { * @pdev: subsystem platform device pointer */ struct notif_data { bool crashed; enum crash_status crashed; int enable_ramdump; int enable_mini_ramdumps; bool no_auth; Loading @@ -120,8 +126,9 @@ extern struct subsys_device *subsys_register(struct subsys_desc *desc); extern void subsys_unregister(struct subsys_device *dev); extern void subsys_default_online(struct subsys_device *dev); extern void subsys_set_crash_status(struct subsys_device *dev, bool crashed); extern bool subsys_get_crash_status(struct subsys_device *dev); extern void subsys_set_crash_status(struct subsys_device *dev, enum crash_status crashed); extern enum crash_status subsys_get_crash_status(struct subsys_device *dev); void notify_proxy_vote(struct device *device); void notify_proxy_unvote(struct device *device); void complete_err_ready(struct subsys_device *subsys); Loading Loading @@ -174,9 +181,10 @@ struct subsys_device *subsys_register(struct subsys_desc *desc) static inline void subsys_unregister(struct subsys_device *dev) { } static inline void subsys_default_online(struct subsys_device *dev) { } static inline void subsys_set_crash_status(struct subsys_device *dev, enum crash_status crashed) { } static inline void subsys_set_crash_status(struct subsys_device *dev, bool crashed) { } static inline bool subsys_get_crash_status(struct subsys_device *dev) enum crash_status subsys_get_crash_status(struct subsys_device *dev) { return false; } Loading Loading
drivers/soc/qcom/pil-q6v5-mss.c +2 −2 Original line number Diff line number Diff line Loading @@ -80,7 +80,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; } Loading Loading @@ -194,7 +194,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; } Loading
drivers/soc/qcom/subsys-pil-tz.c +3 −3 Original line number Diff line number Diff line Loading @@ -882,7 +882,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); Loading @@ -901,7 +901,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); Loading Loading @@ -958,7 +958,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); } Loading
drivers/soc/qcom/subsystem_restart.c +5 −4 Original line number Diff line number Diff line Loading @@ -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; }; Loading Loading @@ -649,7 +649,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) Loading Loading @@ -1130,12 +1130,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
include/soc/qcom/subsystem_restart.h +14 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,12 @@ enum { RESET_LEVEL_MAX }; enum crash_status { CRASH_STATUS_NO_CRASH = 0, CRASH_STATUS_ERR_FATAL, CRASH_STATUS_WDOG_BITE, }; struct device; struct module; Loading Loading @@ -89,7 +95,7 @@ struct subsys_desc { /** * struct notif_data - additional notif information * @crashed: indicates if subsystem has crashed * @crashed: indicates if subsystem has crashed due to wdog bite or err fatal * @enable_ramdump: ramdumps disabled if set to 0 * @enable_mini_ramdumps: enable flag for minimized critical-memory-only * ramdumps Loading @@ -97,7 +103,7 @@ struct subsys_desc { * @pdev: subsystem platform device pointer */ struct notif_data { bool crashed; enum crash_status crashed; int enable_ramdump; int enable_mini_ramdumps; bool no_auth; Loading @@ -120,8 +126,9 @@ extern struct subsys_device *subsys_register(struct subsys_desc *desc); extern void subsys_unregister(struct subsys_device *dev); extern void subsys_default_online(struct subsys_device *dev); extern void subsys_set_crash_status(struct subsys_device *dev, bool crashed); extern bool subsys_get_crash_status(struct subsys_device *dev); extern void subsys_set_crash_status(struct subsys_device *dev, enum crash_status crashed); extern enum crash_status subsys_get_crash_status(struct subsys_device *dev); void notify_proxy_vote(struct device *device); void notify_proxy_unvote(struct device *device); void complete_err_ready(struct subsys_device *subsys); Loading Loading @@ -174,9 +181,10 @@ struct subsys_device *subsys_register(struct subsys_desc *desc) static inline void subsys_unregister(struct subsys_device *dev) { } static inline void subsys_default_online(struct subsys_device *dev) { } static inline void subsys_set_crash_status(struct subsys_device *dev, enum crash_status crashed) { } static inline void subsys_set_crash_status(struct subsys_device *dev, bool crashed) { } static inline bool subsys_get_crash_status(struct subsys_device *dev) enum crash_status subsys_get_crash_status(struct subsys_device *dev) { return false; } Loading