[PATCH v4 3/8] configure: add --enable-qpl build option

Yuan Liu posted 8 patches 8 months, 3 weeks ago
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Thomas Huth <thuth@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>, Laurent Vivier <lvivier@redhat.com>
There is a newer version of this series
[PATCH v4 3/8] configure: add --enable-qpl build option
Posted by Yuan Liu 8 months, 3 weeks ago
add --enable-qpl and --disable-qpl options to enable and disable
the QPL compression method for multifd migration.

the Query Processing Library (QPL) is an open-source library
that supports data compression and decompression features.

The QPL compression is based on the deflate compression algorithm
and use Intel In-Memory Analytics Accelerator(IAA) hardware for
compression and decompression acceleration.

Please refer to the following for more information about QPL
https://intel.github.io/qpl/documentation/introduction_docs/introduction.html

Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
---
 meson.build                   | 18 ++++++++++++++++++
 meson_options.txt             |  2 ++
 scripts/meson-buildoptions.sh |  3 +++
 3 files changed, 23 insertions(+)

diff --git a/meson.build b/meson.build
index c1dc83e4c0..2dea1e6834 100644
--- a/meson.build
+++ b/meson.build
@@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block
                     required: get_option('zstd'),
                     method: 'pkg-config')
 endif
+qpl = not_found
+if not get_option('qpl').auto()
+  libqpl = cc.find_library('qpl', required: false)
+  if not libqpl.found()
+    error('libqpl not found, please install it from ' +
+    'https://intel.github.io/qpl/documentation/get_started_docs/installation.html')
+  endif
+  libaccel = cc.find_library('accel-config', required: false)
+  if not libaccel.found()
+    error('libaccel-config not found, please install it from ' +
+    'https://github.com/intel/idxd-config')
+  endif
+  qpl = declare_dependency(dependencies: [libqpl, libaccel,
+        cc.find_library('dl', required: get_option('qpl'))],
+        link_args: ['-lstdc++'])
+endif
 virgl = not_found
 
 have_vhost_user_gpu = have_tools and host_os == 'linux' and pixman.found()
@@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim)
 config_host_data.set('CONFIG_STATX', has_statx)
 config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id)
 config_host_data.set('CONFIG_ZSTD', zstd.found())
+config_host_data.set('CONFIG_QPL', qpl.found())
 config_host_data.set('CONFIG_FUSE', fuse.found())
 config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found())
 config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found())
@@ -4438,6 +4455,7 @@ summary_info += {'snappy support':    snappy}
 summary_info += {'bzip2 support':     libbzip2}
 summary_info += {'lzfse support':     liblzfse}
 summary_info += {'zstd support':      zstd}
+summary_info += {'Query Processing Library support': qpl}
 summary_info += {'NUMA host support': numa}
 summary_info += {'capstone':          capstone}
 summary_info += {'libpmem support':   libpmem}
diff --git a/meson_options.txt b/meson_options.txt
index 0a99a059ec..06cd675572 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value : 'auto',
        description: 'xkbcommon support')
 option('zstd', type : 'feature', value : 'auto',
        description: 'zstd compression support')
+option('qpl', type : 'feature', value : 'auto',
+       description: 'Query Processing Library support')
 option('fuse', type: 'feature', value: 'auto',
        description: 'FUSE block device export')
 option('fuse_lseek', type : 'feature', value : 'auto',
diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
index 680fa3f581..784f74fde9 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -222,6 +222,7 @@ meson_options_help() {
   printf "%s\n" '                  Xen PCI passthrough support'
   printf "%s\n" '  xkbcommon       xkbcommon support'
   printf "%s\n" '  zstd            zstd compression support'
+  printf "%s\n" '  qpl             Query Processing Library support'
 }
 _meson_option_parse() {
   case $1 in
@@ -562,6 +563,8 @@ _meson_option_parse() {
     --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;;
     --enable-zstd) printf "%s" -Dzstd=enabled ;;
     --disable-zstd) printf "%s" -Dzstd=disabled ;;
+    --enable-qpl) printf "%s" -Dqpl=enabled ;;
+    --disable-qpl) printf "%s" -Dqpl=disabled ;;
     *) return 1 ;;
   esac
 }
