Skip to content

Commit abfd4d9

Browse files
djbwstellarhopper
authored andcommitted
tools/testing/nvdimm: Prepare nfit_ctl_test() for ND_CMD_CALL emulation
In preparation for adding a mocked implementation of the firmware-activate bus-info command, rework nfit_ctl_test() to operate on a local command payload wrapped in a 'struct nd_cmd_pkg'. Cc: Vishal Verma <[email protected]> Cc: Dave Jiang <[email protected]> Cc: Ira Weiny <[email protected]> Signed-off-by: Dan Williams <[email protected]> Signed-off-by: Vishal Verma <[email protected]>
1 parent 0d47c4d commit abfd4d9

File tree

1 file changed

+43
-40
lines changed
  • tools/testing/nvdimm/test

1 file changed

+43
-40
lines changed

tools/testing/nvdimm/test/nfit.c

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2726,14 +2726,17 @@ static int nfit_ctl_test(struct device *dev)
27262726
struct acpi_nfit_desc *acpi_desc;
27272727
const u64 test_val = 0x0123456789abcdefULL;
27282728
unsigned long mask, cmd_size, offset;
2729-
union {
2730-
struct nd_cmd_get_config_size cfg_size;
2731-
struct nd_cmd_clear_error clear_err;
2732-
struct nd_cmd_ars_status ars_stat;
2733-
struct nd_cmd_ars_cap ars_cap;
2734-
char buf[sizeof(struct nd_cmd_ars_status)
2735-
+ sizeof(struct nd_ars_record)];
2736-
} cmds;
2729+
struct nfit_ctl_test_cmd {
2730+
struct nd_cmd_pkg pkg;
2731+
union {
2732+
struct nd_cmd_get_config_size cfg_size;
2733+
struct nd_cmd_clear_error clear_err;
2734+
struct nd_cmd_ars_status ars_stat;
2735+
struct nd_cmd_ars_cap ars_cap;
2736+
char buf[sizeof(struct nd_cmd_ars_status)
2737+
+ sizeof(struct nd_ars_record)];
2738+
};
2739+
} cmd;
27372740

27382741
adev = devm_kzalloc(dev, sizeof(*adev), GFP_KERNEL);
27392742
if (!adev)
@@ -2793,21 +2796,21 @@ static int nfit_ctl_test(struct device *dev)
27932796

27942797

27952798
/* basic checkout of a typical 'get config size' command */
2796-
cmd_size = sizeof(cmds.cfg_size);
2797-
cmds.cfg_size = (struct nd_cmd_get_config_size) {
2799+
cmd_size = sizeof(cmd.cfg_size);
2800+
cmd.cfg_size = (struct nd_cmd_get_config_size) {
27982801
.status = 0,
27992802
.config_size = SZ_128K,
28002803
.max_xfer = SZ_4K,
28012804
};
2802-
rc = setup_result(cmds.buf, cmd_size);
2805+
rc = setup_result(cmd.buf, cmd_size);
28032806
if (rc)
28042807
return rc;
28052808
rc = acpi_nfit_ctl(&acpi_desc->nd_desc, nvdimm, ND_CMD_GET_CONFIG_SIZE,
2806-
cmds.buf, cmd_size, &cmd_rc);
2809+
cmd.buf, cmd_size, &cmd_rc);
28072810

2808-
if (rc < 0 || cmd_rc || cmds.cfg_size.status != 0
2809-
|| cmds.cfg_size.config_size != SZ_128K
2810-
|| cmds.cfg_size.max_xfer != SZ_4K) {
2811+
if (rc < 0 || cmd_rc || cmd.cfg_size.status != 0
2812+
|| cmd.cfg_size.config_size != SZ_128K
2813+
|| cmd.cfg_size.max_xfer != SZ_4K) {
28112814
dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n",
28122815
__func__, __LINE__, rc, cmd_rc);
28132816
return -EIO;
@@ -2816,14 +2819,14 @@ static int nfit_ctl_test(struct device *dev)
28162819

28172820
/* test ars_status with zero output */
28182821
cmd_size = offsetof(struct nd_cmd_ars_status, address);
2819-
cmds.ars_stat = (struct nd_cmd_ars_status) {
2822+
cmd.ars_stat = (struct nd_cmd_ars_status) {
28202823
.out_length = 0,
28212824
};
2822-
rc = setup_result(cmds.buf, cmd_size);
2825+
rc = setup_result(cmd.buf, cmd_size);
28232826
if (rc)
28242827
return rc;
28252828
rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_ARS_STATUS,
2826-
cmds.buf, cmd_size, &cmd_rc);
2829+
cmd.buf, cmd_size, &cmd_rc);
28272830

28282831
if (rc < 0 || cmd_rc) {
28292832
dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n",
@@ -2833,16 +2836,16 @@ static int nfit_ctl_test(struct device *dev)
28332836

28342837

28352838
/* test ars_cap with benign extended status */
2836-
cmd_size = sizeof(cmds.ars_cap);
2837-
cmds.ars_cap = (struct nd_cmd_ars_cap) {
2839+
cmd_size = sizeof(cmd.ars_cap);
2840+
cmd.ars_cap = (struct nd_cmd_ars_cap) {
28382841
.status = ND_ARS_PERSISTENT << 16,
28392842
};
28402843
offset = offsetof(struct nd_cmd_ars_cap, status);
2841-
rc = setup_result(cmds.buf + offset, cmd_size - offset);
2844+
rc = setup_result(cmd.buf + offset, cmd_size - offset);
28422845
if (rc)
28432846
return rc;
28442847
rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_ARS_CAP,
2845-
cmds.buf, cmd_size, &cmd_rc);
2848+
cmd.buf, cmd_size, &cmd_rc);
28462849

