Patchwork [1/2] Add Linux libnuma detection

login
register
mail settings
Submitter Wanlong Gao
Date June 5, 2013, 3:58 a.m.
Message ID <1370404705-4620-1-git-send-email-gaowanlong@cn.fujitsu.com>
Download mbox | patch
Permalink /patch/248886/
State New
Headers show

Comments

Wanlong Gao - June 5, 2013, 3:58 a.m.
Add detection of libnuma (mostly contained in the numactl package)
to the configure script. Currently this is Linux only, but can be
extended later should the need for other interfaces come up.
Can be enabled or disabled on the command line, default is use if
available.

Original-signed-off-by: Andre Przywara <andre.przywara@amd.com>
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
---
 configure | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)
Andreas Färber - June 5, 2013, 10:02 a.m.
Am 05.06.2013 05:58, schrieb Wanlong Gao:
> Add detection of libnuma (mostly contained in the numactl package)
> to the configure script. Currently this is Linux only, but can be
> extended later should the need for other interfaces come up.
> Can be enabled or disabled on the command line, default is use if
> available.
> 
> Original-signed-off-by: Andre Przywara <andre.przywara@amd.com>

This should be just Signed-off-by, the difference between From and Sob
already indicates you changed his code.

> Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
> ---
>  configure | 32 ++++++++++++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/configure b/configure
> index 1654413..d897f98 100755
> --- a/configure
> +++ b/configure
> @@ -242,6 +242,7 @@ gtk=""
>  gtkabi="2.0"
>  tpm="no"
>  libssh2=""
> +numa="yes"

This should be "" by default - it is not needed by linux-user and when
--enable-numa is used we should error out if it's not there.

>  
>  # parse CC options first
>  for opt do
> @@ -937,6 +938,10 @@ for opt do
>    ;;
>    --enable-libssh2) libssh2="yes"
>    ;;
> +  --disable-numa) numa="no"
> +  ;;
> +  --enable-numa) numa="yes"
> +  ;;
>    *) echo "ERROR: unknown option $opt"; show_help="yes"
>    ;;
>    esac
> @@ -1151,6 +1156,8 @@ echo "  --gcov=GCOV              use specified gcov [$gcov_tool]"
>  echo "  --enable-tpm             enable TPM support"
>  echo "  --disable-libssh2        disable ssh block device support"
>  echo "  --enable-libssh2         enable ssh block device support"
> +echo "  --disable-numa           disable host Linux NUMA support"
> +echo "  --enable-numa            enable host Linux NUMA support"
>  echo ""
>  echo "NOTE: The object files are built at the place where configure is launched"
>  exit 1
> @@ -2382,6 +2389,27 @@ EOF
>  fi
>  
>  ##########################################
> +# libnuma probe
> +
> +if test "$numa" = "yes" ; then

Requires to check for != "no" here.

> +  numa=no
> +  cat > $TMPC << EOF
> +#include <numa.h>
> +int main(void) { return numa_available(); }
> +EOF
> +
> +  if compile_prog "" "-lnuma" ; then
> +    numa=yes
> +    libs_softmmu="-lnuma $libs_softmmu"
> +  else
> +    if test "$numa" = "yes" ; then
> +      feature_not_found "linux NUMA (install numactl?)"
> +    fi
> +    numa=no
> +  fi
> +fi
> +
> +##########################################
>  # linux-aio probe
>  
>  if test "$linux_aio" != "no" ; then
> @@ -3550,6 +3578,7 @@ echo "TPM support       $tpm"
>  echo "libssh2 support   $libssh2"
>  echo "TPM passthrough   $tpm_passthrough"
>  echo "QOM debugging     $qom_cast_debug"
> +echo "NUMA host support $numa"
>  
>  if test "$sdl_too_old" = "yes"; then
>  echo "-> Your SDL version is too old - please upgrade to have SDL support"
> @@ -3584,6 +3613,9 @@ echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
>  echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
>  echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
>  echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
> +if test "$numa" = "yes"; then
> +  echo "CONFIG_NUMA=y" >> $config_host_mak
> +fi
>  
>  echo "ARCH=$ARCH" >> $config_host_mak
>  
> 

Regards,
Andreas

Patch

diff --git a/configure b/configure
index 1654413..d897f98 100755
--- a/configure
+++ b/configure
@@ -242,6 +242,7 @@  gtk=""
 gtkabi="2.0"
 tpm="no"
 libssh2=""
+numa="yes"
 
 # parse CC options first
 for opt do
@@ -937,6 +938,10 @@  for opt do
   ;;
   --enable-libssh2) libssh2="yes"
   ;;
+  --disable-numa) numa="no"
+  ;;
+  --enable-numa) numa="yes"
+  ;;
   *) echo "ERROR: unknown option $opt"; show_help="yes"
   ;;
   esac
@@ -1151,6 +1156,8 @@  echo "  --gcov=GCOV              use specified gcov [$gcov_tool]"
 echo "  --enable-tpm             enable TPM support"
 echo "  --disable-libssh2        disable ssh block device support"
 echo "  --enable-libssh2         enable ssh block device support"
+echo "  --disable-numa           disable host Linux NUMA support"
+echo "  --enable-numa            enable host Linux NUMA support"
 echo ""
 echo "NOTE: The object files are built at the place where configure is launched"
 exit 1
@@ -2382,6 +2389,27 @@  EOF
 fi
 
 ##########################################
+# libnuma probe
+
+if test "$numa" = "yes" ; then
+  numa=no
+  cat > $TMPC << EOF
+#include <numa.h>
+int main(void) { return numa_available(); }
+EOF
+
+  if compile_prog "" "-lnuma" ; then
+    numa=yes
+    libs_softmmu="-lnuma $libs_softmmu"
+  else
+    if test "$numa" = "yes" ; then
+      feature_not_found "linux NUMA (install numactl?)"
+    fi
+    numa=no
+  fi
+fi
+
+##########################################
 # linux-aio probe
 
 if test "$linux_aio" != "no" ; then
@@ -3550,6 +3578,7 @@  echo "TPM support       $tpm"
 echo "libssh2 support   $libssh2"
 echo "TPM passthrough   $tpm_passthrough"
 echo "QOM debugging     $qom_cast_debug"
+echo "NUMA host support $numa"
 
 if test "$sdl_too_old" = "yes"; then
 echo "-> Your SDL version is too old - please upgrade to have SDL support"
@@ -3584,6 +3613,9 @@  echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
+if test "$numa" = "yes"; then
+  echo "CONFIG_NUMA=y" >> $config_host_mak
+fi
 
 echo "ARCH=$ARCH" >> $config_host_mak