mbox series

[v6,0/10] cxl: CXL Inject & Clear Poison

Message ID cover.1681874357.git.alison.schofield@intel.com
Headers show
Series cxl: CXL Inject & Clear Poison | expand

Message

Alison Schofield April 19, 2023, 3:26 a.m. UTC
From: Alison Schofield <alison.schofield@intel.com>

Built on cxl/next plus [PATCH v13 0/9] CXL Poison List Retrieval & Tracing
https://lore.kernel.org/linux-cxl/cover.1681838291.git.alison.schofield@intel.com/

Changes in v6:
- Drop patches: The deprecate, and the removal of raw access, introduced
  for all poison commands in v13 of CXL Poison List Retrieval & Tracing,
  made these 2 patches obsolete:
	cxl/memdev: Make inject and clear poison cmds kernel exclusive
	cxl/mbox: Block inject and clear poison opcodes in raw mode

- The device always writes the write data on Clear, regardless of whether or
  not the address is actually poisoned. Stop stating otherwise. (Jonathan)
- Update Patch 1 commit message to refer to CXL.mem driver (DaveJ)
- __cxl_dpa_to_region() Stop the walk on a match (Jonathan)
- Set & use cxlds->poison.enabled_cmds for inject & clear
- Simplify inject payload address assignment (DaveJ)
- Use down_read_interruptible in inject/clear 
- Tidy up the memdev core api for inject/clear by using cxl_memdev
- Use the available cxl_memdev rather than dev in debugfs_create_file()

Link to v5:
https://lore.kernel.org/linux-cxl/cover.1679892337.git.alison.schofield@intel.com/


Introducing Inject and Clear Poison support for CXL Devices.

These are optional commands, meaning not all CXL devices must support
them. The debugfs attributes, inject_poison and clear_poison, are only
visible for devices reporting support of the capability.

Example:
# echo 0x40000000 > /sys/kernel/debug/cxl/mem1/inject_poison

cxl_poison: memdev=mem1 pcidev=cxl_mem.1 trace_type=Inject region= region_uuid=00000000-0000-0000-0000-000000000000 hpa=0xffffffffffffffff dpa=0x40000000 dpa_length=0x40 source=Unknown flags= overflow_time=0

Example in which the injected poison landed in region5:
# echo 0x40000000 > /sys/kernel/debug/cxl/mem0/inject_poison

cxl_poison: memdev=mem0 host=cxl_mem.0 serial=0 trace_type=Inject region=region5 region_uuid=cfcfc13a-5290-4983-aa74-4c8465c25f26 hpa=0xf110000000 dpa=0x40000000 dpa_length=0x40 source=Unknown flags= overflow_time=0


Alison Schofield (10):
  cxl/memdev: Add support for the Inject Poison mailbox command
  cxl/memdev: Add support for the Clear Poison mailbox command
  cxl/memdev: Warn of poison inject or clear to a mapped region
  cxl/memdev: Trace inject and clear poison as cxl_poison events
  cxl/mem: Add debugfs attributes for poison inject and clear
  tools/testing/cxl: Mock the Inject Poison mailbox command
  tools/testing/cxl: Mock the Clear Poison mailbox command
  tools/testing/cxl: Use injected poison for get poison list
  tools/testing/cxl: Add a sysfs attr to test poison inject limits
  tools/testing/cxl: Require CONFIG_DEBUG_FS

 Documentation/ABI/testing/debugfs-cxl |  35 +++++
 drivers/cxl/core/core.h               |   2 +
 drivers/cxl/core/memdev.c             | 172 ++++++++++++++++++++
 drivers/cxl/core/trace.h              |   8 +-
 drivers/cxl/cxlmem.h                  |  13 ++
 drivers/cxl/mem.c                     |  28 ++++
 tools/testing/cxl/config_check.c      |   1 +
 tools/testing/cxl/test/mem.c          | 216 +++++++++++++++++++++++---
 8 files changed, 453 insertions(+), 22 deletions(-)
 create mode 100644 Documentation/ABI/testing/debugfs-cxl

Comments

Jonathan Cameron April 23, 2023, 3:42 p.m. UTC | #1
On Tue, 18 Apr 2023 20:26:24 -0700
alison.schofield@intel.com wrote:

