mbox series

[v10,0/5] CXL, ACPI, APEI, EINJ: Update EINJ for CXL error types

Message ID 20240117194501.298233-1-Benjamin.Cheatham@amd.com (mailing list archive)
Headers show
Series CXL, ACPI, APEI, EINJ: Update EINJ for CXL error types | expand

Message

Ben Cheatham Jan. 17, 2024, 7:44 p.m. UTC
v10 Changes:
	- Fixups in EINJ module initializtion (Dan)
	- Add include/linux/einj-cxl.h to MAINTAINERS under CXL subsystem
	  (Dan)
	- Replace usages of IS_ENABLED(CONFIG_CXL_EINJ) with new
	  einj_is_initialized() function in cxl/core/port.c (Dan)
	- Fix typo in EINJ documentation (Dan)

v9 Changes:
	- Remove wrapper __init function in EINJ module and use a platform
	  driver instead (Dan & Jonathan)
	- Move cxl/einj.h to include/linux/einj-cxl.h (Dan)
		- Rework header file to remove cxl_einj_* functions (Dan)
	- Add IS_ENABLED() guards around EINJ debugfs functionality in
	  cxl/core/port.c (Dan)
	- Rework cxl/Kconfig to be more concise (Dan)
	- Small fixups to cxl-debugfs documentation (Dan)
	- Add check to not add einj files to CXL 2.0+ dports that aren't
	  represented by a pci_dev
	- Bump version number in debugfs-cxl documentation

The new CXL error types will use the Memory Address field in the
SET_ERROR_TYPE_WITH_ADDRESS structure in order to target a CXL 1.1
compliant memory-mapped downstream port. The value of the memory address
will be in the port's MMIO range, and it will not represent physical
(normal or persistent) memory.

Add the functionality for injecting CXL 1.1 errors to the EINJ module,
but not through the EINJ legacy interface under /sys/kernel/debug/apei/einj.
Instead, make the error types available under /sys/kernel/debug/cxl.
This allows for validating the MMIO address for a CXL 1.1 error type
while also not making the user responsible for finding it.

Ben Cheatham (5):
  cxl, ACPI, APEI, EINJ: Add CXL_EINJ Kconfig option
  ACPI: Add CXL protocol error defines
  EINJ: Migrate to a platform driver
  cxl/core, EINJ: Add EINJ CXL debugfs files and EINJ helper functions
  EINJ, Documentation: Update EINJ kernel doc

 Documentation/ABI/testing/debugfs-cxl         |  22 ++
 .../firmware-guide/acpi/apei/einj.rst         |  19 ++
 MAINTAINERS                                   |   1 +
 drivers/acpi/apei/einj.c                      | 194 ++++++++++++++++--
 drivers/cxl/Kconfig                           |  12 ++
 drivers/cxl/core/port.c                       |  39 ++++
 include/acpi/actbl1.h                         |   6 +
 include/linux/einj-cxl.h                      |  45 ++++
 8 files changed, 326 insertions(+), 12 deletions(-)
 create mode 100644 include/linux/einj-cxl.h

Comments

Dan Williams Jan. 17, 2024, 8:05 p.m. UTC | #1
[ add ACPI APEI reviewers ]

Ben Cheatham wrote:
> v10 Changes:
> 	- Fixups in EINJ module initializtion (Dan)
> 	- Add include/linux/einj-cxl.h to MAINTAINERS under CXL subsystem
> 	  (Dan)
> 	- Replace usages of IS_ENABLED(CONFIG_CXL_EINJ) with new
> 	  einj_is_initialized() function in cxl/core/port.c (Dan)
> 	- Fix typo in EINJ documentation (Dan)
> 
> v9 Changes:
> 	- Remove wrapper __init function in EINJ module and use a platform
> 	  driver instead (Dan & Jonathan)
> 	- Move cxl/einj.h to include/linux/einj-cxl.h (Dan)
> 		- Rework header file to remove cxl_einj_* functions (Dan)
> 	- Add IS_ENABLED() guards around EINJ debugfs functionality in
> 	  cxl/core/port.c (Dan)
> 	- Rework cxl/Kconfig to be more concise (Dan)
> 	- Small fixups to cxl-debugfs documentation (Dan)
> 	- Add check to not add einj files to CXL 2.0+ dports that aren't
> 	  represented by a pci_dev
> 	- Bump version number in debugfs-cxl documentation
> 
> The new CXL error types will use the Memory Address field in the
> SET_ERROR_TYPE_WITH_ADDRESS structure in order to target a CXL 1.1
> compliant memory-mapped downstream port. The value of the memory address
> will be in the port's MMIO range, and it will not represent physical
> (normal or persistent) memory.
> 
> Add the functionality for injecting CXL 1.1 errors to the EINJ module,
> but not through the EINJ legacy interface under /sys/kernel/debug/apei/einj.
> Instead, make the error types available under /sys/kernel/debug/cxl.
> This allows for validating the MMIO address for a CXL 1.1 error type
> while also not making the user responsible for finding it.
> 
> Ben Cheatham (5):
>   cxl, ACPI, APEI, EINJ: Add CXL_EINJ Kconfig option
>   ACPI: Add CXL protocol error defines
>   EINJ: Migrate to a platform driver
>   cxl/core, EINJ: Add EINJ CXL debugfs files and EINJ helper functions
>   EINJ, Documentation: Update EINJ kernel doc
> 
>  Documentation/ABI/testing/debugfs-cxl         |  22 ++
>  .../firmware-guide/acpi/apei/einj.rst         |  19 ++
>  MAINTAINERS                                   |   1 +
>  drivers/acpi/apei/einj.c                      | 194 ++++++++++++++++--
>  drivers/cxl/Kconfig                           |  12 ++
>  drivers/cxl/core/port.c                       |  39 ++++
>  include/acpi/actbl1.h                         |   6 +
>  include/linux/einj-cxl.h                      |  45 ++++
>  8 files changed, 326 insertions(+), 12 deletions(-)
>  create mode 100644 include/linux/einj-cxl.h

Looks good to me, for the series:

Reviewed-by: Dan Williams <dan.j.williams@intel.com>

Next steps are for the ACPICA process to pull in the protocol error
definitions so that patch2 can be dropped, and for one of the APEI
reviewers to ack the einj.c changes.

As for merging, the balance of the changes are in drivers/acpi/, so I am
happy if this goes through acpi.git, but otherwise circle back in a
couple weeks after the merge window completes to track this into
linux-next. Thanks for all the updates, Ben!