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));
|
} __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 {
|
struct mali_payload_set_value {
|
||||||
u64 out;
|
u64 out;
|
||||||
u64 unknown;
|
u64 unknown;
|
||||||
|
|
|
@ -459,6 +459,22 @@ pandecode_mfbd_block_format(enum mali_mfbd_block_format fmt)
|
||||||
}
|
}
|
||||||
#undef DEFINE_CASE
|
#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
|
/* Midgard's tiler descriptor is embedded within the
|
||||||
* larger FBD */
|
* 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);
|
pandecode_prop("job_descriptor_size = %d", h->job_descriptor_size);
|
||||||
|
|
||||||
if (h->exception_status != 0x1)
|
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,
|
||||||
(h->exception_status >> 16) & 0xFFFF,
|
(h->exception_status >> 16) & 0xFFFF,
|
||||||
(h->exception_status >> 8) & 0x3,
|
pandecode_exception_access((h->exception_status >> 8) & 0x3),
|
||||||
h->exception_status & 0xFF);
|
h->exception_status & 0xFF);
|
||||||
|
|
||||||
if (h->first_incomplete_task)
|
if (h->first_incomplete_task)
|
||||||
|
|
Loading…
Reference in New Issue