Messages in this thread | | | Date | Mon, 17 Oct 2022 11:01:53 -0700 | From | Alison Schofield <> | Subject | Re: [PATCH v2 4/4] cxl/region: Add trigger_poison_list sysfs attribute |
| |
On Mon, Oct 17, 2022 at 02:43:02PM +0100, Jonathan Cameron wrote: > 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()?
Yes. > > Looks like it got renamed in > cxl/hdm: Add support for allocating DPA to an endpoint decoder > cf880423b6a0599499c1f83542cab0b75daa29ba
Looks like it got renamed during the patches review. Not worth unravelling now. I will rebase in next version.
Sorry about that and thanks! Alison
> > 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);
| |