linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] ktest: add pmem support
@ 2018-06-15 19:51 Matthew Wilcox
  0 siblings, 0 replies; only message in thread
From: Matthew Wilcox @ 2018-06-15 19:51 UTC (permalink / raw)
  To: Kent Overstreet, Ross Zwisler, linux-fsdevel, linux-nvdimm


I haven't got a filesystem mounted using DAX yet, but I thought I might
as well send out the current patch against ktest for enabling persistent
memory.  It's clearly *wrong*, but I do get a /dev/pmem0 device under
Linux once I add all the right config options.  So it's a start, and
people who are deeper into this than I am can suggest things to do to
make it better.

diff --git a/boot.ktest b/boot.ktest
index 8b22e1d..7e7d252 100644
--- a/boot.ktest
+++ b/boot.ktest
@@ -5,6 +5,7 @@ require-lib tests/prelude.sh
 config-mem 2G
 config-scratch-devs 4G
 config-scratch-devs 4G
+config-pmem-devs 4G
 config-timeout 600000
 
 main()
diff --git a/lib/libktest.sh b/lib/libktest.sh
index 7843088..ad1ea62 100644
--- a/lib/libktest.sh
+++ b/lib/libktest.sh
@@ -271,7 +271,7 @@ start_vm()
 
     case $ktest_arch in
 	x86|x86_64)
-	    qemu_cmd+=(-cpu host -machine accel=kvm)
+	    qemu_cmd+=(-cpu host -machine accel=kvm,nvdimm)
 	    ;;
 	mips)
 	    qemu_cmd+=(-cpu 24Kf -machine malta)
@@ -283,7 +283,7 @@ start_vm()
     esac
 
     qemu_cmd+=(								\
-	-m		"$ktest_mem"					\
+	-m		"$ktest_mem,slots=8,maxmem=1T"			\
 	-smp		"$ktest_cpus"					\
 	-kernel		"$ktest_kernel_binary/vmlinuz"			\
 	-append		"$(join_by " " ${kernelargs[@]})"		\
@@ -316,6 +316,13 @@ start_vm()
 	disknr=$((disknr + 1))
     }
 
+    qemu_pmem()
+    {
+	qemu_cmd+=(-object memory-backend-file,id=mem$disknr,share,"$1",align=128M)
+	qemu_cmd+=(-device nvdimm,memdev=mem$disknr,id=nv$disknr,label-size=2M)
+	disknr=$((disknr + 1))
+    }
+
     qemu_disk file="$ktest_root_image",snapshot=on
 
     for size in "${ktest_scratch_devs[@]}"; do
@@ -325,6 +332,13 @@ start_vm()
 	qemu_disk file="$file",cache=unsafe
     done
 
+    for size in "${ktest_pmem_devs[@]}"; do
+	local file="$ktest_tmp/dev-$disknr"
+
+	fallocate -l "$size" "$file"
+	qemu_pmem mem-path="$file",size=$size
+    done
+
     set|grep -vE '^[A-Z]' > "$ktest_tmp/env"
 
     set +o errexit
diff --git a/lib/parse-test.sh b/lib/parse-test.sh
index 30b23ad..353d713 100644
--- a/lib/parse-test.sh
+++ b/lib/parse-test.sh
@@ -90,6 +90,11 @@ parse_test_deps()
 	ktest_scratch_devs+=("$1")
     }
 
+    config-pmem-devs()
+    {
+	ktest_pmem_devs+=("$1")
+    }
+
     config-image()
     {
 	ktest_root_image=$1

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2018-06-15 19:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-15 19:51 [RFC] ktest: add pmem support Matthew Wilcox

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).