summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/msm/adreno_snapshot.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/gpu/msm/adreno_snapshot.c b/drivers/gpu/msm/adreno_snapshot.c
index a8a055eeae0a..fa30e32fed88 100644
--- a/drivers/gpu/msm/adreno_snapshot.c
+++ b/drivers/gpu/msm/adreno_snapshot.c
@@ -322,7 +322,10 @@ static void snapshot_rb_ibs(struct kgsl_device *device,
index--;
if (index < 0) {
- index = KGSL_RB_DWORDS - 3;
+ if (ADRENO_LEGACY_PM4(adreno_dev))
+ index = KGSL_RB_DWORDS - 3;
+ else
+ index = KGSL_RB_DWORDS - 4;
/* We wrapped without finding what we wanted */
if (index < rb->wptr) {
@@ -331,9 +334,19 @@ static void snapshot_rb_ibs(struct kgsl_device *device,
}
}
- if (adreno_cmd_is_ib(adreno_dev, rbptr[index]) &&
- rbptr[index + 1] == ibbase)
- break;
+ if (adreno_cmd_is_ib(adreno_dev, rbptr[index])) {
+ if (ADRENO_LEGACY_PM4(adreno_dev)) {
+ if (rbptr[index + 1] == ibbase)
+ break;
+ } else {
+ uint64_t ibaddr;
+
+ ibaddr = rbptr[index + 2];
+ ibaddr = ibaddr << 32 | rbptr[index + 1];
+ if (ibaddr == ibbase)
+ break;
+ }
+ }
} while (index != rb->wptr);
/*