-
Notifications
You must be signed in to change notification settings - Fork 69
Open
Description
I had this panic on my Morello box today when I pressed a key to open the screen locker to check on a port build.
panic: Unhandled EL1 data abort: 0x35
cpuid = 2
time = 1743777843
KDB: stack backtrace:
db_trace_self() at db_trace_self
db_trace_self_wrapper() at db_trace_self_wrapper+0x3c
vpanic() at vpanic+0x190
panic() at panic+0x48
do_el1h_sync() at do_el1h_sync+0x1b8
handle_el1h_sync() at handle_el1h_sync+0x14
--- exception, esr 0x96000035
pmap_enter() at pmap_enter+0xe88
vm_fault() at vm_fault+0x1168
vm_fault_trap() at vm_fault_trap+0x78
data_abort() at data_abort+0x1d4
do_el0_sync() at do_el0_sync+0xa8
handle_el0_sync() at handle_el0_sync+0x34
--- exception, esr 0x9200006c
This particular DFSC for a data abort is unusual:
0b110101 IMPLEMENTATION DEFINED fault (Unsupported Exclusive or Atomic access).
And it occurred on a SWP instruction to update a PTE:
at /usr/home/john/work/git/cheribsd/sys/arm64/arm64/pmap.c:5612
5612 orig_l3 = pmap_load_store(l3, new_l3);
[11:14](https://ctsrd.slack.com/archives/CSL02MW3Y/p1743779662852239)
(kgdb) x/i $pc
=> 0xffff00000092b688 <pmap_enter+3720>: swp x19, x21, [c28]
[11:14](https://ctsrd.slack.com/archives/CSL02MW3Y/p1743779685694069)
(kgdb) p $c28
$2 = () 0xffffa084b7bfdc58 [rwRW,0xffffa084b7bfd000-0xffffa084b7bfe000] (invalid)
The address of $c28 is a valid DMAP address:
(kgdb) set $va = 0xffffa084b7bfdc58
(kgdb) pmap_kextract $va
KVA 0xffffa084b7bfdc58 => 0x84b7bfdc58
(kgdb) p/x dmap_phys_max
$69 = 0x8800000000
(kgdb) p/x dmap_phys_base
$70 = 0x80000000
Yet, when I try to find the PTE for it (e.g. to check if it's somehow mapped with WC due to the page previously being used by DRM which is my current theory): the L0 entry for it is invalid:
(kgdb) p/x ($va >> $L0_SHIFT) & $L0_ADDR_MASK
$73 = 0x142
(kgdb) p kernel_pmap_store.pm_l0[0x142]
$74 = 0
Metadata
Metadata
Assignees
Labels
No labels