[GIT PULL] Compute Express Link (CXL) for 6.9

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus, please pull from:

  git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl tags/cxl-for-6.9

...to receive 2 feature updates and some cleanups for CXL.

As I mentioned in the v6.8 pull, CXL has mechanisms to enumerate the
performance characteristics of memory devices. Those mechanisms allow
Linux to build the equivalent of ACPI SRAT, SLIT, and HMAT tables
dynamically at runtime. That capability is necessary because static ACPI
can not represent dynamic CXL configurations (and reconfigurations). So,
building on the v6.8 work to add "Quality of Service" enumeration, this
update plumbs CXL "access coordinates" (read/write access latency +
bandwidth) in all the same places that ACPI HMAT feeds similar data.
Follow-on patches from the -mm side can then use that data to feed
mechanisms like mm/memory-tiers.c. Greg has acked the touch to
drivers/base/.

The other feature update this cycle is support for CXL error injection
via the ACPI EINJ module. That facility enables injection of bus
protocol errors provided the user knows the magic address values to
insert in the interface. To hide that magic, and make this easier to
use, new error injection attributes were added to CXL debugfs. That
interface injects the errors relative to a CXL object rather than
require user tooling to know how to lookup and inject RCRB (Root Complex
Register Block) addresses into the raw EINJ debugfs interface. It
received some helpful review comments from Tony, but no explicit acks
from the ACPI side.  The primary user visible change for existing EINJ
users is that they may find that einj.ko was already loaded by
cxl_core.ko. Previously, einj.ko was only loaded on demand.

The usual collection of miscellaneous cleanups are also present this
cycle.

It has appeared in linux-next with a documentation build regression
reported by Stephen and fixed up with edc1243437e7
("Documentation/ABI/testing/debugfs-cxl: Fix "Unexpected indentation"").
The 0day robot also reported a new sparse warning that just highlights
that the work to convert einj.ko to use acpi_os_map_memory() instead of
acpi_os_map_iomem() [1] is still pending.

Going forward, v6.9-rc and v6.10+, you are going to see pull requests
coming from Dave Jiang.  The CXL subsystem has several folks listed in
MAINTAINERS with review spread amongst that team. Nothing really changes
from that perspective, but I am passing the primary patch wrangling
baton to Dave. Likely all this means in practice is more Reviewed-by's
from me and less Signed-off-by's for marshaling patches upstream.
Otherwise, please give Dave some grace as he steps in here.

[1] a238317ce818 ("ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem.")

---

The following changes since commit d206a76d7d2726f3b096037f2079ce0bd3ba329b:

  Linux 6.8-rc6 (2024-02-25 15:46:06 -0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl tags/cxl-for-6.9

for you to fetch changes up to ed1ff2fba7afa7baca7ceb93824a4699130b8377:

  Merge branch 'for-6.9/cxl-einj' into for-6.9/cxl (2024-03-14 19:05:27 -0700)

----------------------------------------------------------------
cxl for v6.9

- Supplement ACPI HMAT reported memory performance with native CXL
  memory performance enumeration

- Add support for CXL error injection via the ACPI EINJ mechanism

- Cleanup CXL DOE and CDAT integration

- Miscellaneous cleanups and fixes

----------------------------------------------------------------
Ben Cheatham (4):
      EINJ: Migrate to a platform driver
      EINJ: Add CXL error type support
      EINJ, Documentation: Update EINJ kernel doc
      cxl/core: Add CXL EINJ debugfs files

Dan Williams (5):
      Merge branch 'for-6.9/cxl-qos' into for-6.9/cxl
      Merge branch 'for-6.9/cxl-einj' into for-6.9/cxl
      Merge branch 'for-6.9/cxl-fixes' into for-6.9/cxl
      Documentation/ABI/testing/debugfs-cxl: Fix "Unexpected indentation"
      Merge branch 'for-6.9/cxl-einj' into for-6.9/cxl

Dave Jiang (13):
      ACPI: HMAT: Remove register of memory node for generic target
      base/node / ACPI: Enumerate node access class for 'struct access_coordinate'
      ACPI: HMAT: Introduce 2 levels of generic port access class
      ACPI: HMAT / cxl: Add retrieval of generic port coordinates for both access classes
      cxl: Split out combine_coordinates() for common shared usage
      cxl: Split out host bridge access coordinates
      cxl: Move QoS class to be calculated from the nearest CPU
      cxl: Set cxlmd->endpoint before adding port device
      cxl/region: Calculate performance data for a region
      cxl/region: Add sysfs attribute for locality attributes of CXL regions
      cxl/region: Add memory hotplug notifier for cxl region
      cxl/region: Deal with numa nodes not enumerated by SRAT
      cxl: Fix the incorrect assignment of SSLBIS entry pointer initial location

Robert Richter (3):
      cxl/pci: Rename DOE mailbox handle to doe_mb
      cxl/pci: Get rid of pointer arithmetic reading CDAT table
      lib/firmware_table: Provide buffer length argument to cdat_table_parse()

 Documentation/ABI/testing/debugfs-cxl           |  34 +++++
 Documentation/ABI/testing/sysfs-bus-cxl         |  34 +++++
 Documentation/firmware-guide/acpi/apei/einj.rst |  34 +++++
 MAINTAINERS                                     |   1 +
 drivers/acpi/apei/Kconfig                       |  13 ++
 drivers/acpi/apei/Makefile                      |   2 +
 drivers/acpi/apei/apei-internal.h               |  18 +++
 drivers/acpi/apei/{einj.c => einj-core.c}       | 122 ++++++++++++++---
 drivers/acpi/apei/einj-cxl.c                    | 113 ++++++++++++++++
 drivers/acpi/numa/hmat.c                        |  83 +++++++++---
 drivers/acpi/numa/srat.c                        |  11 ++
 drivers/acpi/tables.c                           |   2 +-
 drivers/base/node.c                             |   7 +-
 drivers/cxl/acpi.c                              |   8 +-
 drivers/cxl/core/cdat.c                         | 170 +++++++++++++++++++-----
 drivers/cxl/core/core.h                         |   4 +
 drivers/cxl/core/pci.c                          |  99 ++++++++------
 drivers/cxl/core/port.c                         |  86 +++++++++---
 drivers/cxl/core/region.c                       | 169 +++++++++++++++++++++++
 drivers/cxl/cxl.h                               |  15 ++-
 drivers/cxl/cxlpci.h                            |  24 ++++
 include/linux/acpi.h                            |  21 +++
 include/linux/einj-cxl.h                        |  44 ++++++
 include/linux/fw_table.h                        |   4 +-
 include/linux/memory.h                          |   1 +
 include/linux/node.h                            |  18 ++-
 lib/fw_table.c                                  |  15 ++-
 27 files changed, 1004 insertions(+), 148 deletions(-)
 rename drivers/acpi/apei/{einj.c => einj-core.c} (90%)
 create mode 100644 drivers/acpi/apei/einj-cxl.c
 create mode 100644 include/linux/einj-cxl.h




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]
  Powered by Linux