diff options
author | Dan Williams <dan.j.williams@intel.com> | 2016-05-18 13:06:59 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2016-05-18 13:06:59 -0400 |
commit | 1f716d05f8daee4f393dc568ea7a53c7ecfd0bfc (patch) | |
tree | 3ba46ef65cd2fb1766934769c1d4a7fc16c3fe61 /tools/testing | |
parent | 2159669f581917c4d197d3ea183d3d85b47faf66 (diff) | |
parent | a94e3fbe4d53d4e512c4ea88a475e605b8d8dccb (diff) |
Merge branch 'for-4.7/dsm' into libnvdimm-for-next
Diffstat (limited to 'tools/testing')
-rw-r--r-- | tools/testing/nvdimm/test/nfit.c | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/tools/testing/nvdimm/test/nfit.c b/tools/testing/nvdimm/test/nfit.c index d1c98d4386d4..c919866853a0 100644 --- a/tools/testing/nvdimm/test/nfit.c +++ b/tools/testing/nvdimm/test/nfit.c | |||
@@ -372,6 +372,7 @@ static int nfit_test_ctl(struct nvdimm_bus_descriptor *nd_desc, | |||
372 | { | 372 | { |
373 | struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc); | 373 | struct acpi_nfit_desc *acpi_desc = to_acpi_desc(nd_desc); |
374 | struct nfit_test *t = container_of(acpi_desc, typeof(*t), acpi_desc); | 374 | struct nfit_test *t = container_of(acpi_desc, typeof(*t), acpi_desc); |
375 | unsigned int func = cmd; | ||
375 | int i, rc = 0, __cmd_rc; | 376 | int i, rc = 0, __cmd_rc; |
376 | 377 | ||
377 | if (!cmd_rc) | 378 | if (!cmd_rc) |
@@ -380,8 +381,23 @@ static int nfit_test_ctl(struct nvdimm_bus_descriptor *nd_desc, | |||
380 | 381 | ||
381 | if (nvdimm) { | 382 | if (nvdimm) { |
382 | struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm); | 383 | struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm); |
384 | unsigned long cmd_mask = nvdimm_cmd_mask(nvdimm); | ||
383 | 385 | ||
384 | if (!nfit_mem || !test_bit(cmd, &nfit_mem->dsm_mask)) | 386 | if (!nfit_mem) |
387 | return -ENOTTY; | ||
388 | |||
389 | if (cmd == ND_CMD_CALL) { | ||
390 | struct nd_cmd_pkg *call_pkg = buf; | ||
391 | |||
392 | buf_len = call_pkg->nd_size_in + call_pkg->nd_size_out; | ||
393 | buf = (void *) call_pkg->nd_payload; | ||
394 | func = call_pkg->nd_command; | ||
395 | if (call_pkg->nd_family != nfit_mem->family) | ||
396 | return -ENOTTY; | ||
397 | } | ||
398 | |||
399 | if (!test_bit(cmd, &cmd_mask) | ||
400 | || !test_bit(func, &nfit_mem->dsm_mask)) | ||
385 | return -ENOTTY; | 401 | return -ENOTTY; |
386 | 402 | ||
387 | /* lookup label space for the given dimm */ | 403 | /* lookup label space for the given dimm */ |
@@ -392,7 +408,7 @@ static int nfit_test_ctl(struct nvdimm_bus_descriptor *nd_desc, | |||
392 | if (i >= ARRAY_SIZE(handle)) | 408 | if (i >= ARRAY_SIZE(handle)) |
393 | return -ENXIO; | 409 | return -ENXIO; |
394 | 410 | ||
395 | switch (cmd) { | 411 | switch (func) { |
396 | case ND_CMD_GET_CONFIG_SIZE: | 412 | case ND_CMD_GET_CONFIG_SIZE: |
397 | rc = nfit_test_cmd_get_config_size(buf, buf_len); | 413 | rc = nfit_test_cmd_get_config_size(buf, buf_len); |
398 | break; | 414 | break; |
@@ -416,10 +432,10 @@ static int nfit_test_ctl(struct nvdimm_bus_descriptor *nd_desc, | |||
416 | } else { | 432 | } else { |
417 | struct ars_state *ars_state = &t->ars_state; | 433 | struct ars_state *ars_state = &t->ars_state; |
418 | 434 | ||
419 | if (!nd_desc || !test_bit(cmd, &nd_desc->dsm_mask)) | 435 | if (!nd_desc || !test_bit(cmd, &nd_desc->cmd_mask)) |
420 | return -ENOTTY; | 436 | return -ENOTTY; |
421 | 437 | ||
422 | switch (cmd) { | 438 | switch (func) { |
423 | case ND_CMD_ARS_CAP: | 439 | case ND_CMD_ARS_CAP: |
424 | rc = nfit_test_cmd_ars_cap(buf, buf_len); | 440 | rc = nfit_test_cmd_ars_cap(buf, buf_len); |
425 | break; | 441 | break; |
@@ -1293,15 +1309,15 @@ static void nfit_test0_setup(struct nfit_test *t) | |||
1293 | post_ars_status(&t->ars_state, t->spa_set_dma[0], SPA0_SIZE); | 1309 | post_ars_status(&t->ars_state, t->spa_set_dma[0], SPA0_SIZE); |
1294 | 1310 | ||
1295 | acpi_desc = &t->acpi_desc; | 1311 | acpi_desc = &t->acpi_desc; |
1296 | set_bit(ND_CMD_GET_CONFIG_SIZE, &acpi_desc->dimm_dsm_force_en); | 1312 | set_bit(ND_CMD_GET_CONFIG_SIZE, &acpi_desc->dimm_cmd_force_en); |
1297 | set_bit(ND_CMD_GET_CONFIG_DATA, &acpi_desc->dimm_dsm_force_en); | 1313 | set_bit(ND_CMD_GET_CONFIG_DATA, &acpi_desc->dimm_cmd_force_en); |
1298 | set_bit(ND_CMD_SET_CONFIG_DATA, &acpi_desc->dimm_dsm_force_en); | 1314 | set_bit(ND_CMD_SET_CONFIG_DATA, &acpi_desc->dimm_cmd_force_en); |
1299 | set_bit(ND_CMD_SMART, &acpi_desc->dimm_dsm_force_en); | 1315 | set_bit(ND_CMD_SMART, &acpi_desc->dimm_cmd_force_en); |
1300 | set_bit(ND_CMD_ARS_CAP, &acpi_desc->bus_dsm_force_en); | 1316 | set_bit(ND_CMD_ARS_CAP, &acpi_desc->bus_cmd_force_en); |
1301 | set_bit(ND_CMD_ARS_START, &acpi_desc->bus_dsm_force_en); | 1317 | set_bit(ND_CMD_ARS_START, &acpi_desc->bus_cmd_force_en); |
1302 | set_bit(ND_CMD_ARS_STATUS, &acpi_desc->bus_dsm_force_en); | 1318 | set_bit(ND_CMD_ARS_STATUS, &acpi_desc->bus_cmd_force_en); |
1303 | set_bit(ND_CMD_CLEAR_ERROR, &acpi_desc->bus_dsm_force_en); | 1319 | set_bit(ND_CMD_CLEAR_ERROR, &acpi_desc->bus_cmd_force_en); |
1304 | set_bit(ND_CMD_SMART_THRESHOLD, &acpi_desc->dimm_dsm_force_en); | 1320 | set_bit(ND_CMD_SMART_THRESHOLD, &acpi_desc->dimm_cmd_force_en); |
1305 | } | 1321 | } |
1306 | 1322 | ||
1307 | static void nfit_test1_setup(struct nfit_test *t) | 1323 | static void nfit_test1_setup(struct nfit_test *t) |
@@ -1359,10 +1375,10 @@ static void nfit_test1_setup(struct nfit_test *t) | |||
1359 | post_ars_status(&t->ars_state, t->spa_set_dma[0], SPA2_SIZE); | 1375 | post_ars_status(&t->ars_state, t->spa_set_dma[0], SPA2_SIZE); |
1360 | 1376 | ||
1361 | acpi_desc = &t->acpi_desc; | 1377 | acpi_desc = &t->acpi_desc; |
1362 | set_bit(ND_CMD_ARS_CAP, &acpi_desc->bus_dsm_force_en); | 1378 | set_bit(ND_CMD_ARS_CAP, &acpi_desc->bus_cmd_force_en); |
1363 | set_bit(ND_CMD_ARS_START, &acpi_desc->bus_dsm_force_en); | 1379 | set_bit(ND_CMD_ARS_START, &acpi_desc->bus_cmd_force_en); |
1364 | set_bit(ND_CMD_ARS_STATUS, &acpi_desc->bus_dsm_force_en); | 1380 | set_bit(ND_CMD_ARS_STATUS, &acpi_desc->bus_cmd_force_en); |
1365 | set_bit(ND_CMD_CLEAR_ERROR, &acpi_desc->bus_dsm_force_en); | 1381 | set_bit(ND_CMD_CLEAR_ERROR, &acpi_desc->bus_cmd_force_en); |
1366 | } | 1382 | } |
1367 | 1383 | ||
1368 | static int nfit_test_blk_do_io(struct nd_blk_region *ndbr, resource_size_t dpa, | 1384 | static int nfit_test_blk_do_io(struct nd_blk_region *ndbr, resource_size_t dpa, |