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

[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.7

...to receive the CXL update for this cycle.

The main new functionality this time is work to allow Linux to natively
handle CXL link protocol errors signalled via PCIe AER for current
generation CXL platforms. This required some enlightenment of the PCIe
AER core to workaround the fact that current generation RCH (Restricted
CXL Host) platforms physically hide topology details and registers via a
mechanism called RCRB (Root Complex Register Block). It has a minor
conflict with the PCI updates you have already pulled this cycle, sample
resolution below.

The next major highlight is reworks to address bugs in parsing region
configurations for next generation VH (Virtual Host) topologies. The
old broken algorithm is replaced with a simpler one that significantly
increases the number of region configurations supported by Linux. This
is again relevant for error handling so that forward and reverse address
translation of memory errors can be carried out by Linux for memory
regions instantiated by platform firmware.

As for other cross-tree work, the ACPI table parsing code has been
refactored for reuse parsing the "CDAT" structure which is an ACPI-like
data structure that is reported by CXL devices. That work is in
preparation for v6.8 support for CXL QoS. Think of this as dynamic
generation of NUMA node topology information generated by Linux rather
than platform firmware.

Lastly, a number of internal object lifetime issues have been resolved
along with misc. fixes and feature updates (decoders_committed sysfs
ABI).

This has all appeared in -next with a few late breaking fixes applied
for reported issues, but otherwise no new reports since this past
Monday. The touches of PCI and ACPI have received acks from Bjorn and
Rafael respectively.

---
Proposed merge resolution:

diff --cc drivers/pci/pcie/aer.c
index dcd35993004e,41076cb2956e..42a3bd35a3e1
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@@ -997,16 -1142,7 +1143,16 @@@ static void aer_recover_work_func(struc
                               PCI_SLOT(entry.devfn), PCI_FUNC(entry.devfn));
                        continue;
                }
-               cper_print_aer(pdev, entry.severity, entry.regs);
+               pci_print_aer(pdev, entry.severity, entry.regs);
 +              /*
 +               * Memory for aer_capability_regs(entry.regs) is being allocated from the
 +               * ghes_estatus_pool to protect it from overwriting when multiple sections
 +               * are present in the error status. Thus free the same after processing
 +               * the data.
 +               */
 +              ghes_estatus_pool_region_free((unsigned long)entry.regs,
 +                                            sizeof(struct aer_capability_regs));
 +
                if (entry.severity == AER_NONFATAL)
                        pcie_do_recovery(pdev, pci_channel_io_normal,
                                         aer_root_reset);
---

The following changes since commit 178e1ea6a68f12967ee0e9afc4d79a2939acd43c:

  ACPICA: Add defines for CDAT SSLBIS (2023-10-03 16:04:22 +0200)

are available in the Git repository at:

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

for you to fetch changes up to 4b92894064b3df472b2cf5741c7f080e16dcd1ec:

  lib/fw_table: Remove acpi_parse_entries_array() export (2023-11-02 15:17:21 -0700)

----------------------------------------------------------------
cxl for v6.7

- Add support for RCH (Restricted CXL Host) Error recovery

- Fix several region assembly bugs

- Fix mem-device lifetime issues relative to the sanitize command and
  RCH topology.

- Refactor ACPI table parsing for CDAT parsing re-use in preparation for
  CXL QOS support.

----------------------------------------------------------------
Alison Schofield (4):
      cxl/mbox: Remove useless cast in cxl_mem_create_range_info()
      cxl/region: Prepare the decoder match range helper for reuse
      cxl/region: Calculate a target position in a region interleave
      cxl/region: Use cxl_calc_interleave_pos() for auto-discovery

Dan Carpenter (1):
      cxl/hdm: Fix && vs || bug

Dan Williams (19):
      cxl/port: Quiet warning messages from the cxl_test environment
      cxl/pci: Remove unnecessary device reference management in sanitize work
      cxl/pci: Cleanup 'sanitize' to always poll
      cxl/pci: Remove hardirq handler for cxl_request_irq()
      cxl/pci: Remove inconsistent usage of dev_err_probe()
      cxl/pci: Clarify devm host for memdev relative setup
      cxl/pci: Fix sanitize notifier setup
      cxl/memdev: Fix sanitize vs decoder setup locking
      cxl/mem: Fix shutdown order
      tools/testing/cxl: Make cxl_memdev_state available to other command emulation
      tools/testing/cxl: Add 'sanitize notifier' support
      cxl/port: Fix delete_endpoint() vs parent unregistration race
      cxl/port: Fix @host confusion in cxl_dport_setup_regs()
      Merge branch 'for-6.7/cxl-rch-eh' into cxl/next
      Merge branch 'for-6.7/cxl-qtg' into cxl/next
      Merge branch 'for-6.7/cxl' into cxl/next
      Merge branch 'for-6.7/cxl-commited' into cxl/next
      cxl/hdm: Remove broken error path
      lib/fw_table: Remove acpi_parse_entries_array() export

