131 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 3ac4a8eb45ad35ff759a76233e9437566041dba0 Mon Sep 17 00:00:00 2001
 | |
| From: "plai@redhat.com" <plai@redhat.com>
 | |
| Date: Mon, 7 Jan 2019 17:02:18 +0000
 | |
| Subject: [PATCH 17/22] configure: add libpmem support
 | |
| 
 | |
| RH-Author: plai@redhat.com
 | |
| Message-id: <1546880543-24860-6-git-send-email-plai@redhat.com>
 | |
| Patchwork-id: 83890
 | |
| O-Subject: [RHEL8.0 qemu-kvm PATCH v7 05/10] configure: add libpmem support
 | |
| Bugzilla: 1539285
 | |
| RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
 | |
| RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
 | |
| RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com>
 | |
| 
 | |
| From: Junyan He <junyan.he@intel.com>
 | |
| 
 | |
| Add a pair of configure options --{enable,disable}-libpmem to control
 | |
| whether QEMU is compiled with PMDK libpmem [1].
 | |
| 
 | |
| QEMU may write to the host persistent memory (e.g. in vNVDIMM label
 | |
| emulation and live migration), so it must take the proper operations
 | |
| to ensure the persistence of its own writes. Depending on the CPU
 | |
| models and available instructions, the optimal operation can vary [2].
 | |
| PMDK libpmem have already implemented those operations on multiple CPU
 | |
| models (x86 and ARM) and the logic to select the optimal ones, so QEMU
 | |
| can just use libpmem rather than re-implement them.
 | |
| 
 | |
| Libpem is a part of PMDK project(formerly known as NMVL).
 | |
| The project's home page is: http://pmem.io/pmdk/
 | |
| And the project's repository is: https://github.com/pmem/pmdk/
 | |
| 
 | |
| For more information about libpmem APIs, you can refer to the comments
 | |
| in source code of: pmdk/src/libpmem/pmem.c, begin at line 33.
 | |
| 
 | |
| Signed-off-by: Junyan He <junyan.he@intel.com>
 | |
| Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
 | |
| Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
 | |
| Reviewed-by: Igor Mammedov <imammedo@redhat.com>
 | |
| Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
 | |
| Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
 | |
| Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
 | |
| (cherry picked from commit 17824406fa55b303379f2e4af715c1e876c3535f)
 | |
| Signed-off-by: Paul Lai <plai@redhat.com>
 | |
| 
 | |
| Resolved Conflicts:
 | |
| 	configure
 | |
| 
 | |
| Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
 | |
| ---
 | |
|  configure | 29 +++++++++++++++++++++++++++++
 | |
|  1 file changed, 29 insertions(+)
 | |
| 
 | |
| diff --git a/configure b/configure
 | |
| index 139f3c8..858b456 100755
 | |
| --- a/configure
 | |
| +++ b/configure
 | |
| @@ -461,6 +461,7 @@ parallels="yes"
 | |
|  sheepdog="yes"
 | |
|  libxml2=""
 | |
|  libudev="no"
 | |
| +libpmem=""
 | |
|  
 | |
|  supported_cpu="no"
 | |
|  supported_os="no"
 | |
| @@ -1421,6 +1422,10 @@ for opt do
 | |
|    ;;
 | |
|    --disable-git-update) git_update=no
 | |
|    ;;
 | |
| +  --enable-libpmem) libpmem=yes
 | |
| +  ;;
 | |
| +  --disable-libpmem) libpmem=no
 | |
| +  ;;
 | |
|    *)
 | |
|        echo "ERROR: unknown option $opt"
 | |
|        echo "Try '$0 --help' for more information"
 | |
| @@ -1687,6 +1692,7 @@ disabled with --disable-FEATURE, default is enabled if available:
 | |
|    crypto-afalg    Linux AF_ALG crypto backend driver
 | |
|    vhost-user      vhost-user support
 | |
|    capstone        capstone disassembler support
 | |
| +  libpmem         libpmem support
 | |
|  
 | |
|  NOTE: The object files are built at the place where configure is launched
 | |
|  EOF
 | |
| @@ -5458,6 +5464,24 @@ EOF
 | |
|  fi
 | |
|  
 | |
|  ##########################################
 | |
| +# check for libpmem
 | |
| +
 | |
| +if test "$libpmem" != "no"; then
 | |
| +	if $pkg_config --exists "libpmem"; then
 | |
| +		libpmem="yes"
 | |
| +		libpmem_libs=$($pkg_config --libs libpmem)
 | |
| +		libpmem_cflags=$($pkg_config --cflags libpmem)
 | |
| +		libs_softmmu="$libs_softmmu $libpmem_libs"
 | |
| +		QEMU_CFLAGS="$QEMU_CFLAGS $libpmem_cflags"
 | |
| +	else
 | |
| +		if test "$libpmem" = "yes" ; then
 | |
| +			feature_not_found "libpmem" "Install nvml or pmdk"
 | |
| +		fi
 | |
| +		libpmem="no"
 | |
| +	fi
 | |
| +fi
 | |
| +
 | |
| +##########################################
 | |
|  # End of CC checks
 | |
|  # After here, no more $cc or $ld runs
 | |
|  
 | |
| @@ -5939,6 +5963,7 @@ echo "parallels support $parallels"
 | |
|  echo "sheepdog support  $sheepdog"
 | |
|  echo "capstone          $capstone"
 | |
|  echo "libudev           $libudev"
 | |
| +echo "libpmem support   $libpmem"
 | |
|  
 | |
|  if test "$sdl_too_old" = "yes"; then
 | |
|  echo "-> Your SDL version is too old - please upgrade to have SDL support"
 | |
| @@ -6714,6 +6739,10 @@ if test "$sheepdog" = "yes" ; then
 | |
|    echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
 | |
|  fi
 | |
|  
 | |
| +if test "$libpmem" = "yes" ; then
 | |
| +  echo "CONFIG_LIBPMEM=y" >> $config_host_mak
 | |
| +fi
 | |
| +
 | |
|  if test "$tcg_interpreter" = "yes"; then
 | |
|    QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
 | |
|  elif test "$ARCH" = "sparc64" ; then
 | |
| -- 
 | |
| 1.8.3.1
 | |
| 
 |