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
_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to