28472850
if (rc < 0 || cmd_rc) {
28482851
dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n",
@@ -2852,19 +2855,19 @@ static int nfit_ctl_test(struct device *dev)
28522855

28532856

28542857
/* test ars_status with 'status' trimmed from 'out_length' */
2855-
cmd_size = sizeof(cmds.ars_stat) + sizeof(struct nd_ars_record);
2856-
cmds.ars_stat = (struct nd_cmd_ars_status) {
2858+
cmd_size = sizeof(cmd.ars_stat) + sizeof(struct nd_ars_record);
2859+
cmd.ars_stat = (struct nd_cmd_ars_status) {
28572860
.out_length = cmd_size - 4,
28582861
};
2859-
record = &cmds.ars_stat.records[0];
2862+
record = &cmd.ars_stat.records[0];
28602863
*record = (struct nd_ars_record) {
28612864
.length = test_val,
28622865
};
2863-
rc = setup_result(cmds.buf, cmd_size);
2866+
rc = setup_result(cmd.buf, cmd_size);
28642867
if (rc)
28652868
return rc;
28662869
rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_ARS_STATUS,
2867-
cmds.buf, cmd_size, &cmd_rc);
2870+
cmd.buf, cmd_size, &cmd_rc);
28682871

28692872
if (rc < 0 || cmd_rc || record->length != test_val) {
28702873
dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n",
@@ -2874,19 +2877,19 @@ static int nfit_ctl_test(struct device *dev)
28742877

28752878

28762879
/* test ars_status with 'Output (Size)' including 'status' */
2877-
cmd_size = sizeof(cmds.ars_stat) + sizeof(struct nd_ars_record);
2878-
cmds.ars_stat = (struct nd_cmd_ars_status) {
2880+
cmd_size = sizeof(cmd.ars_stat) + sizeof(struct nd_ars_record);
2881+
cmd.ars_stat = (struct nd_cmd_ars_status) {
28792882
.out_length = cmd_size,
28802883
};
2881-
record = &cmds.ars_stat.records[0];
2884+
record = &cmd.ars_stat.records[0];
28822885
*record = (struct nd_ars_record) {
28832886
.length = test_val,
28842887
};
2885-
rc = setup_result(cmds.buf, cmd_size);
2888+
rc = setup_result(cmd.buf, cmd_size);
28862889
if (rc)
28872890
return rc;
28882891
rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_ARS_STATUS,
2889-
cmds.buf, cmd_size, &cmd_rc);
2892+
cmd.buf, cmd_size, &cmd_rc);
28902893

28912894
if (rc < 0 || cmd_rc || record->length != test_val) {
28922895
dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n",
@@ -2896,15 +2899,15 @@ static int nfit_ctl_test(struct device *dev)
28962899

28972900

28982901
/* test extended status for get_config_size results in failure */
2899-
cmd_size = sizeof(cmds.cfg_size);
2900-
cmds.cfg_size = (struct nd_cmd_get_config_size) {
2902+
cmd_size = sizeof(cmd.cfg_size);
2903+
cmd.cfg_size = (struct nd_cmd_get_config_size) {
29012904
.status = 1 << 16,
29022905
};
2903-
rc = setup_result(cmds.buf, cmd_size);
2906+
rc = setup_result(cmd.buf, cmd_size);
29042907
if (rc)
29052908
return rc;
29062909
rc = acpi_nfit_ctl(&acpi_desc->nd_desc, nvdimm, ND_CMD_GET_CONFIG_SIZE,
2907-
cmds.buf, cmd_size, &cmd_rc);
2910+
cmd.buf, cmd_size, &cmd_rc);
29082911

29092912
if (rc < 0 || cmd_rc >= 0) {
29102913
dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n",
@@ -2913,16 +2916,16 @@ static int nfit_ctl_test(struct device *dev)
29132916
}
29142917

29152918
/* test clear error */
2916-
cmd_size = sizeof(cmds.clear_err);
2917-
cmds.clear_err = (struct nd_cmd_clear_error) {
2919+
cmd_size = sizeof(cmd.clear_err);
2920+
cmd.clear_err = (struct nd_cmd_clear_error) {
29182921
.length = 512,
29192922
.cleared = 512,
29202923
};
2921-
rc = setup_result(cmds.buf, cmd_size);
2924+
rc = setup_result(cmd.buf, cmd_size);
29222925
if (rc)
29232926
return rc;
29242927
rc = acpi_nfit_ctl(&acpi_desc->nd_desc, NULL, ND_CMD_CLEAR_ERROR,
2925-
cmds.buf, cmd_size, &cmd_rc);
2928+
cmd.buf, cmd_size, &cmd_rc);
29262929
if (rc < 0 || cmd_rc) {
29272930
dev_dbg(dev, "%s: failed at: %d rc: %d cmd_rc: %d\n",
29282931
__func__, __LINE__, rc, cmd_rc);

0 commit comments

Comments
 (0)