Loading drivers/soc/qcom/peripheral-loader.c +6 −2 Original line number Diff line number Diff line Loading @@ -164,6 +164,9 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev) int ss_mdump_seg_cnt; int ret, i; if (!ramdump_dev) return -ENODEV; memcpy(&offset, &priv->minidump, sizeof(priv->minidump)); offset = offset + sizeof(priv->minidump->md_ss_smem_regions_baseptr); /* There are 3 encryption keys which also need to be dumped */ Loading Loading @@ -220,7 +223,8 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev) * Calls the ramdump API with a list of segments generated from the addresses * that the descriptor corresponds to. */ int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev) int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev, void *minidump_dev) { struct pil_priv *priv = desc->priv; struct pil_seg *seg; Loading @@ -237,7 +241,7 @@ int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev) && (__raw_readl(priv->minidump) != 0) && (readb_relaxed(offset + sizeof(u32) + 2 * sizeof(u8)) == 0)) { pr_debug("Dumping Minidump for %s\n", desc->name); return pil_do_minidump(desc, ramdump_dev); return pil_do_minidump(desc, minidump_dev); } pr_debug("Continuing with full SSR dump for %s\n", desc->name); Loading drivers/soc/qcom/peripheral-loader.h +4 −2 Original line number Diff line number Diff line Loading @@ -134,7 +134,8 @@ extern void pil_shutdown(struct pil_desc *desc); extern void pil_free_memory(struct pil_desc *desc); extern void pil_desc_release(struct pil_desc *desc); extern phys_addr_t pil_get_entry_addr(struct pil_desc *desc); extern int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev); extern int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev, void *minidump_dev); extern int pil_assign_mem_to_subsys(struct pil_desc *desc, phys_addr_t addr, size_t size); extern int pil_assign_mem_to_linux(struct pil_desc *desc, phys_addr_t addr, Loading @@ -154,7 +155,8 @@ static inline phys_addr_t pil_get_entry_addr(struct pil_desc *desc) { return 0; } static inline int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev) static inline int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev, void *minidump_dev) { return 0; } Loading drivers/soc/qcom/pil-msa.h +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ struct modem_data { struct subsys_device *subsys; struct subsys_desc subsys_desc; void *ramdump_dev; void *minidump_dev; bool crash_shutdown; u32 pas_id; bool ignore_errors; Loading drivers/soc/qcom/pil-q6v5-mss.c +12 −1 Original line number Diff line number Diff line Loading @@ -171,7 +171,8 @@ static int modem_ramdump(int enable, const struct subsys_desc *subsys) if (ret) return ret; ret = pil_do_ramdump(&drv->q6->desc, drv->ramdump_dev); ret = pil_do_ramdump(&drv->q6->desc, drv->ramdump_dev, drv->minidump_dev); if (ret < 0) pr_err("Unable to dump modem fw memory (rc = %d).\n", ret); Loading Loading @@ -230,9 +231,18 @@ static int pil_subsys_init(struct modem_data *drv, ret = -ENOMEM; goto err_ramdump; } drv->minidump_dev = create_ramdump_device("md_modem", &pdev->dev); if (!drv->minidump_dev) { pr_err("%s: Unable to create a modem minidump device.\n", __func__); ret = -ENOMEM; goto err_minidump; } return 0; err_minidump: destroy_ramdump_device(drv->ramdump_dev); err_ramdump: subsys_unregister(drv->subsys); err_subsys: Loading Loading @@ -414,6 +424,7 @@ static int pil_mss_driver_exit(struct platform_device *pdev) subsys_unregister(drv->subsys); destroy_ramdump_device(drv->ramdump_dev); destroy_ramdump_device(drv->minidump_dev); pil_desc_release(&drv->q6->desc); return 0; } Loading drivers/soc/qcom/subsys-pil-tz.c +1 −1 Original line number Diff line number Diff line Loading @@ -850,7 +850,7 @@ static int subsys_ramdump(int enable, const struct subsys_desc *subsys) if (!enable) return 0; return pil_do_ramdump(&d->desc, d->ramdump_dev); return pil_do_ramdump(&d->desc, d->ramdump_dev, NULL); } static void subsys_free_memory(const struct subsys_desc *subsys) Loading Loading
drivers/soc/qcom/peripheral-loader.c +6 −2 Original line number Diff line number Diff line Loading @@ -164,6 +164,9 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev) int ss_mdump_seg_cnt; int ret, i; if (!ramdump_dev) return -ENODEV; memcpy(&offset, &priv->minidump, sizeof(priv->minidump)); offset = offset + sizeof(priv->minidump->md_ss_smem_regions_baseptr); /* There are 3 encryption keys which also need to be dumped */ Loading Loading @@ -220,7 +223,8 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev) * Calls the ramdump API with a list of segments generated from the addresses * that the descriptor corresponds to. */ int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev) int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev, void *minidump_dev) { struct pil_priv *priv = desc->priv; struct pil_seg *seg; Loading @@ -237,7 +241,7 @@ int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev) && (__raw_readl(priv->minidump) != 0) && (readb_relaxed(offset + sizeof(u32) + 2 * sizeof(u8)) == 0)) { pr_debug("Dumping Minidump for %s\n", desc->name); return pil_do_minidump(desc, ramdump_dev); return pil_do_minidump(desc, minidump_dev); } pr_debug("Continuing with full SSR dump for %s\n", desc->name); Loading
drivers/soc/qcom/peripheral-loader.h +4 −2 Original line number Diff line number Diff line Loading @@ -134,7 +134,8 @@ extern void pil_shutdown(struct pil_desc *desc); extern void pil_free_memory(struct pil_desc *desc); extern void pil_desc_release(struct pil_desc *desc); extern phys_addr_t pil_get_entry_addr(struct pil_desc *desc); extern int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev); extern int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev, void *minidump_dev); extern int pil_assign_mem_to_subsys(struct pil_desc *desc, phys_addr_t addr, size_t size); extern int pil_assign_mem_to_linux(struct pil_desc *desc, phys_addr_t addr, Loading @@ -154,7 +155,8 @@ static inline phys_addr_t pil_get_entry_addr(struct pil_desc *desc) { return 0; } static inline int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev) static inline int pil_do_ramdump(struct pil_desc *desc, void *ramdump_dev, void *minidump_dev) { return 0; } Loading
drivers/soc/qcom/pil-msa.h +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ struct modem_data { struct subsys_device *subsys; struct subsys_desc subsys_desc; void *ramdump_dev; void *minidump_dev; bool crash_shutdown; u32 pas_id; bool ignore_errors; Loading
drivers/soc/qcom/pil-q6v5-mss.c +12 −1 Original line number Diff line number Diff line Loading @@ -171,7 +171,8 @@ static int modem_ramdump(int enable, const struct subsys_desc *subsys) if (ret) return ret; ret = pil_do_ramdump(&drv->q6->desc, drv->ramdump_dev); ret = pil_do_ramdump(&drv->q6->desc, drv->ramdump_dev, drv->minidump_dev); if (ret < 0) pr_err("Unable to dump modem fw memory (rc = %d).\n", ret); Loading Loading @@ -230,9 +231,18 @@ static int pil_subsys_init(struct modem_data *drv, ret = -ENOMEM; goto err_ramdump; } drv->minidump_dev = create_ramdump_device("md_modem", &pdev->dev); if (!drv->minidump_dev) { pr_err("%s: Unable to create a modem minidump device.\n", __func__); ret = -ENOMEM; goto err_minidump; } return 0; err_minidump: destroy_ramdump_device(drv->ramdump_dev); err_ramdump: subsys_unregister(drv->subsys); err_subsys: Loading Loading @@ -414,6 +424,7 @@ static int pil_mss_driver_exit(struct platform_device *pdev) subsys_unregister(drv->subsys); destroy_ramdump_device(drv->ramdump_dev); destroy_ramdump_device(drv->minidump_dev); pil_desc_release(&drv->q6->desc); return 0; } Loading
drivers/soc/qcom/subsys-pil-tz.c +1 −1 Original line number Diff line number Diff line Loading @@ -850,7 +850,7 @@ static int subsys_ramdump(int enable, const struct subsys_desc *subsys) if (!enable) return 0; return pil_do_ramdump(&d->desc, d->ramdump_dev); return pil_do_ramdump(&d->desc, d->ramdump_dev, NULL); } static void subsys_free_memory(const struct subsys_desc *subsys) Loading