From: Santosh Sivaraj <santosh@fossix.org>
To: linux-nvdimm@lists.01.org, Dan Williams <dan.j.williams@intel.com>
Cc: harish@linux.ibm.com
Subject: [PATCH 2/2] Enable ndctl tests for emulated pmem devices
Date: Mon, 23 Sep 2019 09:00:15 +0530 [thread overview]
Message-ID: <20190923033015.26732-2-santosh@fossix.org> (raw)
In-Reply-To: <20190923033015.26732-1-santosh@fossix.org>
For QEMU emulated devices and other platforms, nfit drivers are not needed.
This patch achieves that by relying upon the environment variable called
'WITHOUT_NFIT'. If 'WITHOUT_NFIT=y', nfit drivers (nfit_test and
libnvdimm_test) are not loaded.
Signed-off-by: Santosh Sivaraj <santosh@fossix.org>
---
configure.ac | 8 ++++++++
test/btt-pad-compat.sh | 5 ++++-
test/clear.sh | 5 ++++-
test/common | 19 ++++++++++++++-----
test/core.c | 6 ++++++
test/create.sh | 5 ++++-
test/daxdev-errors.c | 14 ++++++++++----
test/daxdev-errors.sh | 5 ++++-
test/dpa-alloc.c | 17 +++++++++++++----
test/libndctl.c | 21 +++++++++++++++++----
10 files changed, 84 insertions(+), 21 deletions(-)
diff --git a/configure.ac b/configure.ac
index 4737cff..33fbd0b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -145,6 +145,14 @@ if test "x$with_bash" = "xyes"; then
[BASH_COMPLETION_DIR=$($PKG_CONFIG --variable=completionsdir bash-completion)], [])
fi
+AC_CANONICAL_HOST
+AS_CASE([$host_cpu],
+ [x86_64|arm*],
+ [
+ AC_DEFINE([ACPI], [1], ["Build for ACPI NFIT"])
+ ]
+)
+
AC_SUBST([BASH_COMPLETION_DIR])
AM_CONDITIONAL([ENABLE_BASH_COMPLETION], [test "x$with_bash" = "xyes"])
diff --git a/test/btt-pad-compat.sh b/test/btt-pad-compat.sh
index a5fc796..1e5ce48 100755
--- a/test/btt-pad-compat.sh
+++ b/test/btt-pad-compat.sh
@@ -187,7 +187,10 @@ do_tests()
ns_info_wipe
}
-modprobe nfit_test
+if [ -z "$WITHOUT_NFIT" ]; then
+ modprobe nfit_test
+fi
+
check_prereq xxd
rc=1
reset
diff --git a/test/clear.sh b/test/clear.sh
index f0b4a9b..e0b1f84 100755
--- a/test/clear.sh
+++ b/test/clear.sh
@@ -22,7 +22,10 @@ check_min_kver "4.6" || do_skip "lacks clear poison support"
trap 'err $LINENO' ERR
# setup (reset nfit_test dimms)
-modprobe nfit_test
+if [ -z "$WITHOUT_NFIT" ]; then
+ modprobe nfit_test
+fi
+
$NDCTL disable-region -b $TEST_BUS0 all
$NDCTL zero-labels -b $TEST_BUS0 all
$NDCTL enable-region -b $TEST_BUS0 all
diff --git a/test/common b/test/common
index 54085ae..1251ba5 100644
--- a/test/common
+++ b/test/common
@@ -29,10 +29,17 @@ fi
# TEST_BUS[01]
#
-TEST_BUS0="nfit_test.0"
-TEST_BUS1="nfit_test.1"
-ACPI_BUS="ACPI.NFIT"
-E820_BUS="e820"
+echo $WITHOUT_NFIT
+if [ -n "$WITHOUT_NFIT" ]; then
+ echo $BUS_PROVIDER0
+ TEST_BUS0="$BUS_PROVIDER0"
+ TEST_BUS1="$BUS_PROVIDER1"
+else
+ TEST_BUS0="nfit_test.0"
+ TEST_BUS1="nfit_test.1"
+ ACPI_BUS="ACPI.NFIT"
+ E820_BUS="e820"
+fi
# Functions
@@ -84,7 +91,9 @@ _cleanup()
{
$NDCTL disable-region -b $TEST_BUS0 all
$NDCTL disable-region -b $TEST_BUS1 all
- modprobe -r nfit_test
+ if [ -z "$WITHOUT_NFIT" ]; then
+ modprobe -r nfit_test
+ fi
}
# json2var
diff --git a/test/core.c b/test/core.c
index 888f5d8..1f0c215 100644
--- a/test/core.c
+++ b/test/core.c
@@ -126,7 +126,9 @@ int nfit_test_init(struct kmod_ctx **ctx, struct kmod_module **mod,
struct ndctl_bus *bus;
struct log_ctx log_ctx;
const char *list[] = {
+#ifdef ACPI
"nfit",
+#endif
"device_dax",
"dax_pmem",
"dax_pmem_core",
@@ -134,7 +136,9 @@ int nfit_test_init(struct kmod_ctx **ctx, struct kmod_module **mod,
"libnvdimm",
"nd_blk",
"nd_btt",
+#ifdef ACPI
"nd_e820",
+#endif
"nd_pmem",
};
@@ -239,9 +243,11 @@ retry:
ndctl_bus_foreach(nd_ctx, bus) {
struct ndctl_region *region;
+#ifdef ACPI
if (strncmp(ndctl_bus_get_provider(bus),
"nfit_test", 9) != 0)
continue;
+#endif
ndctl_region_foreach(bus, region)
ndctl_region_disable_invalidate(region);
}
diff --git a/test/create.sh b/test/create.sh
index 1398c79..afc34ac 100755
--- a/test/create.sh
+++ b/test/create.sh
@@ -23,7 +23,10 @@ check_min_kver "4.5" || do_skip "may lack namespace mode attribute"
trap 'err $LINENO' ERR
# setup (reset nfit_test dimms)
-modprobe nfit_test
+if [ -z "$WITHOUT_NFIT" ]; then
+ modprobe nfit_test
+fi
+
$NDCTL disable-region -b $TEST_BUS0 all
$NDCTL zero-labels -b $TEST_BUS0 all
$NDCTL enable-region -b $TEST_BUS0 all
diff --git a/test/daxdev-errors.c b/test/daxdev-errors.c
index 29de16b..1022047 100644
--- a/test/daxdev-errors.c
+++ b/test/daxdev-errors.c
@@ -45,7 +45,6 @@ struct check_cmd {
static sigjmp_buf sj_env;
static int sig_count;
-static const char *NFIT_PROVIDER0 = "nfit_test.0";
static struct check_cmd *check_cmds;
static void sigbus_hdl(int sig, siginfo_t *siginfo, void *ptr)
@@ -245,7 +244,7 @@ static struct ndctl_dax * get_dax_region(struct ndctl_region *region)
static int test_daxdev_clear_error(const char *bus_name,
const char *region_name)
{
- int rc = 0, i;
+ int rc = 0, i, with_nfit;
struct ndctl_ctx *ctx;
struct ndctl_bus *bus;
struct ndctl_region *region;
@@ -259,6 +258,7 @@ static int test_daxdev_clear_error(const char *bus_name,
};
char path[256];
char buf[SYSFS_ATTR_SIZE];
+ char *bus_provider;
struct log_ctx log_ctx;
log_init(&log_ctx, "test/init", "NDCTL_DAXDEV_TEST");
@@ -266,7 +266,13 @@ static int test_daxdev_clear_error(const char *bus_name,
if (rc)
return rc;
- bus = ndctl_bus_get_by_provider(ctx, NFIT_PROVIDER0);
+ with_nfit = strlen(getenv("WITHOUT_NFIT")) == 0;
+ if (with_nfit)
+ bus_provider = "nfit_test.0";
+ else
+ bus_provider = getenv("BUS_PROVIDER0");
+
+ bus = ndctl_bus_get_by_provider(ctx, bus_provider);
if (!bus) {
rc = -ENODEV;
goto cleanup;
@@ -289,7 +295,7 @@ static int test_daxdev_clear_error(const char *bus_name,
/* get badblocks */
if (snprintf(path, 256,
"/sys/devices/platform/%s/%s/%s/badblocks",
- NFIT_PROVIDER0,
+ bus_provider,
bus_name,
ndctl_region_get_devname(region)) >= 256) {
fprintf(stderr, "%s: buffer too small!\n",
diff --git a/test/daxdev-errors.sh b/test/daxdev-errors.sh
index c877874..7678a9b 100755
--- a/test/daxdev-errors.sh
+++ b/test/daxdev-errors.sh
@@ -22,7 +22,10 @@ check_min_kver "4.12" || do_skip "lacks dax dev error handling"
trap 'err $LINENO' ERR
# setup (reset nfit_test dimms)
-modprobe nfit_test
+if [ -z "$WITHOUT_NFIT" ]; then
+ modprobe nfit_test
+fi
+
$NDCTL disable-region -b $TEST_BUS0 all
$NDCTL zero-labels -b $TEST_BUS0 all
$NDCTL enable-region -b $TEST_BUS0 all
diff --git a/test/dpa-alloc.c b/test/dpa-alloc.c
index 9a9c6b6..25bbe0e 100644
--- a/test/dpa-alloc.c
+++ b/test/dpa-alloc.c
@@ -30,8 +30,6 @@
#include <ndctl/libndctl.h>
#include <ccan/array_size/array_size.h>
-static const char *NFIT_PROVIDER0 = "nfit_test.0";
-static const char *NFIT_PROVIDER1 = "nfit_test.1";
#define NUM_NAMESPACES 4
struct test_dpa_namespace {
@@ -46,23 +44,34 @@ static int do_test(struct ndctl_ctx *ctx, struct ndctl_test *test)
{
unsigned int default_available_slots, available_slots, i;
struct ndctl_region *region, *blk_region = NULL;
+ char *bus_provider0, *bus_provider1;
struct ndctl_namespace *ndns;
struct ndctl_dimm *dimm;
unsigned long size;
+ bool with_nfit;
struct ndctl_bus *bus;
char uuid_str[40];
int round;
int rc;
+ with_nfit = strlen(getenv("WITHOUT_NFIT")) == 0;
+ if (with_nfit) {
+ bus_provider0 = "nfit_test.0";
+ bus_provider1 = "nfit_test.1";
+ } else {
+ bus_provider0 = getenv("BUS_PROVIDER0");
+ bus_provider1 = getenv("BUS_PROVIDER1");
+ }
+
/* disable nfit_test.1, not used in this test */
- bus = ndctl_bus_get_by_provider(ctx, NFIT_PROVIDER1);
+ bus = ndctl_bus_get_by_provider(ctx, bus_provider1);
if (!bus)
return -ENXIO;
ndctl_region_foreach(bus, region)
ndctl_region_disable_invalidate(region);
/* init nfit_test.0 */
- bus = ndctl_bus_get_by_provider(ctx, NFIT_PROVIDER0);
+ bus = ndctl_bus_get_by_provider(ctx, bus_provider0);
if (!bus)
return -ENXIO;
ndctl_region_foreach(bus, region)
diff --git a/test/libndctl.c b/test/libndctl.c
index 02bb9cc..e6fa053 100644
--- a/test/libndctl.c
+++ b/test/libndctl.c
@@ -94,8 +94,6 @@
* dimm.
*/
-static const char *NFIT_PROVIDER0 = "nfit_test.0";
-static const char *NFIT_PROVIDER1 = "nfit_test.1";
#define SZ_4K 0x00001000
#define SZ_128K 0x00020000
#define SZ_7M 0x00700000
@@ -2594,11 +2592,18 @@ static void reset_bus(struct ndctl_bus *bus)
static int do_test0(struct ndctl_ctx *ctx, struct ndctl_test *test)
{
- struct ndctl_bus *bus = ndctl_bus_get_by_provider(ctx, NFIT_PROVIDER0);
+ struct ndctl_bus *bus;
struct ndctl_region *region;
struct ndctl_dimm *dimm;
+ bool with_nfit;
int rc;
+ with_nfit = strlen(getenv("WITHOUT_NFIT")) == 0;
+ if (with_nfit)
+ bus = ndctl_bus_get_by_provider(ctx, "nfit_test.0");
+ else
+ bus = ndctl_bus_get_by_provider(ctx, getenv("BUS_PROVIDER0"));
+
if (!bus)
return -ENXIO;
@@ -2646,9 +2651,17 @@ static int do_test0(struct ndctl_ctx *ctx, struct ndctl_test *test)
static int do_test1(struct ndctl_ctx *ctx, struct ndctl_test *test)
{
- struct ndctl_bus *bus = ndctl_bus_get_by_provider(ctx, NFIT_PROVIDER1);
+ struct ndctl_bus *bus;
+ bool with_nfit;
int rc;
+ with_nfit = strlen(getenv("WITHOUT_NFIT")) == 0;
+ if (with_nfit)
+ bus = ndctl_bus_get_by_provider(ctx, "nfit_test.1");
+ else
+ bus = ndctl_bus_get_by_provider(ctx, getenv("BUS_PROVIDER1"));
+
+
if (!bus)
return -ENXIO;
--
2.21.0
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
next prev parent reply other threads:[~2019-09-23 3:30 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-23 3:30 [PATCH 1/2] rename nfit_test_bus with a more generic name Santosh Sivaraj
2019-09-23 3:30 ` Santosh Sivaraj [this message]
2019-11-27 5:42 ` Santosh Sivaraj
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=20190923033015.26732-2-santosh@fossix.org \
--to=santosh@fossix.org \
--cc=dan.j.williams@intel.com \
--cc=harish@linux.ibm.com \
--cc=linux-nvdimm@lists.01.org \
/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).