[1/2] Add Linux libnuma detection

Submitted by Wanlong Gao on June 5, 2013, 3:58 a.m.

Details

Message ID 1370404705-4620-1-git-send-email-gaowanlong@cn.fujitsu.com
State New
Headers show

Commit Message

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(+)

Comments

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 hide | download patch | download mbox

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