the Query Processing Library (QPL) is an open-source library that
supports data compression and decompression features.
add --enable-qpl and --disable-qpl options to enable and disable
the QPL compression accelerator. The QPL compression accelerator
can accelerate the Zlib compression algorithm during the live migration.
Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
---
meson.build | 7 +++++++
meson_options.txt | 2 ++
scripts/meson-buildoptions.sh | 3 +++
3 files changed, 12 insertions(+)
diff --git a/meson.build b/meson.build
index 259dc5f308..b4ba30b4fa 100644
--- a/meson.build
+++ b/meson.build
@@ -1032,6 +1032,11 @@ 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()
+ qpl = dependency('libqpl', required: get_option('qpl'),
+ method: 'pkg-config')
+endif
virgl = not_found
have_vhost_user_gpu = have_tools and targetos == 'linux' and pixman.found()
@@ -2165,6 +2170,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())
@@ -4325,6 +4331,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 3c7398f3c6..71cd533985 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -255,6 +255,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 7ca4b77eae..0909d1d517 100644
--- a/scripts/meson-buildoptions.sh
+++ b/scripts/meson-buildoptions.sh
@@ -220,6 +220,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
@@ -556,6 +557,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
Yuan Liu <yuan1.liu@intel.com> writes:
> the Query Processing Library (QPL) is an open-source library that
> supports data compression and decompression features.
>
> add --enable-qpl and --disable-qpl options to enable and disable
> the QPL compression accelerator. The QPL compression accelerator
> can accelerate the Zlib compression algorithm during the live migration.
>
> Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
> Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
> ---
> meson.build | 7 +++++++
> meson_options.txt | 2 ++
> scripts/meson-buildoptions.sh | 3 +++
> 3 files changed, 12 insertions(+)
>
> diff --git a/meson.build b/meson.build
> index 259dc5f308..b4ba30b4fa 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1032,6 +1032,11 @@ 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()
> + qpl = dependency('libqpl', required: get_option('qpl'),
> + method: 'pkg-config')
> +endif
Hm.. I'm not having success with pkg-config:
../meson.build:1043:10: ERROR: Dependency "libqpl" not found, tried
pkgconfig
It seems it doesn't find the static library. I had to use this instead:
qpl = declare_dependency(dependencies: cc.find_library('qpl',
required: get_option('qpl')))
What am I missing here?
> virgl = not_found
>
> have_vhost_user_gpu = have_tools and targetos == 'linux' and pixman.found()
> @@ -2165,6 +2170,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())
> @@ -4325,6 +4331,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 3c7398f3c6..71cd533985 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -255,6 +255,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 7ca4b77eae..0909d1d517 100644
> --- a/scripts/meson-buildoptions.sh
> +++ b/scripts/meson-buildoptions.sh
> @@ -220,6 +220,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
> @@ -556,6 +557,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
> -----Original Message-----
> From: Fabiano Rosas <farosas@suse.de>
> Sent: Saturday, December 2, 2023 1:45 AM
> To: Liu, Yuan1 <yuan1.liu@intel.com>; quintela@redhat.com;
> peterx@redhat.com; leobras@redhat.com
> Cc: qemu-devel@nongnu.org; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, Nanhai
> <nanhai.zou@intel.com>
> Subject: Re: [PATCH v2 3/4] configure: add qpl option
>
> Yuan Liu <yuan1.liu@intel.com> writes:
>
> > the Query Processing Library (QPL) is an open-source library that
> > supports data compression and decompression features.
> >
> > add --enable-qpl and --disable-qpl options to enable and disable the
> > QPL compression accelerator. The QPL compression accelerator can
> > accelerate the Zlib compression algorithm during the live migration.
> >
> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
> > ---
> > meson.build | 7 +++++++
> > meson_options.txt | 2 ++
> > scripts/meson-buildoptions.sh | 3 +++
> > 3 files changed, 12 insertions(+)
> >
> > diff --git a/meson.build b/meson.build index 259dc5f308..b4ba30b4fa
> > 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -1032,6 +1032,11 @@ 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()
> > + qpl = dependency('libqpl', required: get_option('qpl'),
> > + method: 'pkg-config') endif
>
> Hm.. I'm not having success with pkg-config:
>
> ../meson.build:1043:10: ERROR: Dependency "libqpl" not found, tried
> pkgconfig
>
> It seems it doesn't find the static library. I had to use this instead:
>
> qpl = declare_dependency(dependencies: cc.find_library('qpl',
> required: get_option('qpl')))
>
> What am I missing here?
Sorry about this, the QPL repo(https://github.com/intel/qpl) does not yet support libqpl pkg-config file, we are in the process of adding this functionality and we hope to resolve libqpl's dependencies through pkg-config file.
I will explicitly address this issue and provide relevant documentation in the next version.
For the pkg-config test,
1. create /usr/lib64/pkgconfig/libqpl.pc
2. add below lines
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: libqpl
Description: Intel Query Processing Library
Version: 1.3.0
Libs: -L${libdir} -lqpl -lpthread -laccel-config -ldl -lstdc++
Cflags: -I${includedir}
3. Install the header files to /usr/local/include/qpl and static library to /usr/local/lib64/libqpl.a
> > virgl = not_found
> >
> > have_vhost_user_gpu = have_tools and targetos == 'linux' and
> > pixman.found() @@ -2165,6 +2170,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())
> > @@ -4325,6 +4331,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
> > 3c7398f3c6..71cd533985 100644
> > --- a/meson_options.txt
> > +++ b/meson_options.txt
> > @@ -255,6 +255,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
> > 7ca4b77eae..0909d1d517 100644
> > --- a/scripts/meson-buildoptions.sh
> > +++ b/scripts/meson-buildoptions.sh
> > @@ -220,6 +220,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
> > @@ -556,6 +557,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
"Liu, Yuan1" <yuan1.liu@intel.com> writes:
>> -----Original Message-----
>> From: Fabiano Rosas <farosas@suse.de>
>> Sent: Saturday, December 2, 2023 1:45 AM
>> To: Liu, Yuan1 <yuan1.liu@intel.com>; quintela@redhat.com;
>> peterx@redhat.com; leobras@redhat.com
>> Cc: qemu-devel@nongnu.org; Liu, Yuan1 <yuan1.liu@intel.com>; Zou, Nanhai
>> <nanhai.zou@intel.com>
>> Subject: Re: [PATCH v2 3/4] configure: add qpl option
>>
>> Yuan Liu <yuan1.liu@intel.com> writes:
>>
>> > the Query Processing Library (QPL) is an open-source library that
>> > supports data compression and decompression features.
>> >
>> > add --enable-qpl and --disable-qpl options to enable and disable the
>> > QPL compression accelerator. The QPL compression accelerator can
>> > accelerate the Zlib compression algorithm during the live migration.
>> >
>> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
>> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
>> > ---
>> > meson.build | 7 +++++++
>> > meson_options.txt | 2 ++
>> > scripts/meson-buildoptions.sh | 3 +++
>> > 3 files changed, 12 insertions(+)
>> >
>> > diff --git a/meson.build b/meson.build index 259dc5f308..b4ba30b4fa
>> > 100644
>> > --- a/meson.build
>> > +++ b/meson.build
>> > @@ -1032,6 +1032,11 @@ 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()
>> > + qpl = dependency('libqpl', required: get_option('qpl'),
>> > + method: 'pkg-config') endif
>>
>> Hm.. I'm not having success with pkg-config:
>>
>> ../meson.build:1043:10: ERROR: Dependency "libqpl" not found, tried
>> pkgconfig
>>
>> It seems it doesn't find the static library. I had to use this instead:
>>
>> qpl = declare_dependency(dependencies: cc.find_library('qpl',
>> required: get_option('qpl')))
>>
>> What am I missing here?
> Sorry about this, the QPL repo(https://github.com/intel/qpl) does not yet support libqpl pkg-config file, we are in the process of adding this functionality and we hope to resolve libqpl's dependencies through pkg-config file.
> I will explicitly address this issue and provide relevant documentation in the next version.
Ok, just remember to test with a clean setup next time.
>
> For the pkg-config test,
> 1. create /usr/lib64/pkgconfig/libqpl.pc
> 2. add below lines
> prefix=/usr/local
> exec_prefix=${prefix}
> libdir=${exec_prefix}/lib
> includedir=${prefix}/include
>
> Name: libqpl
> Description: Intel Query Processing Library
> Version: 1.3.0
> Libs: -L${libdir} -lqpl -lpthread -laccel-config -ldl -lstdc++
We could probably do this with meson directly instead of requiring a
pkg-config preliminary setup. My meson-fu is not the best, but something
like:
qpl = declare_dependency(dependencies: [
cc.find_library('qpl', required: get_option('qpl')),
cc.find_library('accel-config', required: get_option('qpl')),
...
], link_args: ['-lstdc++', ...])
> Cflags: -I${includedir}
>
> 3. Install the header files to /usr/local/include/qpl and static library to /usr/local/lib64/libqpl.a
For this part is ok to just point to the official docs.
> -----Original Message-----
> From: Fabiano Rosas <farosas@suse.de>
> Sent: Monday, December 4, 2023 8:30 PM
> To: Liu, Yuan1 <yuan1.liu@intel.com>; quintela@redhat.com;
> peterx@redhat.com; leobras@redhat.com
> Cc: qemu-devel@nongnu.org; Zou, Nanhai <nanhai.zou@intel.com>
> Subject: RE: [PATCH v2 3/4] configure: add qpl option
>
> "Liu, Yuan1" <yuan1.liu@intel.com> writes:
>
> >> -----Original Message-----
> >> From: Fabiano Rosas <farosas@suse.de>
> >> Sent: Saturday, December 2, 2023 1:45 AM
> >> To: Liu, Yuan1 <yuan1.liu@intel.com>; quintela@redhat.com;
> >> peterx@redhat.com; leobras@redhat.com
> >> Cc: qemu-devel@nongnu.org; Liu, Yuan1 <yuan1.liu@intel.com>; Zou,
> >> Nanhai <nanhai.zou@intel.com>
> >> Subject: Re: [PATCH v2 3/4] configure: add qpl option
> >>
> >> Yuan Liu <yuan1.liu@intel.com> writes:
> >>
> >> > the Query Processing Library (QPL) is an open-source library that
> >> > supports data compression and decompression features.
> >> >
> >> > add --enable-qpl and --disable-qpl options to enable and disable
> >> > the QPL compression accelerator. The QPL compression accelerator
> >> > can accelerate the Zlib compression algorithm during the live
> migration.
> >> >
> >> > Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
> >> > Reviewed-by: Nanhai Zou <nanhai.zou@intel.com>
> >> > ---
> >> > meson.build | 7 +++++++
> >> > meson_options.txt | 2 ++
> >> > scripts/meson-buildoptions.sh | 3 +++
> >> > 3 files changed, 12 insertions(+)
> >> >
> >> > diff --git a/meson.build b/meson.build index 259dc5f308..b4ba30b4fa
> >> > 100644
> >> > --- a/meson.build
> >> > +++ b/meson.build
> >> > @@ -1032,6 +1032,11 @@ 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()
> >> > + qpl = dependency('libqpl', required: get_option('qpl'),
> >> > + method: 'pkg-config') endif
> >>
> >> Hm.. I'm not having success with pkg-config:
> >>
> >> ../meson.build:1043:10: ERROR: Dependency "libqpl" not found, tried
> >> pkgconfig
> >>
> >> It seems it doesn't find the static library. I had to use this instead:
> >>
> >> qpl = declare_dependency(dependencies: cc.find_library('qpl',
> >> required: get_option('qpl')))
> >>
> >> What am I missing here?
> > Sorry about this, the QPL repo(https://github.com/intel/qpl) does not
> yet support libqpl pkg-config file, we are in the process of adding this
> functionality and we hope to resolve libqpl's dependencies through pkg-
> config file.
> > I will explicitly address this issue and provide relevant documentation
> in the next version.
>
> Ok, just remember to test with a clean setup next time.
Sure
> > For the pkg-config test,
> > 1. create /usr/lib64/pkgconfig/libqpl.pc 2. add below lines
> > prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib
> > includedir=${prefix}/include
> >
> > Name: libqpl
> > Description: Intel Query Processing Library
> > Version: 1.3.0
> > Libs: -L${libdir} -lqpl -lpthread -laccel-config -ldl -lstdc++
>
> We could probably do this with meson directly instead of requiring a pkg-
> config preliminary setup. My meson-fu is not the best, but something
> like:
>
> qpl = declare_dependency(dependencies: [
> cc.find_library('qpl', required: get_option('qpl')),
> cc.find_library('accel-config', required: get_option('qpl')),
> ...
> ], link_args: ['-lstdc++', ...])
I will fix this, thank you for the sample code
> > Cflags: -I${includedir}
> >
> > 3. Install the header files to /usr/local/include/qpl and static
> > library to /usr/local/lib64/libqpl.a
>
> For this part is ok to just point to the official docs.
Yes, good idea
© 2016 - 2025 Red Hat, Inc.