-- 
2.39.3
Re: [PATCH v4 3/8] configure: add --enable-qpl build option
Posted by Fabiano Rosas 8 months, 3 weeks ago
Yuan Liu <yuan1.liu@intel.com> writes:

> add --enable-qpl and --disable-qpl options to enable and disable
> the QPL compression method for multifd migration.
>
> the Query Processing Library (QPL) is an open-source library
> that supports data compression and decompression features.
>
> The QPL compression is based on the deflate compression algorithm
> and use Intel In-Memory Analytics Accelerator(IAA) hardware for
> compression and decompression acceleration.
>
> Please refer to the following for more information about QPL
> https://intel.github.io/qpl/documentation/introduction_docs/introduction.html
>
> Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
> Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
> ---
>  meson.build                   | 18 ++++++++++++++++++
>  meson_options.txt             |  2 ++
>  scripts/meson-buildoptions.sh |  3 +++
>  3 files changed, 23 insertions(+)
>
> diff --git a/meson.build b/meson.build
> index c1dc83e4c0..2dea1e6834 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block
>                      required: get_option('zstd'),
>                      method: 'pkg-config')
>  endif
> +qpl = not_found
> +if not get_option('qpl').auto()
> +  libqpl = cc.find_library('qpl', required: false)
> +  if not libqpl.found()
> +    error('libqpl not found, please install it from ' +
> +    'https://intel.github.io/qpl/documentation/get_started_docs/installation.html')
> +  endif
> +  libaccel = cc.find_library('accel-config', required: false)
> +  if not libaccel.found()
> +    error('libaccel-config not found, please install it from ' +
> +    'https://github.com/intel/idxd-config')

accel-config seems to be packaged by many distros, I'm not sure we need
to reference the repository here.

https://repology.org/project/accel-config/versions

