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

Commit 0141c446 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "soc: qcom: skip dbg_cfg read in minidump ssr path"

parents 249f073d 3c319f75
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev)
	region_info = (struct md_ss_region __iomem *)subsys_segtable_base;
	if (!region_info)
		return -EINVAL;
	pr_debug("Segments in minidump 0x%x\n", ss_mdump_seg_cnt);
	pr_info("Minidump : Segments in minidump 0x%x\n", ss_mdump_seg_cnt);
	ramdump_segs = kcalloc(ss_mdump_seg_cnt,
			       sizeof(*ramdump_segs), GFP_KERNEL);
	if (!ramdump_segs)
@@ -184,7 +184,7 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev)
			offset = offset +
				sizeof(region_info->region_base_address);
			s->size = __raw_readl(offset);
			pr_debug("Minidump : Dumping segment %s with address 0x%lx and size 0x%x\n",
			pr_info("Minidump : Dumping segment %s with address 0x%lx and size 0x%x\n",
				s->name, s->address, (unsigned int)s->size);
		} else
			ss_valid_seg_cnt--;
@@ -220,15 +220,15 @@ int pil_do_ramdump(struct pil_desc *desc,
	int count = 0, ret;

	if (desc->minidump) {
		pr_debug("Minidump : md_ss_toc->md_ss_toc_init is 0x%x\n",
		pr_info("Minidump : md_ss_toc->md_ss_toc_init is 0x%x\n",
			(unsigned int)desc->minidump->md_ss_toc_init);
		pr_debug("Minidump : md_ss_toc->md_ss_enable_status is 0x%x\n",
		pr_info("Minidump : md_ss_toc->md_ss_enable_status is 0x%x\n",
			(unsigned int)desc->minidump->md_ss_enable_status);
		pr_debug("Minidump : md_ss_toc->encryption_status is 0x%x\n",
		pr_info("Minidump : md_ss_toc->encryption_status is 0x%x\n",
			(unsigned int)desc->minidump->encryption_status);
		pr_debug("Minidump : md_ss_toc->ss_region_count is 0x%x\n",
		pr_info("Minidump : md_ss_toc->ss_region_count is 0x%x\n",
			(unsigned int)desc->minidump->ss_region_count);
		pr_debug("Minidump : md_ss_toc->md_ss_smem_regions_baseptr is 0x%x\n",
		pr_info("Minidump : md_ss_toc->md_ss_smem_regions_baseptr is 0x%x\n",
			(unsigned int)
			desc->minidump->md_ss_smem_regions_baseptr);
		/**
@@ -241,11 +241,11 @@ int pil_do_ramdump(struct pil_desc *desc,
				MD_SS_ENABLED)) {
			if (desc->minidump->encryption_status ==
				MD_SS_ENCR_DONE) {
				pr_debug("Dumping Minidump for %s\n",
				pr_info("Minidump : Dumping for %s\n",
					desc->name);
				return pil_do_minidump(desc, minidump_dev);
			}
			pr_debug("Minidump aborted for %s\n", desc->name);
			pr_info("Minidump : aborted for %s\n", desc->name);
			return -EINVAL;
		}
	}
+13 −8
Original line number Diff line number Diff line
@@ -557,7 +557,7 @@ static int pil_mss_reset(struct pil_desc *pil)
{
	struct q6v5_data *drv = container_of(pil, struct q6v5_data, desc);
	phys_addr_t start_addr = pil_get_entry_addr(pil);
	u32 debug_val;
	u32 debug_val = 0;
	int ret;

	trace_pil_func(__func__);
@@ -576,8 +576,10 @@ static int pil_mss_reset(struct pil_desc *pil)
	if (ret)
		goto err_clks;

	if (!pil->minidump || !pil->modem_ssr) {
		/* Save state of modem debug register before full reset */
		debug_val = readl_relaxed(drv->reg_base + QDSP6SS_DBG_CFG);
	}

	/* Assert reset to subsystem */
	pil_mss_assert_resets(drv);
@@ -587,9 +589,12 @@ static int pil_mss_reset(struct pil_desc *pil)
	if (ret)
		goto err_restart;

	if (!pil->minidump || !pil->modem_ssr) {
		writel_relaxed(debug_val, drv->reg_base + QDSP6SS_DBG_CFG);
		if (modem_dbg_cfg)
		writel_relaxed(modem_dbg_cfg, drv->reg_base + QDSP6SS_DBG_CFG);
			writel_relaxed(modem_dbg_cfg,
				drv->reg_base + QDSP6SS_DBG_CFG);
	}

	/* Program Image Address */
	if (drv->self_auth) {
@@ -819,8 +824,8 @@ int pil_mss_debug_reset(struct pil_desc *pil)
	 * Need to Wait for timeout for debug reset sequence to
	 * complete before returning
	 */
	pr_debug("Minidump: waiting encryption to complete\n");
	msleep(30000);
	pr_info("Minidump: waiting encryption to complete\n");
	msleep(10000);
	if (pil->minidump) {
		writel_relaxed(0x2, drv->reg_base + QDSP6SS_NMI_CFG);
		/* Let write complete before proceeding */
+5 −0
Original line number Diff line number Diff line
@@ -167,6 +167,11 @@ static int modem_ramdump(int enable, const struct subsys_desc *subsys)
	if (ret)
		return ret;

	pil_mss_remove_proxy_votes(&drv->q6->desc);
	ret = pil_mss_make_proxy_votes(&drv->q6->desc);
	if (ret)
		return ret;

	ret = pil_mss_reset_load_mba(&drv->q6->desc);
	if (ret)
		return ret;