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

Commit edcc7789 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: pil-mss: free the allocated area during ramdump"

parents 5bbc9bf6 eb25040d
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -357,7 +357,6 @@ err_power:
	return ret;
}

#define MBA_SIZE SZ_1M
int pil_mss_reset_load_mba(struct pil_desc *pil)
{
	struct q6v5_data *drv = container_of(pil, struct q6v5_data, desc);
@@ -380,10 +379,11 @@ int pil_mss_reset_load_mba(struct pil_desc *pil)
		return ret;
	}

	drv->mba_size = SZ_1M;
	md->mba_mem_dev.coherent_dma_mask =
		DMA_BIT_MASK(sizeof(dma_addr_t) * 8);
	mba_virt = dma_alloc_coherent(&md->mba_mem_dev, MBA_SIZE, &mba_phys,
					GFP_KERNEL);
	mba_virt = dma_alloc_coherent(&md->mba_mem_dev, drv->mba_size,
					&mba_phys, GFP_KERNEL);
	if (!mba_virt) {
		dev_err(pil->dev, "MBA metadata buffer allocation failed\n");
		ret = -ENOMEM;
@@ -410,7 +410,7 @@ int pil_mss_reset_load_mba(struct pil_desc *pil)
	return 0;

err_mss_reset:
	dma_free_coherent(&md->mba_mem_dev, MBA_SIZE, drv->mba_virt,
	dma_free_coherent(&md->mba_mem_dev, drv->mba_size, drv->mba_virt,
				drv->mba_phys);
err_dma_alloc:
	release_firmware(fw);
@@ -523,7 +523,7 @@ static int pil_msa_mba_auth(struct pil_desc *pil)

	if (drv->q6 && drv->q6->mba_virt)
		/* Reclaim MBA memory. */
		dma_free_coherent(&drv->mba_mem_dev, MBA_SIZE,
		dma_free_coherent(&drv->mba_mem_dev, drv->q6->mba_size,
					drv->q6->mba_virt, drv->q6->mba_phys);
	if (ret)
		modem_log_rmb_regs(drv->rmb_base);
+3 −0
Original line number Diff line number Diff line
@@ -165,6 +165,9 @@ static int modem_ramdump(int enable, const struct subsys_desc *subsys)
	if (ret < 0)
		pr_err("Unable to dump modem fw memory (rc = %d).\n", ret);

	dma_free_coherent(&drv->mba_mem_dev, drv->q6->mba_size,
				drv->q6->mba_virt, drv->q6->mba_phys);

	pil_mss_shutdown(&drv->q6->desc);
	pil_mss_remove_proxy_votes(&drv->q6->desc);
	return ret;
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ struct q6v5_data {
	bool self_auth;
	phys_addr_t mba_phys;
	void *mba_virt;
	size_t mba_size;
	bool qdsp6v55;
	bool qdsp6v5_2_0;
	bool qdsp6v56;