• Linus Torvalds's avatar
    Merge tag 'cxl-for-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl · c1f0fcd8
    Linus Torvalds authored
    Pull cxl updates from Dan Williams:
     "Compute Express Link (CXL) updates for 6.2.
    
      While it may seem backwards, the CXL update this time around includes
      some focus on CXL 1.x enabling where the work to date had been with
      CXL 2.0 (VH topologies) in mind.
    
      First generation CXL can mostly be supported via BIOS, similar to DDR,
      however it became clear there are use cases for OS native CXL error
      handling and some CXL 3.0 endpoint features can be deployed on CXL 1.x
      hosts (Restricted CXL Host (RCH) topologies). So, this update brings
      RCH topologies into the Linux CXL device model.
    
      In support of the ongoing CXL 2.0+ enabling two new core kernel
      facilities are added.
    
      One is the ability for the kernel to flag collisions between userspace
      access to PCI configuration registers and kernel accesses. This is
      brought on by the PCIe Data-Object-Exchange (DOE) facility, a hardware
      mailbox over config-cycles.
    
      The other is a cpu_cache_invalidate_memregion() API that maps to
      wbinvd_on_all_cpus() on x86. To prevent abuse it is disabled in guest
      VMs and architectures that do not support it yet. The CXL paths that
      need it, dynamic memory region creation and security commands (erase /
      unlock), are disabled when it is not present.
    
      As for the CXL 2.0+ this cycle the subsystem gains support Persistent
      Memory Security commands, error handling in response to PCIe AER
      notifications, and support for the "XOR" host bridge interleave
      algorithm.
    
      Summary:
    
       - Add the cpu_cache_invalidate_memregion() API for cache flushing in
         response to physical memory reconfiguration, or memory-side data
         invalidation from operations like secure erase or memory-device
         unlock.
    
       - Add a facility for the kernel to warn about collisions between
         kernel and userspace access to PCI configuration registers
    
       - Add support for Restricted CXL Host (RCH) topologies (formerly CXL
         1.1)
    
       - Add handling and reporting of CXL errors reported via the PCIe AER
         mechanism
    
       - Add support for CXL Persistent Memory Security commands
    
       - Add support for the "XOR" algorithm for CXL host bridge interleave
    
       - Rework / simplify CXL to NVDIMM interactions
    
       - Miscellaneous cleanups and fixes"
    
    * tag 'cxl-for-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl: (71 commits)
      cxl/region: Fix memdev reuse check
      cxl/pci: Remove endian confusion
      cxl/pci: Add some type-safety to the AER trace points
      cxl/security: Drop security command ioctl uapi
      cxl/mbox: Add variable output size validation for internal commands
      cxl/mbox: Enable cxl_mbox_send_cmd() users to validate output size
      cxl/security: Fix Get Security State output payload endian handling
      cxl: update names for interleave ways conversion macros
      cxl: update names for interleave granularity conversion macros
      cxl/acpi: Warn about an invalid CHBCR in an existing CHBS entry
      tools/testing/cxl: Require cache invalidation bypass
      cxl/acpi: Fail decoder add if CXIMS for HBIG is missing
      cxl/region: Fix spelling mistake "memergion" -> "memregion"
      cxl/regs: Fix sparse warning
      cxl/acpi: Set ACPI's CXL _OSC to indicate RCD mode support
      tools/testing/cxl: Add an RCH topology
      cxl/port: Add RCD endpoint port enumeration
      cxl/mem: Move devm_cxl_add_endpoint() from cxl_core to cxl_mem
      tools/testing/cxl: Add XOR Math support to cxl_test
      cxl/acpi: Support CXL XOR Interleave Math (CXIMS)
      ...
    c1f0fcd8
Kconfig 96.5 KB