graeme.jenkinson_cl.cam.ac.uk (Graeme Jenkinson)
User

Projects

User does not belong to any projects.

User Details

User Since
Jul 7 2016, 3:31 PM (79 w, 5 d)

Recent Activity

Mar 2 2017

graeme.jenkinson_cl.cam.ac.uk updated D9866: Enabling all DTrace fbt probes (fbt::: {}) hangs on the system on ARM platforms.
Mar 2 2017, 3:16 PM
graeme.jenkinson_cl.cam.ac.uk retitled D9866: Enabling all DTrace fbt probes (fbt::: {}) hangs on the system on ARM platforms from to Enabling all DTrace fbt probes (fbt::: {}) hangs on the system on ARM platforms.
Mar 2 2017, 3:15 PM

Feb 23 2017

graeme.jenkinson_cl.cam.ac.uk updated the diff for D9701: Errors caused by DTrace are not correctly handled by ARMv6 abort_handler().

Confirmed that calling dtrace_trap_func from abort_fatal() is correct (my mistake).

Feb 23 2017, 1:33 PM · ARM, DTrace
graeme.jenkinson_cl.cam.ac.uk added a comment to D9701: Errors caused by DTrace are not correctly handled by ARMv6 abort_handler().

In my example a malformed script results in a memory access to 0x02. The resulting translation fault brings the system down. This should not happen.

Yes, due to missing FAULT_TRAN_L[1][2]: case in dtrace_trap().

dtrace_trap() tests whether the system is in probe context, by checking the flag cpu_core[curcpu].cpuc_dtrace_flags & CPU_DTRACE_NOFAULT. If this is set the translation fault should not be handled by the normal code path, instead the DTrace error probe should fire and the DTrace script resume processing.

In the original code dtrace_trap() was called from abort_fatal(). abort_fatal() is never called for translation faults (or alignment faults). It would be possible to populate the aborts array with handlers that call dtrace_trap() infor L1 and L2 translation faults and alignment faults, but I think that this is a bit messy.

I don't agree here. All fatal traps ends in abort_fatal(), including all translation or alignment faults.
Kernel mode FAULT_TRAN_L[1][2] traps calls abort_fatal() at line 501.

Other architectures handling dtrace_trap() immediately on entering the trap handler (I'll expand on this point when replying to the other comment).

But other architectures doesn't emulates access or modify bits in SW. In peaks, quadcore ARM can easily get over 100k/sec of traps, filtered down (by pmap_fault()) to 3~5 k of 'real' ones.

But again, are you're really sure that calling dtrace probe for trap caused by swapped out page(for example) and thus fully covered by vm_fault() is right one?
In other words, can dtrace probe handle these 'false alarms' ?
In my opinion no, at least not on ARM.

In any case, I haven't a single problem if you put dtrace hook anywhere behind the line 352.

Feb 23 2017, 12:40 PM · ARM, DTrace
graeme.jenkinson_cl.cam.ac.uk added a comment to D9701: Errors caused by DTrace are not correctly handled by ARMv6 abort_handler().

Can you be, please, little more specific for
"abort_handler - didn't call the dtrace_trap() function early enough to handle faults caused by DTrace " ?

Which faults are not handled if KDTRACE_HOOKS is on original location?
I'm only curious here, and my knowledge of DTRACE are very limited. But are you sure that DTRACE wants to see faults, possibly handled by vm_fault()? Or by pcb_onfault()... ?

Feb 23 2017, 9:19 AM · ARM, DTrace

Feb 21 2017

graeme.jenkinson_cl.cam.ac.uk retitled D9701: Errors caused by DTrace are not correctly handled by ARMv6 abort_handler() from to Errors caused by DTrace are not correctly handled by ARMv6 abort_handler().
Feb 21 2017, 11:55 AM · ARM, DTrace

Jan 18 2017

graeme.jenkinson_cl.cam.ac.uk retitled D9229: Corrected handling of fifth parameter in DTrace's FBT provider for ARM from to Corrected handling of fifth parameter in DTrace's FBT provider for ARM .
Jan 18 2017, 11:13 AM

Jan 13 2017

graeme.jenkinson_cl.cam.ac.uk updated the diff for D9051: Replacement for DTrace's RAND subroutine .

Review comments addressed.

Jan 13 2017, 10:12 AM · DTrace

Jan 5 2017

graeme.jenkinson_cl.cam.ac.uk retitled D9051: Replacement for DTrace's RAND subroutine from to Replacement for DTrace's RAND subroutine .
Jan 5 2017, 6:56 PM · DTrace