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