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

Commit af1062c9 authored by Deepak Kumar's avatar Deepak Kumar Committed by Gerrit - the friendly Code Review server
Browse files

msm: kgsl: Dump both GMU and GPU state for GMU faults



GPU state especially command processor state is important
to debug GMU fault. If GPU is powered ON, dump both GMU
and GPU state for GMU faults to make sure all required
state needed for debug is captured.

Change-Id: I71b359cd944a12cb19c419bca0254fd2fa468328
Signed-off-by: default avatarDeepak Kumar <dkumar@codeaurora.org>
parent 786e83fb
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -3847,7 +3847,6 @@ static const struct kgsl_functable adreno_functable = {
	.device_private_create = adreno_device_private_create,
	.device_private_destroy = adreno_device_private_destroy,
	/* Optional functions */
	.snapshot_gmu = adreno_snapshot_gmu,
	.drawctxt_create = adreno_drawctxt_create,
	.drawctxt_detach = adreno_drawctxt_detach,
	.drawctxt_destroy = adreno_drawctxt_destroy,
+0 −5
Original line number Diff line number Diff line
@@ -953,8 +953,6 @@ struct adreno_gpudev {
	/* GPU specific function hooks */
	void (*irq_trace)(struct adreno_device *, unsigned int status);
	void (*snapshot)(struct adreno_device *, struct kgsl_snapshot *);
	void (*snapshot_debugbus)(struct adreno_device *adreno_dev,
			struct kgsl_snapshot *snapshot);
	void (*platform_setup)(struct adreno_device *);
	void (*init)(struct adreno_device *);
	void (*remove)(struct adreno_device *);
@@ -1126,9 +1124,6 @@ void adreno_snapshot(struct kgsl_device *device,
		struct kgsl_snapshot *snapshot,
		struct kgsl_context *context);

void adreno_snapshot_gmu(struct kgsl_device *device,
		struct kgsl_snapshot *snapshot);

int adreno_reset(struct kgsl_device *device, int fault);

void adreno_fault_skipcmd_detached(struct adreno_device *adreno_dev,
+0 −1
Original line number Diff line number Diff line
@@ -2925,7 +2925,6 @@ struct adreno_gpudev adreno_a6xx_gpudev = {
	.reg_offsets = &a6xx_reg_offsets,
	.start = a6xx_start,
	.snapshot = a6xx_snapshot,
	.snapshot_debugbus = a6xx_snapshot_debugbus,
	.irq = &a6xx_irq,
	.snapshot_data = &a6xx_snapshot_data,
	.irq_trace = trace_kgsl_a5xx_irq_status,
+0 −2
Original line number Diff line number Diff line
@@ -191,8 +191,6 @@ void a6xx_preemption_context_destroy(struct kgsl_context *context);

void a6xx_snapshot(struct adreno_device *adreno_dev,
		struct kgsl_snapshot *snapshot);
void a6xx_snapshot_debugbus(struct adreno_device *adreno_dev,
		struct kgsl_snapshot *snapshot);
void a6xx_crashdump_init(struct adreno_device *adreno_dev);
int a6xx_gmu_sptprac_enable(struct adreno_device *adreno_dev);
void a6xx_gmu_sptprac_disable(struct adreno_device *adreno_dev);
+10 −1
Original line number Diff line number Diff line
@@ -1285,7 +1285,7 @@ static size_t a6xx_snapshot_cx_dbgc_debugbus_block(struct kgsl_device *device,
}

/* a6xx_snapshot_debugbus() - Capture debug bus data */
void a6xx_snapshot_debugbus(struct adreno_device *adreno_dev,
static void a6xx_snapshot_debugbus(struct adreno_device *adreno_dev,
		struct kgsl_snapshot *snapshot)
{
	int i;
@@ -1501,6 +1501,15 @@ void a6xx_snapshot(struct adreno_device *adreno_dev,
	if (GMU_DEV_OP_VALID(gmu_dev_ops, snapshot))
		gmu_dev_ops->snapshot(adreno_dev, snapshot);

	/*
	 * Dump debugbus data here to capture it for both
	 * GMU and GPU snapshot. Debugbus data can be accessed
	 * even if the gx headswitch or sptprac is off. If gx
	 * headswitch is off, data for gx blocks will show as
	 * 0x5c00bd00.
	 */
	a6xx_snapshot_debugbus(adreno_dev, snapshot);

	sptprac_on = gpudev->sptprac_is_on(adreno_dev);

	if (GMU_DEV_OP_VALID(gmu_dev_ops, gx_is_on))
Loading