On Fri, Oct 03, 2025 at 12:33:03PM +0100, Mark Brown wrote:
On Fri, Oct 03, 2025 at 10:46:41AM +0900, Byungchul Park wrote:
quoted
On Thu, Oct 02, 2025 at 12:39:31PM +0100, Mark Brown wrote:
quoted
On Thu, Oct 02, 2025 at 05:12:09PM +0900, Byungchul Park wrote:
quoted
dept needs to notice every entrance from user to kernel mode to treat
every kernel context independently when tracking wait-event dependencies.
Roughly, system call and user oriented fault are the cases.
quoted
quoted
quoted
Make dept aware of the entrances of arm64 and add support
CONFIG_ARCH_HAS_DEPT_SUPPORT to arm64.
quoted
quoted
The description of what needs to be tracked probably needs some
tightening up here, it's not clear to me for example why exceptions for
mops or the vector extensions aren't included here, or what the
distinction is with error faults like BTI or GCS not being tracked?
quoted
Thanks for the feedback but I'm afraid I don't get you. Can you explain
in more detail with example?
Your commit log says we need to track every entrance from user mode to
kernel mode but the code only adds tracking to syscalls and some memory
faults. The exception types listed above (and some others) also result
in entries to the kernel from userspace.
You're right. Each kernel mode context needs to be tracked
independently. Just for your information, context ID is used for making
DEPT only track waits and events within each context, preventing
tracking those across independent contexts to avoid false positives.
Currently, irq, fault, and system calls are covered. It should be taken
into account if any other exceptions can include waits and events anyway.
quoted
JFYI, pairs of wait and its event need to be tracked to see if each
event can be prevented from being reachable by other waits like:
quoted
context X context Y
lock L
...
initiate event A context start toward event A
... ...
wait A // wait for event A and lock L // wait for unlock L and
// prevent unlock L // prevent event A
... ...
unlock L unlock L
...
event A
quoted
I meant things like this need to be tracked.
I don't think that's at all clear from the above context, and the
handling for some of the above exception types (eg, the vector
extensions) includes taking locks.
A trivial thing to mention, each typical lock pair, lock and unlock, can
only happen within each independent context, not across different
contexts. So the context ID is not necessary for typical locks.
exception X
lock A;
...
unlock A; // already guarateed to unlock A in the context that lock A
// has been acqured in.
...
finish exception X and return back to user mode;
But yes, as you concern, we should take into account all the exceptions
if any can include general waits and events in it, to avoid unnecessary
false positives.
Thank you!
Byungchul