diff --git a/obs-packaging/qemu-vanilla/debian.rules-template b/obs-packaging/qemu-vanilla/debian.rules-template index b743edbe..ed162ba2 100644 --- a/obs-packaging/qemu-vanilla/debian.rules-template +++ b/obs-packaging/qemu-vanilla/debian.rules-template @@ -6,7 +6,7 @@ export LANG=C override_dh_auto_configure: chmod a+x "../SOURCES/configure-hypervisor.sh" - eval "../SOURCES/configure-hypervisor.sh" "qemu-vanilla" | xargs ./configure --prefix=/usr + eval "../SOURCES/configure-hypervisor.sh" "qemu-vanilla" | sed -e 's/--enable-libpmem//g' | xargs ./configure --prefix=/usr override_dh_auto_build: make @@ -24,4 +24,3 @@ override_dh_auto_test: override_dh_auto_clean: echo "Skip auto clean" - diff --git a/obs-packaging/qemu-vanilla/qemu-vanilla.spec-template b/obs-packaging/qemu-vanilla/qemu-vanilla.spec-template index ee96c919..daf4bd43 100644 --- a/obs-packaging/qemu-vanilla/qemu-vanilla.spec-template +++ b/obs-packaging/qemu-vanilla/qemu-vanilla.spec-template @@ -47,6 +47,7 @@ BuildRequires : python BuildRequires : python-devel BuildRequires : zlib-devel BuildRequires : pkgconfig(pixman-1) +BuildRequires : libpmem-devel # Patches @RPM_PATCH_LIST@ diff --git a/scripts/configure-hypervisor.sh b/scripts/configure-hypervisor.sh index 50f3c4e4..535e051b 100755 --- a/scripts/configure-hypervisor.sh +++ b/scripts/configure-hypervisor.sh @@ -330,10 +330,6 @@ generate_qemu_options() { qemu_options+=(size:--disable-linux-aio) if [[ "${qemu_version_major}" -ge 4 || ( "${qemu_version_major}" -eq 3 && "${qemu_version_minor}" -ge 1 ) ]]; then - # Disable libpmem, vNVDIMM backend (aka rootfs image) shouldn't be modifed - # by the guest - qemu_options+=(security:--disable-libpmem) - # Disable graphics qemu_options+=(size:--disable-virglrenderer) @@ -396,6 +392,11 @@ generate_qemu_options() { fi # Enable libc malloc_trim() for memory optimization. qemu_options+=(speed:--enable-malloc-trim) + + # According to QEMU's nvdimm documentation: When 'pmem' is 'on' and QEMU is + # built with libpmem support, QEMU will take necessary operations to guarantee + # the persistence of its own writes to the vNVDIMM backend. + qemu_options+=(functionality:--enable-libpmem) fi #--------------------------------------------------------------------- diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 21e4e4a6..e89a9d32 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -338,6 +338,7 @@ parts: - curl - libcapstone-dev - bc + - libpmem-dev override-build: | kata_version=$(cat ${SNAPCRAFT_STAGE}/kata_version) yq=$(realpath ../../yq/build/yq) diff --git a/static-build/qemu-virtiofs/Dockerfile b/static-build/qemu-virtiofs/Dockerfile index f2c7413e..bee08b66 100644 --- a/static-build/qemu-virtiofs/Dockerfile +++ b/static-build/qemu-virtiofs/Dockerfile @@ -26,6 +26,7 @@ RUN apt-get install -y \ libglib2.0-dev git \ libltdl-dev \ libpixman-1-dev \ + libpmem-dev \ libseccomp-dev \ libtool \ patch \ diff --git a/static-build/qemu/Dockerfile b/static-build/qemu/Dockerfile index 2b127b6f..76c26e0d 100644 --- a/static-build/qemu/Dockerfile +++ b/static-build/qemu/Dockerfile @@ -26,6 +26,7 @@ RUN apt-get install -y \ libglib2.0-dev git \ libltdl-dev \ libpixman-1-dev \ + libpmem-dev \ libtool \ pkg-config \ pkg-config \