migration/multifd: add uadk compression framework
Adds the skeleton to support uadk compression method. Complete functionality will be added in subsequent patches. Acked-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Fabiano Rosas <farosas@suse.de> Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> Reviewed-by: Zhangfei Gao <zhangfei.gao@linaro.org> Signed-off-by: Fabiano Rosas <farosas@suse.de>
This commit is contained in:
parent
cfc589a89b
commit
f3d8bb759d
@ -659,7 +659,7 @@ const PropertyInfo qdev_prop_fdc_drive_type = {
|
||||
const PropertyInfo qdev_prop_multifd_compression = {
|
||||
.name = "MultiFDCompression",
|
||||
.description = "multifd_compression values, "
|
||||
"none/zlib/zstd/qpl",
|
||||
"none/zlib/zstd/qpl/uadk",
|
||||
.enum_table = &MultiFDCompression_lookup,
|
||||
.get = qdev_propinfo_get_enum,
|
||||
.set = qdev_propinfo_set_enum,
|
||||
|
@ -40,6 +40,7 @@ endif
|
||||
system_ss.add(when: rdma, if_true: files('rdma.c'))
|
||||
system_ss.add(when: zstd, if_true: files('multifd-zstd.c'))
|
||||
system_ss.add(when: qpl, if_true: files('multifd-qpl.c'))
|
||||
system_ss.add(when: uadk, if_true: files('multifd-uadk.c'))
|
||||
|
||||
specific_ss.add(when: 'CONFIG_SYSTEM_ONLY',
|
||||
if_true: files('ram.c',
|
||||
|
20
migration/multifd-uadk.c
Normal file
20
migration/multifd-uadk.c
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Multifd UADK compression accelerator implementation
|
||||
*
|
||||
* Copyright (c) 2024 Huawei Technologies R & D (UK) Ltd
|
||||
*
|
||||
* Authors:
|
||||
* Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||
* See the COPYING file in the top-level directory.
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/module.h"
|
||||
|
||||
static void multifd_uadk_register(void)
|
||||
{
|
||||
/* noop for now */
|
||||
}
|
||||
migration_init(multifd_uadk_register);
|
@ -34,13 +34,14 @@ MultiFDRecvData *multifd_get_recv_data(void);
|
||||
/* Multifd Compression flags */
|
||||
#define MULTIFD_FLAG_SYNC (1 << 0)
|
||||
|
||||
/* We reserve 3 bits for compression methods */
|
||||
#define MULTIFD_FLAG_COMPRESSION_MASK (7 << 1)
|
||||
/* We reserve 4 bits for compression methods */
|
||||
#define MULTIFD_FLAG_COMPRESSION_MASK (0xf << 1)
|
||||
/* we need to be compatible. Before compression value was 0 */
|
||||
#define MULTIFD_FLAG_NOCOMP (0 << 1)
|
||||
#define MULTIFD_FLAG_ZLIB (1 << 1)
|
||||
#define MULTIFD_FLAG_ZSTD (2 << 1)
|
||||
#define MULTIFD_FLAG_QPL (4 << 1)
|
||||
#define MULTIFD_FLAG_UADK (8 << 1)
|
||||
|
||||
/* This value needs to be a multiple of qemu_target_page_size() */
|
||||
#define MULTIFD_PACKET_SIZE (512 * 1024)
|
||||
|
@ -559,12 +559,15 @@
|
||||
# In-Memory Analytics Accelerator(IAA) accelerated compression
|
||||
# and decompression. (Since 9.1)
|
||||
#
|
||||
# @uadk: use UADK library compression method. (Since 9.1)
|
||||
#
|
||||
# Since: 5.0
|
||||
##
|
||||
{ 'enum': 'MultiFDCompression',
|
||||
'data': [ 'none', 'zlib',
|
||||
{ 'name': 'zstd', 'if': 'CONFIG_ZSTD' },
|
||||
{ 'name': 'qpl', 'if': 'CONFIG_QPL' } ] }
|
||||
{ 'name': 'qpl', 'if': 'CONFIG_QPL' },
|
||||
{ 'name': 'uadk', 'if': 'CONFIG_UADK' } ] }
|
||||
|
||||
##
|
||||
# @MigMode:
|
||||
|
Loading…
Reference in New Issue
Block a user