Messages in this thread | | | Date | Mon, 17 Oct 2022 14:43:02 +0100 | From | Jonathan Cameron <> | Subject | Re: [PATCH v2 4/4] cxl/region: Add trigger_poison_list sysfs attribute |
| |
On Wed, 12 Oct 2022 14:28:20 -0700 alison.schofield@intel.com wrote:
> From: Alison Schofield <alison.schofield@intel.com> > > When a boolean 'true' is written to this attribute the region driver > retrieves the poison list for the capacity each device contributes > to this region. The list includes addresses that are poisoned, or > would result in poison if accessed, and the source of the poison. > The retrieved errors are logged as kernel trace events with the > label 'cxl_poison'. > > Devices not supporting the poison list capability are ignored. > > Signed-off-by: Alison Schofield <alison.schofield@intel.com>
Hi Alison,
For some reason I don't have cxl_dpa_resource(). Should that be cxl_dpa_resource_start()?
Looks like it got renamed in cxl/hdm: Add support for allocating DPA to an endpoint decoder cf880423b6a0599499c1f83542cab0b75daa29ba
Jonathan
> +static ssize_t trigger_poison_list_store(struct device *dev, > + struct device_attribute *attr, > + const char *buf, size_t len) > +{ > + struct cxl_region *cxlr = to_cxl_region(dev); > + struct cxl_region_params *p = &cxlr->params; > + struct cxl_endpoint_decoder *cxled; > + struct cxl_memdev *cxlmd; > + u64 offset, length; > + int rc, i; > + bool tmp; > + > + if (kstrtobool(buf, &tmp)) > + return -EINVAL; > + > + for (i = 0; i < p->nr_targets; i++) { > + cxled = p->targets[i]; > + cxlmd = cxled_to_memdev(cxled); > + if (!test_bit(CXL_MEM_COMMAND_ID_GET_POISON, > + cxlmd->cxlds->enabled_cmds)) > + continue; > + offset = cxl_dpa_resource(cxled); > + length = cxl_dpa_size(cxled); > + rc = cxl_mem_get_poison(cxlmd, offset, length, > + dev_name(&cxlr->dev)); > + if (rc) > + return rc; > + } > + return len; > +} > +static DEVICE_ATTR_WO(trigger_poison_list);
| |