aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2016-04-27 18:46:15 -0400
committerDan Williams <dan.j.williams@intel.com>2016-05-05 22:02:45 -0400
commit6634fb06906f52a3a3125e88681a7fa6e353f31d (patch)
treeaca18d10ccb2fe94220d69c328224d3d26a31d3a
parent87554098fec74a6c4a8cbea0d9adea2e8868e9e4 (diff)
tools/testing/nvdimm: ND_CMD_CALL support
Enable nfit_test to use nd_cmd_pkg marshaling. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r--tools/testing/nvdimm/test/nfit.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/tools/testing/nvdimm/test/nfit.c b/tools/testing/nvdimm/test/nfit.c
index ed899a411c22..e09a300eb8e0 100644
--- a/tools/testing/nvdimm/test/nfit.c
+++ b/tools/testing/nvdimm/test/nfit.c
@@ -336,6 +336,7 @@ static int nfit_test_ctl(struct nvdimm_bus_descriptor *nd_desc,
336{ 336{
337 struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc); 337 struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc);
338 struct nfit_test *t = container_of(acpi_desc, typeof(*t), acpi_desc); 338 struct nfit_test *t = container_of(acpi_desc, typeof(*t), acpi_desc);
339 unsigned int func = cmd;
339 int i, rc = 0, __cmd_rc; 340 int i, rc = 0, __cmd_rc;
340 341
341 if (!cmd_rc) 342 if (!cmd_rc)
@@ -346,7 +347,21 @@ static int nfit_test_ctl(struct nvdimm_bus_descriptor *nd_desc,
346 struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm); 347 struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);
347 unsigned long cmd_mask = nvdimm_cmd_mask(nvdimm); 348 unsigned long cmd_mask = nvdimm_cmd_mask(nvdimm);
348 349
349 if (!nfit_mem || !test_bit(cmd, &cmd_mask)) 350 if (!nfit_mem)
351 return -ENOTTY;
352
353 if (cmd == ND_CMD_CALL) {
354 struct nd_cmd_pkg *call_pkg = buf;
355
356 buf_len = call_pkg->nd_size_in + call_pkg->nd_size_out;
357 buf = (void *) call_pkg->nd_payload;
358 func = call_pkg->nd_command;
359 if (call_pkg->nd_family != nfit_mem->family)
360 return -ENOTTY;
361 }
362
363 if (!test_bit(cmd, &cmd_mask)
364 || !test_bit(func, &nfit_mem->dsm_mask))
350 return -ENOTTY; 365 return -ENOTTY;
351 366
352 /* lookup label space for the given dimm */ 367 /* lookup label space for the given dimm */
@@ -357,7 +372,7 @@ static int nfit_test_ctl(struct nvdimm_bus_descriptor *nd_desc,
357 if (i >= ARRAY_SIZE(handle)) 372 if (i >= ARRAY_SIZE(handle))
358 return -ENXIO; 373 return -ENXIO;
359 374
360 switch (cmd) { 375 switch (func) {
361 case ND_CMD_GET_CONFIG_SIZE: 376 case ND_CMD_GET_CONFIG_SIZE:
362 rc = nfit_test_cmd_get_config_size(buf, buf_len); 377 rc = nfit_test_cmd_get_config_size(buf, buf_len);
363 break; 378 break;
@@ -378,7 +393,7 @@ static int nfit_test_ctl(struct nvdimm_bus_descriptor *nd_desc,
378 if (!nd_desc || !test_bit(cmd, &nd_desc->cmd_mask)) 393 if (!nd_desc || !test_bit(cmd, &nd_desc->cmd_mask))
379 return -ENOTTY; 394 return -ENOTTY;
380 395
381 switch (cmd) { 396 switch (func) {
382 case ND_CMD_ARS_CAP: 397 case ND_CMD_ARS_CAP:
383 rc = nfit_test_cmd_ars_cap(buf, buf_len); 398 rc = nfit_test_cmd_ars_cap(buf, buf_len);
384 break; 399 break;