pan/decode: Decode invalid access type upon fault

We don't have a good way to confirm this, but it parallels the kernel
definitons for MMU faults nicely.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-08-09 16:04:24 -07:00
parent f5cc5ef404
commit 358372b256
2 changed files with 33 additions and 2 deletions

View File

@ -652,6 +652,21 @@ struct mali_job_descriptor_header {
};
} __attribute__((packed));
/* These concern exception_status */
/* Access type causing a fault, paralleling AS_FAULTSTATUS_* entries in the
* kernel */
enum mali_exception_access {
/* Atomic in the kernel for MMU, but that doesn't make sense for a job
* fault so it's just unused */
MALI_EXCEPTION_ACCESS_NONE = 0,
MALI_EXCEPTION_ACCESS_EXECUTE = 1,
MALI_EXCEPTION_ACCESS_READ = 2,
MALI_EXCEPTION_ACCESS_WRITE = 3
};
struct mali_payload_set_value {
u64 out;
u64 unknown;

View File

@ -459,6 +459,22 @@ pandecode_mfbd_block_format(enum mali_mfbd_block_format fmt)
}
#undef DEFINE_CASE
#define DEFINE_CASE(name) case MALI_EXCEPTION_ACCESS_## name: return ""#name
static char *
pandecode_exception_access(enum mali_exception_access fmt)
{
switch (fmt) {
DEFINE_CASE(NONE);
DEFINE_CASE(EXECUTE);
DEFINE_CASE(READ);
DEFINE_CASE(WRITE);
default:
unreachable("Invalid case");
}
}
#undef DEFINE_CASE
/* Midgard's tiler descriptor is embedded within the
* larger FBD */
@ -2333,10 +2349,10 @@ pandecode_jc(mali_ptr jc_gpu_va, bool bifrost)
pandecode_prop("job_descriptor_size = %d", h->job_descriptor_size);
if (h->exception_status != 0x1)
pandecode_prop("exception_status = %x (source ID: 0x%x access: 0x%x exception: 0x%x)",
pandecode_prop("exception_status = %x (source ID: 0x%x access: %s exception: 0x%x)",
h->exception_status,
(h->exception_status >> 16) & 0xFFFF,
(h->exception_status >> 8) & 0x3,
pandecode_exception_access((h->exception_status >> 8) & 0x3),
h->exception_status & 0xFF);
if (h->first_incomplete_task)