Dave Jiang (6):
      cxl: Add cxl_decoders_committed() helper
      cxl: Add decoders_committed sysfs attribute to cxl_port
      cxl: Export QTG ids from CFMWS to sysfs as qos_class attribute
      cxl: Add checksum verification to CDAT from CXL
      cxl: Add support for reading CXL switch CDAT table
      acpi: Move common tables helper functions to common lib

Ira Weiny (1):
      cxl/pci: Update comment

Jim Harris (2):
      cxl/region: Do not try to cleanup after cxl_region_setup_targets() fails
      cxl/region: Fix x1 root-decoder granularity calculations

Li Zhijian (1):
      cxl/region: Fix cxl_region_rwsem lock held when returning to user space

Robert Richter (12):
      cxl/core/regs: Rename @dev to @host in struct cxl_register_map
      cxl/port: Rename @comp_map to @reg_map in struct cxl_register_map
      cxl/port: Pre-initialize component register mappings
      cxl/pci: Store the endpoint's Component Register mappings in struct cxl_dev_state
      cxl/hdm: Use stored Component Register mappings to map HDM decoder capability
      cxl/pci: Remove Component Register base address from struct cxl_dev_state
      cxl/port: Remove Component Register base address from struct cxl_port
      cxl/pci: Add RCH downstream port AER register discovery
      PCI/AER: Forward RCH downstream port-detected errors to the CXL.mem dev handler
      PCI/AER: Unmask RCEC internal errors to enable RCH downstream port error handling
      cxl/core/regs: Rename phys_addr in cxl_map_component_regs()
      cxl/core/regs: Rework cxl_map_pmu_regs() to use map->dev for devm

Terry Bowman (6):
      PCI/AER: Refactor cper_print_aer() for use by CXL driver module
      cxl/pci: Update CXL error logging to use RAS register address
      cxl/pci: Map RCH downstream AER registers for logging protocol errors
      cxl/pci: Add RCH downstream port error logging
      cxl/pci: Disable root port interrupts in RCH mode
      cxl/pci: Change CXL AER support check to use native AER

Vishal Verma (2):
      MAINTAINERS: Add tools/testing/cxl files to CXL
      tools/testing/cxl: Slow down the mock firmware transfer

 Documentation/ABI/testing/sysfs-bus-cxl |  30 ++++
 MAINTAINERS                             |   3 +
 drivers/acpi/Kconfig                    |   1 +
 drivers/acpi/tables.c                   | 173 --------------------
 drivers/cxl/acpi.c                      |   3 +
 drivers/cxl/core/core.h                 |   2 +
 drivers/cxl/core/hdm.c                  |  93 +++++------
 drivers/cxl/core/mbox.c                 |  60 +++++--
 drivers/cxl/core/memdev.c               | 161 +++++++++----------
 drivers/cxl/core/pci.c                  | 275 +++++++++++++++++++++++++++++---
 drivers/cxl/core/port.c                 | 184 +++++++++++++++------
 drivers/cxl/core/region.c               | 266 +++++++++++++++++-------------
 drivers/cxl/core/regs.c                 |  73 ++++++---
 drivers/cxl/cxl.h                       |  38 +++--
 drivers/cxl/cxlmem.h                    |  17 +-
 drivers/cxl/mem.c                       |   7 +-
 drivers/cxl/pci.c                       | 107 ++++++-------
 drivers/cxl/port.c                      |   3 +
 drivers/pci/pcie/Kconfig                |   9 ++
 drivers/pci/pcie/aer.c                  | 159 +++++++++++++++++-
 include/linux/acpi.h                    |  42 ++---
 include/linux/aer.h                     |   2 +-
 include/linux/fw_table.h                |  43 +++++
 lib/Kconfig                             |   3 +
 lib/Makefile                            |   2 +
 lib/fw_table.c                          | 188 ++++++++++++++++++++++
 tools/testing/cxl/test/cxl.c            |   2 +-
 tools/testing/cxl/test/mem.c            |  83 ++++++++--
 28 files changed, 1375 insertions(+), 654 deletions(-)
 create mode 100644 include/linux/fw_table.h
 create mode 100644 lib/fw_table.c



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux