• Maximilian Luz's avatar
    platform/surface: aggregator: Allow registering notifiers without enabling events · 0e8512fa
    Maximilian Luz authored
    Currently, each SSAM event notifier is directly tied to one group of
    events. This makes sense as registering a notifier will automatically
    take care of enabling the corresponding event group and normally drivers
    only need notifications for a very limited number of events, associated
    with different callbacks for each group.
    
    However, there are rare cases, especially for debugging, when we want to
    get notifications for a whole event target category instead of just a
    single group of events in that category. Registering multiple notifiers,
    i.e. one per group, may be infeasible due to two issues: a) we might not
    know every event enable/disable specification as some events are
    auto-enabled by the EC and b) forwarding this to the same callback will
    lead to duplicate events as we might not know the full event
    specification to perform the appropriate filtering.
    
    This commit introduces observer-notifiers, which are notifiers that are
    not tied to a specific event group and do not attempt to manage any
    events. In other words, they can be registered without enabling any
    event group or incrementing the corresponding reference count and just
    act as silent observers, listening to all currently/previously enabled
    events based on their match-specification.
    
    Essentially, this allows us to register one single notifier for a full
    event target category, meaning that we can process all events of that
    target category in a single callback without duplication. Specifically,
    this will be used in the cdev debug interface to forward events to
    user-space via a device file from which the events can be read.
    Signed-off-by: default avatarMaximilian Luz <luzmaximilian@gmail.com>
    Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20210604134755.535590-2-luzmaximilian@gmail.comSigned-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    0e8512fa
controller.c 76.7 KB