> +  endif
> +  qpl = declare_dependency(dependencies: [libqpl, libaccel,
> +        cc.find_library('dl', required: get_option('qpl'))],
> +        link_args: ['-lstdc++'])
> +endif
>  virgl = not_found
>  
>  have_vhost_user_gpu = have_tools and host_os == 'linux' and pixman.found()
> @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM', has_malloc_trim)
>  config_host_data.set('CONFIG_STATX', has_statx)
>  config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id)
>  config_host_data.set('CONFIG_ZSTD', zstd.found())
> +config_host_data.set('CONFIG_QPL', qpl.found())
>  config_host_data.set('CONFIG_FUSE', fuse.found())
>  config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found())
>  config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found())
> @@ -4438,6 +4455,7 @@ summary_info += {'snappy support':    snappy}
>  summary_info += {'bzip2 support':     libbzip2}
>  summary_info += {'lzfse support':     liblzfse}
>  summary_info += {'zstd support':      zstd}
> +summary_info += {'Query Processing Library support': qpl}
>  summary_info += {'NUMA host support': numa}
>  summary_info += {'capstone':          capstone}
>  summary_info += {'libpmem support':   libpmem}
> diff --git a/meson_options.txt b/meson_options.txt
> index 0a99a059ec..06cd675572 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value : 'auto',
>         description: 'xkbcommon support')
>  option('zstd', type : 'feature', value : 'auto',
>         description: 'zstd compression support')
> +option('qpl', type : 'feature', value : 'auto',
> +       description: 'Query Processing Library support')
>  option('fuse', type: 'feature', value: 'auto',
>         description: 'FUSE block device export')
>  option('fuse_lseek', type : 'feature', value : 'auto',
> diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh
> index 680fa3f581..784f74fde9 100644
> --- a/scripts/meson-buildoptions.sh
> +++ b/scripts/meson-buildoptions.sh
> @@ -222,6 +222,7 @@ meson_options_help() {
>    printf "%s\n" '                  Xen PCI passthrough support'
>    printf "%s\n" '  xkbcommon       xkbcommon support'
>    printf "%s\n" '  zstd            zstd compression support'
> +  printf "%s\n" '  qpl             Query Processing Library support'
>  }
>  _meson_option_parse() {
>    case $1 in
> @@ -562,6 +563,8 @@ _meson_option_parse() {
>      --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;;
>      --enable-zstd) printf "%s" -Dzstd=enabled ;;
>      --disable-zstd) printf "%s" -Dzstd=disabled ;;
> +    --enable-qpl) printf "%s" -Dqpl=enabled ;;
> +    --disable-qpl) printf "%s" -Dqpl=disabled ;;
>      *) return 1 ;;
>    esac
>  }
RE: [PATCH v4 3/8] configure: add --enable-qpl build option
Posted by Liu, Yuan1 8 months, 3 weeks ago
> -----Original Message-----
> From: Fabiano Rosas <farosas@suse.de>
> Sent: Wednesday, March 6, 2024 4:32 AM
> To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com
> Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com;
> bryan.zhang@bytedance.com; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, Nanhai
> <nanhai.zou@intel.com>
> Subject: Re: [PATCH v4 3/8] configure: add --enable-qpl build option
> 
> Yuan Liu <yuan1.liu@intel.com> writes:
> 
> > add --enable-qpl and --disable-qpl options to enable and disable
> > the QPL compression method for multifd migration.
> >
> > the Query Processing Library (QPL) is an open-source library
> > that supports data compression and decompression features.
> >
> > The QPL compression is based on the deflate compression algorithm
> > and use Intel In-Memory Analytics Accelerator(IAA) hardware for
> > compression and decompression acceleration.
> >
> > Please refer to the following for more information about QPL
> >
> https://intel.github.io/qpl/documentation/introduction_docs/introduction.h
> tml
> >
> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
> > ---
> >  meson.build                   | 18 ++++++++++++++++++
> >  meson_options.txt             |  2 ++
> >  scripts/meson-buildoptions.sh |  3 +++
> >  3 files changed, 23 insertions(+)
> >
> > diff --git a/meson.build b/meson.build
> > index c1dc83e4c0..2dea1e6834 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block
> >                      required: get_option('zstd'),
> >                      method: 'pkg-config')
> >  endif
> > +qpl = not_found
> > +if not get_option('qpl').auto()
> > +  libqpl = cc.find_library('qpl', required: false)
> > +  if not libqpl.found()
> > +    error('libqpl not found, please install it from ' +
> > +
> 'https://intel.github.io/qpl/documentation/get_started_docs/installation.h
> tml')
> > +  endif
> > +  libaccel = cc.find_library('accel-config', required: false)
> > +  if not libaccel.found()
> > +    error('libaccel-config not found, please install it from ' +
> > +    'https://github.com/intel/idxd-config')
> 
> accel-config seems to be packaged by many distros, I'm not sure we need
> to reference the repository here.
> 
> https://repology.org/project/accel-config/versions

Yes, accel-config has been added to many distributions, I will use pkgconfig to 
detect the libaccel and the version(at least v4.0). 

I have a question, I didn't find accel-config installation package from 
https://repology.org/project/accel-config/versions. Does using this link also 
require the user to build an accel-config package, and then install it?

It is easy to install accel-config using the installation package, but I didn't 
find a repo that provides accel-config installation packages for most distributions.

First check accel-config is available through pktconfig, and if it is not available,
prompts users to install it from https://github.com/intel/idxd-config, is it OK?

> > +  endif
> > +  qpl = declare_dependency(dependencies: [libqpl, libaccel,
> > +        cc.find_library('dl', required: get_option('qpl'))],
> > +        link_args: ['-lstdc++'])
> > +endif
> >  virgl = not_found
> >
> >  have_vhost_user_gpu = have_tools and host_os == 'linux' and
> pixman.found()
> > @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM',
> has_malloc_trim)
> >  config_host_data.set('CONFIG_STATX', has_statx)
> >  config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id)
> >  config_host_data.set('CONFIG_ZSTD', zstd.found())
> > +config_host_data.set('CONFIG_QPL', qpl.found())
> >  config_host_data.set('CONFIG_FUSE', fuse.found())
> >  config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found())
> >  config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found())
> > @@ -4438,6 +4455,7 @@ summary_info += {'snappy support':    snappy}
> >  summary_info += {'bzip2 support':     libbzip2}
> >  summary_info += {'lzfse support':     liblzfse}
> >  summary_info += {'zstd support':      zstd}
> > +summary_info += {'Query Processing Library support': qpl}
> >  summary_info += {'NUMA host support': numa}
> >  summary_info += {'capstone':          capstone}
> >  summary_info += {'libpmem support':   libpmem}
> > diff --git a/meson_options.txt b/meson_options.txt
> > index 0a99a059ec..06cd675572 100644
> > --- a/meson_options.txt
> > +++ b/meson_options.txt
> > @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value :
> 'auto',
> >         description: 'xkbcommon support')
> >  option('zstd', type : 'feature', value : 'auto',
> >         description: 'zstd compression support')
> > +option('qpl', type : 'feature', value : 'auto',
> > +       description: 'Query Processing Library support')
> >  option('fuse', type: 'feature', value: 'auto',
> >         description: 'FUSE block device export')
> >  option('fuse_lseek', type : 'feature', value : 'auto',
> > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-
> buildoptions.sh
> > index 680fa3f581..784f74fde9 100644
> > --- a/scripts/meson-buildoptions.sh
> > +++ b/scripts/meson-buildoptions.sh
> > @@ -222,6 +222,7 @@ meson_options_help() {
> >    printf "%s\n" '                  Xen PCI passthrough support'
> >    printf "%s\n" '  xkbcommon       xkbcommon support'
> >    printf "%s\n" '  zstd            zstd compression support'
> > +  printf "%s\n" '  qpl             Query Processing Library support'
> >  }
> >  _meson_option_parse() {
> >    case $1 in
> > @@ -562,6 +563,8 @@ _meson_option_parse() {
> >      --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;;
> >      --enable-zstd) printf "%s" -Dzstd=enabled ;;
> >      --disable-zstd) printf "%s" -Dzstd=disabled ;;
> > +    --enable-qpl) printf "%s" -Dqpl=enabled ;;
> > +    --disable-qpl) printf "%s" -Dqpl=disabled ;;
> >      *) return 1 ;;
> >    esac
> >  }
RE: [PATCH v4 3/8] configure: add --enable-qpl build option
Posted by Fabiano Rosas 8 months, 3 weeks ago
"Liu, Yuan1" <yuan1.liu@intel.com> writes:

