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:
parent
f5cc5ef404
commit
358372b256
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue