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

Commit b36bb496 authored by Rajesh Kemisetti's avatar Rajesh Kemisetti Committed by Gerrit - the friendly Code Review server
Browse files

msm: kgsl: Add GBIF registers and debugbus details to A6x snapshot dump



Add GBIF registers and debugbus details to snapshot dump
in case of GPU hang. This will help to analyze the hang further.

Change-Id: I52f8c73a56d643376625f9217b6c7dab2836d8b9
Signed-off-by: default avatarRajesh Kemisetti <rajeshk@codeaurora.org>
parent f9be789a
Loading
Loading
Loading
Loading
+34 −6
Original line number Diff line number Diff line
@@ -210,6 +210,11 @@ static const unsigned int a6xx_vbif_ver_20xxxxxx_registers[] = {
	0x3410, 0x3410, 0x3800, 0x3801,
};

static const unsigned int a6xx_gbif_registers[] = {
	/* GBIF */
	0x3C00, 0X3C0B, 0X3C40, 0X3C47, 0X3CC0, 0X3CD1,
};

static const unsigned int a6xx_gmu_gx_registers[] = {
	/* GMU GX */
	0x1A800, 0x1A800, 0x1A810, 0x1A813, 0x1A816, 0x1A816, 0x1A818, 0x1A81B,
@@ -1274,9 +1279,17 @@ static void a6xx_snapshot_debugbus(struct kgsl_device *device,
			snapshot, a6xx_snapshot_dbgc_debugbus_block,
			(void *) &a6xx_dbgc_debugbus_blocks[i]);
	}

	/* Skip if GPU has GBIF */
	if (!adreno_has_gbif(adreno_dev))
	/*
	 * GBIF has same debugbus as of other GPU blocks hence fall back to
	 * default path if GPU uses GBIF.
	 * GBIF uses exactly same ID as of VBIF so use it as it is.
	 */
	if (adreno_has_gbif(adreno_dev))
		kgsl_snapshot_add_section(device,
			KGSL_SNAPSHOT_SECTION_DEBUGBUS,
			snapshot, a6xx_snapshot_dbgc_debugbus_block,
			(void *) &a6xx_vbif_debugbus_blocks);
	else
		kgsl_snapshot_add_section(device,
			KGSL_SNAPSHOT_SECTION_DEBUGBUS,
			snapshot, a6xx_snapshot_vbif_debugbus_block,
@@ -1289,6 +1302,17 @@ static void a6xx_snapshot_debugbus(struct kgsl_device *device,
				KGSL_SNAPSHOT_SECTION_DEBUGBUS,
				snapshot, a6xx_snapshot_cx_dbgc_debugbus_block,
				(void *) &a6xx_cx_dbgc_debugbus_blocks[i]);
			/*
			 * Get debugbus for GBIF CX part if GPU has GBIF block
			 * GBIF uses exactly same ID as of VBIF so use
			 * it as it is.
			 */
			if (adreno_has_gbif(adreno_dev))
				kgsl_snapshot_add_section(device,
					KGSL_SNAPSHOT_SECTION_DEBUGBUS,
					snapshot,
					a6xx_snapshot_cx_dbgc_debugbus_block,
					(void *) &a6xx_vbif_debugbus_blocks);
		}
	}
}
@@ -1429,6 +1453,10 @@ void a6xx_snapshot(struct adreno_device *adreno_dev,
		adreno_snapshot_vbif_registers(device, snapshot,
			a6xx_vbif_snapshot_registers,
			ARRAY_SIZE(a6xx_vbif_snapshot_registers));
	else
		adreno_snapshot_registers(device, snapshot,
			a6xx_gbif_registers,
			ARRAY_SIZE(a6xx_gbif_registers) / 2);

	/* Try to run the crash dumper */
	if (sptprac_on)