cxl/memdev: Add support for the Inject Poison mailbox command
authorAlison Schofield <alison.schofield@intel.com>
Wed, 19 Apr 2023 03:26:25 +0000 (20:26 -0700)
committerDan Williams <dan.j.williams@intel.com>
Sun, 23 Apr 2023 18:46:22 +0000 (11:46 -0700)
commitd2fbc48658022f48625064ae192baff52057987d
tree8041a3b0cb6bd212f303d0d79b3991a1e3eddcb6
parentf8d22bf50ca56a334ef58bf59ee299ed62940e42
cxl/memdev: Add support for the Inject Poison mailbox command

CXL devices optionally support the INJECT POISON mailbox command. Add
memdev driver support for the mailbox command.

Per the CXL Specification (3.0 8.2.9.8.4.2), after receiving a valid
inject poison request, the device will return poison when the address
is accessed through the CXL.mem driver. Injecting poison adds the address
to the device's Poison List and the error source is set to Injected.
In addition, the device adds a poison creation event to its internal
Informational Event log, updates the Event Status register, and if
configured, interrupts the host.

Also, per the CXL Specification, it is not an error to inject poison
into an address that already has poison present and no error is
returned from the device.

If the address is not contained in the device's dpa resource, or is
not 64 byte aligned, return -EINVAL without issuing the mbox command.

Poison injection is intended for debug only and will be exposed to
userspace through debugfs. Restrict compilation to CONFIG_DEBUG_FS.

Signed-off-by: Alison Schofield <alison.schofield@intel.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/241c64115e6bd2effed9c7a20b08b3908dd7be8f.1681874357.git.alison.schofield@intel.com
Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/core/memdev.c
drivers/cxl/cxlmem.h