qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Is network backend netmap worth keeping?


From: Markus Armbruster
Subject: Re: [Qemu-devel] Is network backend netmap worth keeping?
Date: Mon, 23 Sep 2019 13:21:28 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)

Giuseppe Lettieri <address@hidden> writes:

> Il 13/09/19 15:04, Markus Armbruster ha scritto:
>>
>> What happens when I build with --enable-netmap=system on host A, then
>> run the resulting binary on some host B that doesn't have netmap
>> installed?
>>
>
> Qemu will fail at startup, complaining that /dev/netmap does not exists.
>
>
>>
>> Yes.  We default to netmap=system, though.  If you break things by
>> passing arcane arguments to configure, you get to keep the pieces :)
>>
>>> If the option is only useful for developers to check that some qemu
>>> change does not break anything, then probably it should be enabled in
>>> some other, less visible way. What do you think?
>>
>> I think an --enable-netmap patterned after --enable-capstone and
>> --enable-slirp has sufficiently low visibility as long as the default is
>> sane.
>>
>> We clearly want configure to pick netmap=system when the system provides
>> netmap.
>>
>> What shall configure pick when the system doesn't provide it?  If you
>> think netmap=git is too dangerous for general audience, consider
>> disabling netmap then.  Experts can still compile-test with
>> --enable-netmap=git.  Our CI certainly should.
>>
>
> OK, sounds reasonable. The attached patch will select system if netmap
> is available, and git only if explicitly requested.
>
> Cheers,
> Giuseppe
>
> -- 
> Dr. Ing. Giuseppe Lettieri
> Dipartimento di Ingegneria della Informazione
> Universita' di Pisa
> Largo Lucio Lazzarino 1, 56122 Pisa - Italy
> Ph. : (+39) 050-2217.649 (direct) .599 (switch)
> Fax : (+39) 050-2217.600
> e-mail: address@hidden
>
>>From 4e93b5cc3ad68d92bc3562df3745e1d10dc08fc0 Mon Sep 17 00:00:00 2001
> From: Giuseppe Lettieri <address@hidden>
> Date: Mon, 2 Sep 2019 17:35:33 +0200
> Subject: [PATCH] netmap: support git-submodule build otption
>
> With this patch, netmap support can be enabled with
> the following options to the configure script:
>
>   --enable-netmap[=system]
>
>       Use the host system netmap installation.
>       Fail if not found.
>
>   --enable-netmap=git
>
>       clone the official netmap repository on
>       github (mostly useful for CI)
>
> system will also be automatically used if no option is
> passed and netmap is available in the host system.
>
> Signed-off-by: Giuseppe Lettieri <address@hidden>
> ---
>  .gitmodules |  3 +++
>  configure   | 68 ++++++++++++++++++++++++++++++++++++++++++++---------
>  netmap      |  1 +
>  3 files changed, 61 insertions(+), 11 deletions(-)
>  create mode 160000 netmap
>
> diff --git a/.gitmodules b/.gitmodules
> index c5c474169d..bf75dbc5e3 100644
> --- a/.gitmodules
> +++ b/.gitmodules
> @@ -58,3 +58,6 @@
>  [submodule "roms/opensbi"]
>       path = roms/opensbi
>       url =   https://git.qemu.org/git/opensbi.git
> +[submodule "netmap"]
> +     path = netmap
> +     url = https://github.com/luigirizzo/netmap.git
> diff --git a/configure b/configure
> index 30aad233d1..5cb924985c 100755
> --- a/configure
> +++ b/configure
> @@ -1133,6 +1133,10 @@ for opt do
>    ;;
>    --enable-netmap) netmap="yes"
>    ;;
> +  --enable-netmap=git) netmap="git"
> +  ;;
> +  --enable-netmap=system) netmap="system"
> +  ;;
>    --disable-xen) xen="no"
>    ;;
>    --enable-xen) xen="yes"
> @@ -3314,8 +3318,9 @@ fi
>  # a minor/major version number. Minor new features will be marked with 
> values up
>  # to 15, and if something happens that requires a change to the backend we 
> will
>  # move above 15, submit the backend fixes and modify this two bounds.
> -if test "$netmap" != "no" ; then
> -  cat > $TMPC << EOF
> +case "$netmap" in
> +    "" | yes | system)
> +      cat > $TMPC << EOF
>  #include <inttypes.h>
>  #include <net/if.h>
>  #include <net/netmap.h>
> @@ -3325,15 +3330,56 @@ if test "$netmap" != "no" ; then
>  #endif
>  int main(void) { return 0; }
>  EOF
> -  if compile_prog "" "" ; then
> -    netmap=yes
> -  else
> -    if test "$netmap" = "yes" ; then
> -      feature_not_found "netmap"
> +      if compile_prog "" "" ; then
> +        netmap_system=yes
> +      else
> +        netmap_system=no
> +      fi
> +      ;;
> +esac

Is the indentation change intentional?

> +
> +case "$netmap" in
> +  "" | yes)
> +    if test "$netmap_system" = "yes"; then
> +      netmap=system
> +    elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
> +      netmap=git
> +    elif test -e "${source_path}/netmap/configure" ; then
> +      netmap=internal
> +    elif test -z "$netmap" ; then
> +      netmap=no
> +    else
> +      feature_not_found "netmap" "Install netmap or git submodule"
>      fi
> -    netmap=no
> -  fi
> -fi
> +    ;;
> +
> +  system)
> +    if test "$netmap_system" = "no"; then
> +      feature_not_found "netmap" "Install netmap"
> +    fi
> +    ;;
> +esac
> +
> +case "$netmap" in
> +  git | internal)
> +    if test "$netmap" = git; then
> +      git_submodules="${git_submodules} netmap"
> +    fi
> +    mkdir -p netmap
> +    QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/netmap/sys"
> +    ;;
> +
> +  system)
> +    ;;
> +
> +  no)
> +    ;;
> +  *)
> +    error_exit "Unknown state for netmap: $netmap"
> +    ;;
> +esac
> +
> +##########################################
>  
>  ##########################################
>  # libcap-ng library probe
> @@ -6582,7 +6628,7 @@ if test "$vde" = "yes" ; then
>    echo "CONFIG_VDE=y" >> $config_host_mak
>    echo "VDE_LIBS=$vde_libs" >> $config_host_mak
>  fi
> -if test "$netmap" = "yes" ; then
> +if test "$netmap" != "no" ; then
>    echo "CONFIG_NETMAP=y" >> $config_host_mak
>  fi
>  if test "$l2tpv3" = "yes" ; then
> diff --git a/netmap b/netmap
> new file mode 160000
> index 0000000000..137f537eae
> --- /dev/null
> +++ b/netmap
> @@ -0,0 +1 @@
> +Subproject commit 137f537eae513f02d5d6871d1f91c049e6345803

Looks reasonable to me.  Please submit it as a patch.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]