>> -----Original Message-----
>> From: Fabiano Rosas <farosas@suse.de>
>> Sent: Wednesday, March 6, 2024 4:32 AM
>> To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com
>> Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com;
>> bryan.zhang@bytedance.com; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, Nanhai
>> <nanhai.zou@intel.com>
>> Subject: Re: [PATCH v4 3/8] configure: add --enable-qpl build option
>> 
>> Yuan Liu <yuan1.liu@intel.com> writes:
>> 
>> > add --enable-qpl and --disable-qpl options to enable and disable
>> > the QPL compression method for multifd migration.
>> >
>> > the Query Processing Library (QPL) is an open-source library
>> > that supports data compression and decompression features.
>> >
>> > The QPL compression is based on the deflate compression algorithm
>> > and use Intel In-Memory Analytics Accelerator(IAA) hardware for
>> > compression and decompression acceleration.
>> >
>> > Please refer to the following for more information about QPL
>> >
>> https://intel.github.io/qpl/documentation/introduction_docs/introduction.h
>> tml
>> >
>> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
>> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
>> > ---
>> >  meson.build                   | 18 ++++++++++++++++++
>> >  meson_options.txt             |  2 ++
>> >  scripts/meson-buildoptions.sh |  3 +++
>> >  3 files changed, 23 insertions(+)
>> >
>> > diff --git a/meson.build b/meson.build
>> > index c1dc83e4c0..2dea1e6834 100644
>> > --- a/meson.build
>> > +++ b/meson.build
>> > @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block
>> >                      required: get_option('zstd'),
>> >                      method: 'pkg-config')
>> >  endif
>> > +qpl = not_found
>> > +if not get_option('qpl').auto()
>> > +  libqpl = cc.find_library('qpl', required: false)
>> > +  if not libqpl.found()
>> > +    error('libqpl not found, please install it from ' +
>> > +
>> 'https://intel.github.io/qpl/documentation/get_started_docs/installation.h
>> tml')
>> > +  endif
>> > +  libaccel = cc.find_library('accel-config', required: false)
>> > +  if not libaccel.found()
>> > +    error('libaccel-config not found, please install it from ' +
>> > +    'https://github.com/intel/idxd-config')
>> 
>> accel-config seems to be packaged by many distros, I'm not sure we need
>> to reference the repository here.
>> 
>> https://repology.org/project/accel-config/versions
>
> Yes, accel-config has been added to many distributions, I will use pkgconfig to 
> detect the libaccel and the version(at least v4.0). 
>
> I have a question, I didn't find accel-config installation package from 
> https://repology.org/project/accel-config/versions. Does using this link also 
> require the user to build an accel-config package, and then install it?

That is just an aggregated list of distros and the version of the
package they provide in their repos. So I'm just pointing out to you
that there seems to be a packaged accel-config for most distros
already. Which means we just want to say "install accel-config" and
users should be able to use their distro's package manager.

>
> It is easy to install accel-config using the installation package, but I didn't 
> find a repo that provides accel-config installation packages for most distributions.
>
> First check accel-config is available through pktconfig, and if it is not available,
> prompts users to install it from https://github.com/intel/idxd-config, is it OK?

There's no need, just check if its available and suggest the user to
install it. We already have the link in the docs.

>
>> > +  endif
>> > +  qpl = declare_dependency(dependencies: [libqpl, libaccel,
>> > +        cc.find_library('dl', required: get_option('qpl'))],
>> > +        link_args: ['-lstdc++'])
>> > +endif
>> >  virgl = not_found
>> >
>> >  have_vhost_user_gpu = have_tools and host_os == 'linux' and
>> pixman.found()
>> > @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM',
>> has_malloc_trim)
>> >  config_host_data.set('CONFIG_STATX', has_statx)
>> >  config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id)
>> >  config_host_data.set('CONFIG_ZSTD', zstd.found())
>> > +config_host_data.set('CONFIG_QPL', qpl.found())
>> >  config_host_data.set('CONFIG_FUSE', fuse.found())
>> >  config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found())
>> >  config_host_data.set('CONFIG_SPICE_PROTOCOL', spice_protocol.found())
>> > @@ -4438,6 +4455,7 @@ summary_info += {'snappy support':    snappy}
>> >  summary_info += {'bzip2 support':     libbzip2}
>> >  summary_info += {'lzfse support':     liblzfse}
>> >  summary_info += {'zstd support':      zstd}
>> > +summary_info += {'Query Processing Library support': qpl}
>> >  summary_info += {'NUMA host support': numa}
>> >  summary_info += {'capstone':          capstone}
>> >  summary_info += {'libpmem support':   libpmem}
>> > diff --git a/meson_options.txt b/meson_options.txt
>> > index 0a99a059ec..06cd675572 100644
>> > --- a/meson_options.txt
>> > +++ b/meson_options.txt
>> > @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value :
>> 'auto',
>> >         description: 'xkbcommon support')
>> >  option('zstd', type : 'feature', value : 'auto',
>> >         description: 'zstd compression support')
>> > +option('qpl', type : 'feature', value : 'auto',
>> > +       description: 'Query Processing Library support')
>> >  option('fuse', type: 'feature', value: 'auto',
>> >         description: 'FUSE block device export')
>> >  option('fuse_lseek', type : 'feature', value : 'auto',
>> > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-
>> buildoptions.sh
>> > index 680fa3f581..784f74fde9 100644
>> > --- a/scripts/meson-buildoptions.sh
>> > +++ b/scripts/meson-buildoptions.sh
>> > @@ -222,6 +222,7 @@ meson_options_help() {
>> >    printf "%s\n" '                  Xen PCI passthrough support'
>> >    printf "%s\n" '  xkbcommon       xkbcommon support'
>> >    printf "%s\n" '  zstd            zstd compression support'
>> > +  printf "%s\n" '  qpl             Query Processing Library support'
>> >  }
>> >  _meson_option_parse() {
>> >    case $1 in
>> > @@ -562,6 +563,8 @@ _meson_option_parse() {
>> >      --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;;
>> >      --enable-zstd) printf "%s" -Dzstd=enabled ;;
>> >      --disable-zstd) printf "%s" -Dzstd=disabled ;;
>> > +    --enable-qpl) printf "%s" -Dqpl=enabled ;;
>> > +    --disable-qpl) printf "%s" -Dqpl=disabled ;;
>> >      *) return 1 ;;
>> >    esac
>> >  }
RE: [PATCH v4 3/8] configure: add --enable-qpl build option
Posted by Liu, Yuan1 8 months, 3 weeks ago
> -----Original Message-----
> From: Fabiano Rosas <farosas@suse.de>
> Sent: Wednesday, March 6, 2024 7:56 PM
> To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com
> Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com;
> bryan.zhang@bytedance.com; Zou, Nanhai <nanhai.zou@intel.com>
> Subject: RE: [PATCH v4 3/8] configure: add --enable-qpl build option
> 
> "Liu, Yuan1" <yuan1.liu@intel.com> writes:
> 
> >> -----Original Message-----
> >> From: Fabiano Rosas <farosas@suse.de>
> >> Sent: Wednesday, March 6, 2024 4:32 AM
> >> To: Liu, Yuan1 <yuan1.liu@intel.com>; peterx@redhat.com
> >> Cc: qemu-devel@nongnu.org; hao.xiang@bytedance.com;
> >> bryan.zhang@bytedance.com; Liu, Yuan1 <yuan1.liu@intel.com>; Zou,
> Nanhai
> >> <nanhai.zou@intel.com>
> >> Subject: Re: [PATCH v4 3/8] configure: add --enable-qpl build option
> >>
> >> Yuan Liu <yuan1.liu@intel.com> writes:
> >>
> >> > add --enable-qpl and --disable-qpl options to enable and disable
> >> > the QPL compression method for multifd migration.
> >> >
> >> > the Query Processing Library (QPL) is an open-source library
> >> > that supports data compression and decompression features.
> >> >
> >> > The QPL compression is based on the deflate compression algorithm
> >> > and use Intel In-Memory Analytics Accelerator(IAA) hardware for
> >> > compression and decompression acceleration.
> >> >
> >> > Please refer to the following for more information about QPL
> >> >
> >>
> https://intel.github.io/qpl/documentation/introduction_docs/introduction.h
> >> tml
> >> >
> >> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
> >> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
> >> > ---
> >> >  meson.build                   | 18 ++++++++++++++++++
> >> >  meson_options.txt             |  2 ++
> >> >  scripts/meson-buildoptions.sh |  3 +++
> >> >  3 files changed, 23 insertions(+)
> >> >
> >> > diff --git a/meson.build b/meson.build
> >> > index c1dc83e4c0..2dea1e6834 100644
> >> > --- a/meson.build
> >> > +++ b/meson.build
> >> > @@ -1197,6 +1197,22 @@ if not get_option('zstd').auto() or have_block
> >> >                      required: get_option('zstd'),
> >> >                      method: 'pkg-config')
> >> >  endif
> >> > +qpl = not_found
> >> > +if not get_option('qpl').auto()
> >> > +  libqpl = cc.find_library('qpl', required: false)
> >> > +  if not libqpl.found()
> >> > +    error('libqpl not found, please install it from ' +
> >> > +
> >>
> 'https://intel.github.io/qpl/documentation/get_started_docs/installation.h
> >> tml')
> >> > +  endif
> >> > +  libaccel = cc.find_library('accel-config', required: false)
> >> > +  if not libaccel.found()
> >> > +    error('libaccel-config not found, please install it from ' +
> >> > +    'https://github.com/intel/idxd-config')
> >>
> >> accel-config seems to be packaged by many distros, I'm not sure we need
> >> to reference the repository here.
> >>
> >> https://repology.org/project/accel-config/versions
> >
> > Yes, accel-config has been added to many distributions, I will use
> pkgconfig to
> > detect the libaccel and the version(at least v4.0).
> >
> > I have a question, I didn't find accel-config installation package from
> > https://repology.org/project/accel-config/versions. Does using this link
> also
> > require the user to build an accel-config package, and then install it?
> 
> That is just an aggregated list of distros and the version of the
> package they provide in their repos. So I'm just pointing out to you
> that there seems to be a packaged accel-config for most distros
> already. Which means we just want to say "install accel-config" and
> users should be able to use their distro's package manager.
> 
> >
> > It is easy to install accel-config using the installation package, but I
> didn't
> > find a repo that provides accel-config installation packages for most
> distributions.
> >
> > First check accel-config is available through pktconfig, and if it is
> not available,
> > prompts users to install it from https://github.com/intel/idxd-config,
> is it OK?
> 
> There's no need, just check if its available and suggest the user to
> install it. We already have the link in the docs.

Get it, thanks~

> >
> >> > +  endif
> >> > +  qpl = declare_dependency(dependencies: [libqpl, libaccel,
> >> > +        cc.find_library('dl', required: get_option('qpl'))],
> >> > +        link_args: ['-lstdc++'])
> >> > +endif
> >> >  virgl = not_found
> >> >
> >> >  have_vhost_user_gpu = have_tools and host_os == 'linux' and
> >> pixman.found()
> >> > @@ -2298,6 +2314,7 @@ config_host_data.set('CONFIG_MALLOC_TRIM',
> >> has_malloc_trim)
> >> >  config_host_data.set('CONFIG_STATX', has_statx)
> >> >  config_host_data.set('CONFIG_STATX_MNT_ID', has_statx_mnt_id)
> >> >  config_host_data.set('CONFIG_ZSTD', zstd.found())
> >> > +config_host_data.set('CONFIG_QPL', qpl.found())
> >> >  config_host_data.set('CONFIG_FUSE', fuse.found())
> >> >  config_host_data.set('CONFIG_FUSE_LSEEK', fuse_lseek.found())
> >> >  config_host_data.set('CONFIG_SPICE_PROTOCOL',
> spice_protocol.found())
> >> > @@ -4438,6 +4455,7 @@ summary_info += {'snappy support':    snappy}
> >> >  summary_info += {'bzip2 support':     libbzip2}
> >> >  summary_info += {'lzfse support':     liblzfse}
> >> >  summary_info += {'zstd support':      zstd}
> >> > +summary_info += {'Query Processing Library support': qpl}
> >> >  summary_info += {'NUMA host support': numa}
> >> >  summary_info += {'capstone':          capstone}
> >> >  summary_info += {'libpmem support':   libpmem}
> >> > diff --git a/meson_options.txt b/meson_options.txt
> >> > index 0a99a059ec..06cd675572 100644
> >> > --- a/meson_options.txt
> >> > +++ b/meson_options.txt
> >> > @@ -259,6 +259,8 @@ option('xkbcommon', type : 'feature', value :
> >> 'auto',
> >> >         description: 'xkbcommon support')
> >> >  option('zstd', type : 'feature', value : 'auto',
> >> >         description: 'zstd compression support')
> >> > +option('qpl', type : 'feature', value : 'auto',
> >> > +       description: 'Query Processing Library support')
> >> >  option('fuse', type: 'feature', value: 'auto',
> >> >         description: 'FUSE block device export')
> >> >  option('fuse_lseek', type : 'feature', value : 'auto',
> >> > diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-
> >> buildoptions.sh
> >> > index 680fa3f581..784f74fde9 100644
> >> > --- a/scripts/meson-buildoptions.sh
> >> > +++ b/scripts/meson-buildoptions.sh
> >> > @@ -222,6 +222,7 @@ meson_options_help() {
> >> >    printf "%s\n" '                  Xen PCI passthrough support'
> >> >    printf "%s\n" '  xkbcommon       xkbcommon support'
> >> >    printf "%s\n" '  zstd            zstd compression support'
> >> > +  printf "%s\n" '  qpl             Query Processing Library support'
> >> >  }
> >> >  _meson_option_parse() {
> >> >    case $1 in
> >> > @@ -562,6 +563,8 @@ _meson_option_parse() {
> >> >      --disable-xkbcommon) printf "%s" -Dxkbcommon=disabled ;;
> >> >      --enable-zstd) printf "%s" -Dzstd=enabled ;;
> >> >      --disable-zstd) printf "%s" -Dzstd=disabled ;;
> >> > +    --enable-qpl) printf "%s" -Dqpl=enabled ;;
> >> > +    --disable-qpl) printf "%s" -Dqpl=disabled ;;
> >> >      *) return 1 ;;
> >> >    esac
> >> >  }