All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.