• Beau Belgrave's avatar
    tracing/user_events: Use remote writes for event enablement · 72357590
    Beau Belgrave authored
    As part of the discussions for user_events aligned with user space
    tracers, it was determined that user programs should register a aligned
    value to set or clear a bit when an event becomes enabled. Currently a
    shared page is being used that requires mmap(). Remove the shared page
    implementation and move to a user registered address implementation.
    
    In this new model during the event registration from user programs 3 new
    values are specified. The first is the address to update when the event
    is either enabled or disabled. The second is the bit to set/clear to
    reflect the event being enabled. The third is the size of the value at
    the specified address.
    
    This allows for a local 32/64-bit value in user programs to support
    both kernel and user tracers. As an example, setting bit 31 for kernel
    tracers when the event becomes enabled allows for user tracers to use
    the other bits for ref counts or other flags. The kernel side updates
    the bit atomically, user programs need to also update these values
    atomically.
    
    User provided addresses must be aligned on a natural boundary, this
    allows for single page checking and prevents odd behaviors such as a
    enable value straddling 2 pages instead of a single page. Currently
    page faults are only logged, future patches will handle these.
    
    Link: https://lkml.kernel.org/r/20230328235219.203-4-beaub@linux.microsoft.comSuggested-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Signed-off-by: default avatarBeau Belgrave <beaub@linux.microsoft.com>
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    72357590
trace_events_user.c 48.8 KB