> From: Alison Schofield <alison.schofield@intel.com>
> 
> Built on cxl/next plus [PATCH v13 0/9] CXL Poison List Retrieval & Tracing
> https://lore.kernel.org/linux-cxl/cover.1681838291.git.alison.schofield@intel.com/

For 1-5 given I've poking them from QEMU whilst testing the emulation and
it all worked well.

Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com.
> 
> Changes in v6:
> - Drop patches: The deprecate, and the removal of raw access, introduced
>   for all poison commands in v13 of CXL Poison List Retrieval & Tracing,
>   made these 2 patches obsolete:
> 	cxl/memdev: Make inject and clear poison cmds kernel exclusive
> 	cxl/mbox: Block inject and clear poison opcodes in raw mode
> 
> - The device always writes the write data on Clear, regardless of whether or
>   not the address is actually poisoned. Stop stating otherwise. (Jonathan)
> - Update Patch 1 commit message to refer to CXL.mem driver (DaveJ)
> - __cxl_dpa_to_region() Stop the walk on a match (Jonathan)
> - Set & use cxlds->poison.enabled_cmds for inject & clear
> - Simplify inject payload address assignment (DaveJ)
> - Use down_read_interruptible in inject/clear 
> - Tidy up the memdev core api for inject/clear by using cxl_memdev
> - Use the available cxl_memdev rather than dev in debugfs_create_file()
> 
> Link to v5:
> https://lore.kernel.org/linux-cxl/cover.1679892337.git.alison.schofield@intel.com/
> 
> 
> Introducing Inject and Clear Poison support for CXL Devices.
> 
> These are optional commands, meaning not all CXL devices must support
> them. The debugfs attributes, inject_poison and clear_poison, are only
> visible for devices reporting support of the capability.
> 
> Example:
> # echo 0x40000000 > /sys/kernel/debug/cxl/mem1/inject_poison
> 
> cxl_poison: memdev=mem1 pcidev=cxl_mem.1 trace_type=Inject region= region_uuid=00000000-0000-0000-0000-000000000000 hpa=0xffffffffffffffff dpa=0x40000000 dpa_length=0x40 source=Unknown flags= overflow_time=0
> 
> Example in which the injected poison landed in region5:
> # echo 0x40000000 > /sys/kernel/debug/cxl/mem0/inject_poison
> 
> cxl_poison: memdev=mem0 host=cxl_mem.0 serial=0 trace_type=Inject region=region5 region_uuid=cfcfc13a-5290-4983-aa74-4c8465c25f26 hpa=0xf110000000 dpa=0x40000000 dpa_length=0x40 source=Unknown flags= overflow_time=0
> 
> 
> Alison Schofield (10):
>   cxl/memdev: Add support for the Inject Poison mailbox command
>   cxl/memdev: Add support for the Clear Poison mailbox command
>   cxl/memdev: Warn of poison inject or clear to a mapped region
>   cxl/memdev: Trace inject and clear poison as cxl_poison events
>   cxl/mem: Add debugfs attributes for poison inject and clear
>   tools/testing/cxl: Mock the Inject Poison mailbox command
>   tools/testing/cxl: Mock the Clear Poison mailbox command
>   tools/testing/cxl: Use injected poison for get poison list
>   tools/testing/cxl: Add a sysfs attr to test poison inject limits
>   tools/testing/cxl: Require CONFIG_DEBUG_FS
> 
>  Documentation/ABI/testing/debugfs-cxl |  35 +++++
>  drivers/cxl/core/core.h               |   2 +
>  drivers/cxl/core/memdev.c             | 172 ++++++++++++++++++++
>  drivers/cxl/core/trace.h              |   8 +-
>  drivers/cxl/cxlmem.h                  |  13 ++
>  drivers/cxl/mem.c                     |  28 ++++
>  tools/testing/cxl/config_check.c      |   1 +
>  tools/testing/cxl/test/mem.c          | 216 +++++++++++++++++++++++---
>  8 files changed, 453 insertions(+), 22 deletions(-)
>  create mode 100644 Documentation/ABI/testing/debugfs-cxl
>