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

Commit f02eb0ba authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Snapshot all GMU memory blocks"

parents 9c634643 ecf8293a
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1523,6 +1523,9 @@ static void a6xx_gmu_snapshot(struct adreno_device *adreno_dev,
	bool gx_on;
	struct gmu_mem_type_desc desc[] = {
		{gmu->hfi_mem, SNAPSHOT_GMU_MEM_HFI},
		{gmu->persist_mem, SNAPSHOT_GMU_MEM_BIN_BLOCK},
		{gmu->icache_mem, SNAPSHOT_GMU_MEM_BIN_BLOCK},
		{gmu->dcache_mem, SNAPSHOT_GMU_MEM_BIN_BLOCK},
		{gmu->gmu_log, SNAPSHOT_GMU_MEM_LOG},
		{gmu->dump_mem, SNAPSHOT_GMU_MEM_BIN_BLOCK} };
	unsigned int val, i;
+21 −12
Original line number Diff line number Diff line
@@ -369,6 +369,9 @@ static void gmu_kmem_close(struct gmu_device *gmu)
	struct gmu_iommu_context *ctx = &gmu_ctx[GMU_CONTEXT_KERNEL];

	gmu->hfi_mem = NULL;
	gmu->persist_mem = NULL;
	gmu->icache_mem = NULL;
	gmu->dcache_mem = NULL;
	gmu->dump_mem = NULL;
	gmu->gmu_log = NULL;

@@ -437,26 +440,32 @@ static int gmu_memory_probe(struct kgsl_device *device,

	/* Allocates & maps memory for WB DUMMY PAGE */
	/* Must be the first alloc */
	md = allocate_gmu_kmem(gmu, GMU_NONCACHED_KERNEL,
			DUMMY_SIZE, (IOMMU_READ | IOMMU_WRITE | IOMMU_PRIV));
	if (IS_ERR(md)) {
		ret = PTR_ERR(md);
	if (IS_ERR_OR_NULL(gmu->persist_mem))
		gmu->persist_mem = allocate_gmu_kmem(gmu, GMU_NONCACHED_KERNEL,
				DUMMY_SIZE,
				(IOMMU_READ | IOMMU_WRITE | IOMMU_PRIV));
	if (IS_ERR(gmu->persist_mem)) {
		ret = PTR_ERR(gmu->persist_mem);
		goto err_ret;
	}

	/* Allocates & maps memory for DCACHE */
	md = allocate_gmu_kmem(gmu, GMU_DCACHE, gmu_vma[GMU_DCACHE].size,
	if (IS_ERR_OR_NULL(gmu->dcache_mem))
		gmu->dcache_mem = allocate_gmu_kmem(gmu, GMU_DCACHE,
				gmu_vma[GMU_DCACHE].size,
				(IOMMU_READ | IOMMU_WRITE | IOMMU_PRIV));
	if (IS_ERR(md)) {
		ret = PTR_ERR(md);
	if (IS_ERR(gmu->dcache_mem)) {
		ret = PTR_ERR(gmu->dcache_mem);
		goto err_ret;
	}

	/* Allocates & maps memory for ICACHE */
	md = allocate_gmu_kmem(gmu, GMU_ICACHE, gmu_vma[GMU_ICACHE].size,
	if (IS_ERR_OR_NULL(gmu->icache_mem))
		gmu->icache_mem = allocate_gmu_kmem(gmu, GMU_ICACHE,
				gmu_vma[GMU_ICACHE].size,
				(IOMMU_READ | IOMMU_WRITE | IOMMU_PRIV));
	if (IS_ERR(md)) {
		ret = PTR_ERR(md);
	if (IS_ERR(gmu->icache_mem)) {
		ret = PTR_ERR(gmu->icache_mem);
		goto err_ret;
	}

+6 −0
Original line number Diff line number Diff line
@@ -132,6 +132,9 @@ struct kgsl_mailbox {
 * @gmu_interrupt_num: GMU interrupt number
 * @fw_image: GMU FW image
 * @hfi_mem: pointer to HFI shared memory
 * @icache_mem: pointer to GMU icache memory
 * @dcache_mem: pointer to GMU dcache memory
 * @persist_mem: pointer to GMU persistent memory
 * @dump_mem: pointer to GMU debug dump memory
 * @gmu_log: gmu event log memory
 * @hfi: HFI controller
@@ -167,6 +170,9 @@ struct gmu_device {
	unsigned int gmu_interrupt_num;
	const struct firmware *fw_image;
	struct gmu_memdesc *hfi_mem;
	struct gmu_memdesc *icache_mem;
	struct gmu_memdesc *dcache_mem;
	struct gmu_memdesc *persist_mem;
	struct gmu_memdesc *dump_mem;
	struct gmu_memdesc *gmu_log;
	struct kgsl_hfi hfi;