An error occurred fetching the project authors.
  1. 23 May, 2023 2 commits
  2. 18 May, 2023 1 commit
  3. 23 Apr, 2023 1 commit
  4. 18 Apr, 2023 1 commit
  5. 14 Feb, 2023 2 commits
  6. 30 Jan, 2023 2 commits
  7. 27 Jan, 2023 1 commit
    • Davidlohr Bueso's avatar
      cxl/mem: Wire up event interrupts · a49aa814
      Davidlohr Bueso authored
      Currently the only CXL features targeted for irq support require their
      message numbers to be within the first 16 entries.  The device may
      however support less than 16 entries depending on the support it
      provides.
      
      Attempt to allocate these 16 irq vectors.  If the device supports less
      then the PCI infrastructure will allocate that number.  Upon successful
      allocation, users can plug in their respective isr at any point
      thereafter.
      
      CXL device events are signaled via interrupts.  Each event log may have
      a different interrupt message number.  These message numbers are
      reported in the Get Event Interrupt Policy mailbox command.
      
      Add interrupt support for event logs.  Interrupts are allocated as
      shared interrupts.  Therefore, all or some event logs can share the same
      message number.
      
      In addition all logs are queried on any interrupt in order of the most
      to least severe based on the status register.
      
      Finally place all event configuration logic into cxl_event_config().
      Previously the logic was a simple 'read all' on start up.  But
      interrupts must be configured prior to any reads to ensure no events are
      missed.  A single event configuration function results in a cleaner over
      all implementation.
      
      Cc: Bjorn Helgaas <helgaas@kernel.org>
      Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
      Co-developed-by: default avatarIra Weiny <ira.weiny@intel.com>
      Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
      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-2-2316a5c8f7d8@intel.comSigned-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      a49aa814
  8. 26 Jan, 2023 1 commit
    • 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
  9. 25 Jan, 2023 1 commit
  10. 09 Jan, 2023 1 commit
  11. 05 Jan, 2023 1 commit
  12. 06 Dec, 2022 2 commits
  13. 05 Dec, 2022 1 commit
    • Dan Williams's avatar
      cxl/port: Add RCD endpoint port enumeration · 0a19bfc8
      Dan Williams authored
      Unlike a CXL memory expander in a VH topology that has at least one
      intervening 'struct cxl_port' instance between itself and the CXL root
      device, an RCD attaches one-level higher. For example:
      
                     VH
                ┌──────────┐
                │ ACPI0017 │
                │  root0   │
                └─────┬────┘
                      │
                ┌─────┴────┐
                │  dport0  │
          ┌─────┤ ACPI0016 ├─────┐
          │     │  port1   │     │
          │     └────┬─────┘     │
          │          │           │
       ┌──┴───┐   ┌──┴───┐   ┌───┴──┐
       │dport0│   │dport1│   │dport2│
       │ RP0  │   │ RP1  │   │ RP2  │
       └──────┘   └──┬───┘   └──────┘
                     │
                 ┌───┴─────┐
                 │endpoint0│
                 │  port2  │
                 └─────────┘
      
      ...vs:
      
                    RCH
                ┌──────────┐
                │ ACPI0017 │
                │  root0   │
                └────┬─────┘
                     │
                 ┌───┴────┐
                 │ dport0 │
                 │ACPI0016│
                 └───┬────┘
                     │
                ┌────┴─────┐
                │endpoint0 │
                │  port1   │
                └──────────┘
      
      So arrange for endpoint port in the RCH/RCD case to appear directly
      connected to the host-bridge in its singular role as a dport. Compare
      that to the VH case where the host-bridge serves a dual role as a
      'cxl_dport' for the CXL root device *and* a 'cxl_port' upstream port for
      the Root Ports in the Root Complex that are modeled as 'cxl_dport'
      instances in the CXL topology.
      
      Another deviation from the VH case is that RCDs may need to look up
      their component registers from the Root Complex Register Block (RCRB).
      That platform firmware specified RCRB area is cached by the cxl_acpi
      driver and conveyed via the host-bridge dport to the cxl_mem driver to
      perform the cxl_rcrb_to_component() lookup for the endpoint port
      (See 9.11.8 CXL Devices Attached to an RCH for the lookup of the
      upstream port component registers).
      Tested-by: default avatarRobert Richter <rrichter@amd.com>
      Link: https://lore.kernel.org/r/166993045621.1882361.1730100141527044744.stgit@dwillia2-xfh.jf.intel.comReviewed-by: default avatarRobert Richter <rrichter@amd.com>
      Reviewed-by: default avatarJonathan Camerom <Jonathan.Cameron@huawei.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      0a19bfc8
  14. 03 Dec, 2022 7 commits
  15. 14 Nov, 2022 1 commit
  16. 19 Jul, 2022 1 commit
  17. 10 Jul, 2022 1 commit
  18. 19 May, 2022 4 commits
  19. 13 Apr, 2022 2 commits
  20. 12 Apr, 2022 3 commits
  21. 08 Apr, 2022 1 commit
  22. 09 Feb, 2022 3 commits