• Ira Weiny's avatar
    cxl/mem: Read, trace, and clear events on driver load · 6ebe28f9
    Ira Weiny authored
    CXL devices have multiple event logs which can be queried for CXL event
    records.  Devices are required to support the storage of at least one
    event record in each event log type.
    
    Devices track event log overflow by incrementing a counter and tracking
    the time of the first and last overflow event seen.
    
    Software queries events via the Get Event Record mailbox command; CXL
    rev 3.0 section 8.2.9.2.2 and clears events via CXL rev 3.0 section
    8.2.9.2.3 Clear Event Records mailbox command.
    
    If the result of negotiating CXL Error Reporting Control is OS control,
    read and clear all event logs on driver load.
    
    Ensure a clean slate of events by reading and clearing the events on
    driver load.
    
    The status register is not used because a device may continue to trigger
    events and the only requirement is to empty the log at least once.  This
    allows for the required transition from empty to non-empty for interrupt
    generation.  Handling of interrupts is in a follow on patch.
    
    The device can return up to 1MB worth of event records per query.
    Allocate a shared large buffer to handle the max number of records based
    on the mailbox payload size.
    
    This patch traces a raw event record and leaves specific event record
    type tracing to subsequent patches.  Macros are created to aid in
    tracing the common CXL Event header fields.
    
    Each record is cleared explicitly.  A clear all bit is specified but is
    only valid when the log overflows.
    Reviewed-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: default avatarIra Weiny <ira.weiny@intel.com>
    Link: https://lore.kernel.org/r/20221216-cxl-ev-log-v7-1-2316a5c8f7d8@intel.comSigned-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    6ebe28f9
cxl.h 23 KB