forked from Minki/linux
tools/testing/nvdimm: allow custom error code injection
Given that libnvdimm driver stack takes specific actions on DIMM command error codes like -EACCES, provide a facility to inject custom failures. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
e7c5a571a8
commit
55c72ab62e
@ -138,6 +138,7 @@ static u32 handle[] = {
|
||||
};
|
||||
|
||||
static unsigned long dimm_fail_cmd_flags[NUM_DCR];
|
||||
static int dimm_fail_cmd_code[NUM_DCR];
|
||||
|
||||
struct nfit_test_fw {
|
||||
enum intel_fw_update_state state;
|
||||
@ -892,8 +893,11 @@ static int get_dimm(struct nfit_mem *nfit_mem, unsigned int func)
|
||||
if (i >= ARRAY_SIZE(handle))
|
||||
return -ENXIO;
|
||||
|
||||
if ((1 << func) & dimm_fail_cmd_flags[i])
|
||||
if ((1 << func) & dimm_fail_cmd_flags[i]) {
|
||||
if (dimm_fail_cmd_code[i])
|
||||
return dimm_fail_cmd_code[i];
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
@ -1225,8 +1229,40 @@ static ssize_t fail_cmd_store(struct device *dev, struct device_attribute *attr,
|
||||
}
|
||||
static DEVICE_ATTR_RW(fail_cmd);
|
||||
|
||||
static ssize_t fail_cmd_code_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
int dimm = dimm_name_to_id(dev);
|
||||
|
||||
if (dimm < 0)
|
||||
return dimm;
|
||||
|
||||
return sprintf(buf, "%d\n", dimm_fail_cmd_code[dimm]);
|
||||
}
|
||||
|
||||
static ssize_t fail_cmd_code_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t size)
|
||||
{
|
||||
int dimm = dimm_name_to_id(dev);
|
||||
unsigned long val;
|
||||
ssize_t rc;
|
||||
|
||||
if (dimm < 0)
|
||||
return dimm;
|
||||
|
||||
rc = kstrtol(buf, 0, &val);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
dimm_fail_cmd_code[dimm] = val;
|
||||
return size;
|
||||
}
|
||||
static DEVICE_ATTR_RW(fail_cmd_code);
|
||||
|
||||
|
||||
static struct attribute *nfit_test_dimm_attributes[] = {
|
||||
&dev_attr_fail_cmd.attr,
|
||||
&dev_attr_fail_cmd_code.attr,
|
||||
&dev_attr_handle.attr,
|
||||
NULL,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user