From: Dan Williams <dan.j.williams@intel.com>
To: linux-nvdimm@lists.01.org
Cc: vishal.l.verma@intel.com
Subject: [ndctl PATCH v2 4/4] ndctl/test: Test firmware-activation interface
Date: Mon, 20 Jul 2020 16:38:12 -0700 [thread overview]
Message-ID: <159528829258.994840.14916080245194585010.stgit@dwillia2-desk3.amr.corp.intel.com> (raw)
In-Reply-To: <159528827109.994840.13180558014653471832.stgit@dwillia2-desk3.amr.corp.intel.com>
Use the nfit_test firmware-update+activation emulation to validate the
operation of the kernel sysfs attributes, libndctl, ndctl update-firmware,
and ndctl activate-firmware.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
test/firmware-update.sh | 47 ++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 42 insertions(+), 5 deletions(-)
diff --git a/test/firmware-update.sh b/test/firmware-update.sh
index ed7d7e53772c..284b8268dbdd 100755
--- a/test/firmware-update.sh
+++ b/test/firmware-update.sh
@@ -22,23 +22,60 @@ reset()
detect()
{
- dev=$($NDCTL list -b $NFIT_TEST_BUS0 -D | jq .[0].dev | tr -d '"')
- [ -n "$dev" ] || err "$LINENO"
+ $NDCTL wait-scrub $NFIT_TEST_BUS0
+ fwa=$($NDCTL list -b $NFIT_TEST_BUS0 -F | jq -r '.[0].firmware.activate_method')
+ [ $fwa = "suspend" ] || err "$LINENO"
+ count=$($NDCTL list -b $NFIT_TEST_BUS0 -D | jq length)
+ [ $((count)) -eq 4 ] || err "$LINENO"
}
do_tests()
{
+ # create a dummy image file, try to update all 4 dimms on
+ # nfit_test.0, validate that all get staged, validate that all
+ # but one get armed relative to an overflow error.
truncate -s 196608 $image
- $NDCTL update-firmware -f $image $dev
+ json=$($NDCTL update-firmware -b $NFIT_TEST_BUS0 -f $image all)
+ count=$(jq 'map(select(.firmware.activate_state == "armed")) | length' <<< $json)
+ [ $((count)) -eq 3 ] || err "$LINENO"
+ count=$(jq 'map(select(.firmware.activate_state == "idle")) | length' <<< $json)
+ [ $((count)) -eq 1 ] || err "$LINENO"
+
+ # validate that the overflow dimm can be force armed
+ dev=$(jq -r '.[] | select(.firmware.activate_state == "idle").dev' <<< $json)
+ json=$($NDCTL update-firmware -b $NFIT_TEST_BUS0 $dev -A --force)
+ state=$(jq -r '.[0].firmware.activate_state' <<< $json)
+ [ $state = "armed" ] || err "$LINENO"
+
+ # validate that the bus indicates overflow
+ fwa=$($NDCTL list -b $NFIT_TEST_BUS0 -F | jq -r '.[0].firmware.activate_state')
+ [ $fwa = "overflow" ] || err "$LINENO"
+
+ # validate that all devices can be disarmed, and the bus goes idle
+ json=$($NDCTL update-firmware -b $NFIT_TEST_BUS0 -D all)
+ count=$(jq 'map(select(.firmware.activate_state == "idle")) | length' <<< $json)
+ [ $((count)) -eq 4 ] || err "$LINENO"
+ fwa=$($NDCTL list -b $NFIT_TEST_BUS0 -F | jq -r '.[0].firmware.activate_state')
+ [ $fwa = "idle" ] || err "$LINENO"
+
+ # re-arm all DIMMs
+ json=$($NDCTL update-firmware -b $NFIT_TEST_BUS0 -A --force all)
+ count=$(jq 'map(select(.firmware.activate_state == "armed")) | length' <<< $json)
+ [ $((count)) -eq 4 ] || err "$LINENO"
+
+ # trigger activation via suspend
+ json=$($NDCTL activate-firmware -v $NFIT_TEST_BUS0)
+ idle_count=$(jq '.[].dimms | map(select(.firmware.activate_state == "idle")) | length' <<< $json)
+ busy_count=$(jq '.[].dimms | map(select(.firmware.activate_state == "busy")) | length' <<< $json)
+ [ $((idle_count)) -eq 4 -o $((busy_count)) -eq 4 ] || err "$LINENO"
}
check_min_kver "4.16" || do_skip "may lack firmware update test handling"
modprobe nfit_test
-rc=1
reset
-rc=2
detect
+rc=1
do_tests
rm -f $image
_cleanup
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org
prev parent reply other threads:[~2020-07-20 23:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-20 23:37 [ndctl PATCH v2 0/4] Firmware Activation and Test Updates Dan Williams
2020-07-20 23:37 ` [ndctl PATCH v2 1/4] ndctl/list: Add firmware activation enumeration Dan Williams
2020-07-20 23:38 ` [ndctl PATCH v2 2/4] ndctl/dimm: Auto-arm firmware activation Dan Williams
2020-07-20 23:38 ` [ndctl PATCH v2 3/4] ndctl/bus: Add 'activate-firmware' command Dan Williams
2020-07-20 23:38 ` Dan Williams [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=159528829258.994840.14916080245194585010.stgit@dwillia2-desk3.amr.corp.intel.com \
--to=dan.j.williams@intel.com \
--cc=linux-nvdimm@lists.01.org \
--cc=vishal.l.verma@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).