Merge "msm: kgsl: Fix snapshot collection for ib1"

This commit is contained in:
qctecmdr 2021-05-12 08:42:26 -07:00 • committed by Gerrit - the friendly Code Review server
commit 552a812707

View file

@ -183,7 +183,17 @@ void adreno_parse_ib(struct kgsl_device *device,
* then push it into the static blob otherwise put it in the dynamic
* list
*/
if (gpuaddr == snapshot->ib1base) {
if (kgsl_addr_range_overlap(gpuaddr, dwords,
snapshot->ib1base, snapshot->ib1size)) {
/*
* During restore after preemption, ib1base in the register
* can be updated by CP. In such scenarios, to dump complete
* IB1 in snapshot, we should consider ib1base from ringbuffer.
*/
if (gpuaddr != snapshot->ib1base) {
snapshot->ib1base = gpuaddr;
snapshot->ib1size = dwords;
}
kgsl_snapshot_push_object(device, process, gpuaddr, dwords);
return;
}
@ -287,16 +297,29 @@ static void snapshot_rb_ibs(struct kgsl_device *device,
}
if (adreno_cmd_is_ib(adreno_dev, rbptr[index])) {
if (ADRENO_LEGACY_PM4(adreno_dev)) {
if (rbptr[index + 1] == snapshot->ib1base)
break;
} else {
uint64_t ibaddr;
uint64_t ibaddr;
uint64_t ibsize;
if (ADRENO_LEGACY_PM4(adreno_dev)) {
ibaddr = rbptr[index + 1];
ibsize = rbptr[index + 2];
} else {
ibaddr = rbptr[index + 2];
ibaddr = ibaddr << 32 | rbptr[index + 1];
if (ibaddr == snapshot->ib1base)
break;
ibsize = rbptr[index + 3];
}
if (kgsl_addr_range_overlap(ibaddr, ibsize,
snapshot->ib1base, snapshot->ib1size)) {
/*
* During restore after preemption, ib1base in
* the register can be updated by CP. In such
* scenario, to dump complete IB1 in snapshot,
* we should consider ib1base from ringbuffer.
*/
snapshot->ib1base = ibaddr;
snapshot->ib1size = ibsize;
break;
}
}
} while (index != rb->wptr);
@ -884,8 +907,7 @@ void adreno_snapshot(struct kgsl_device *device, struct kgsl_snapshot *snapshot,
* figure how often this really happens.
*/
if (-ENOENT == find_object(snapshot->ib1base, snapshot->process) &&
snapshot->ib1size) {
if (-ENOENT == find_object(snapshot->ib1base, snapshot->process)) {
struct kgsl_mem_entry *entry;
u64 ibsize;