【QEMU系统分析之实例篇(十九)】

系列文章目录

第十九章 QEMU系统仿真的机器创建分析实例


文章目录

  • 系列文章目录
    • 第十九章 QEMU系统仿真的机器创建分析实例
  • 前言
  • 一、QEMU是什么?
  • 二、QEMU系统仿真的机器创建分析实例
    • 1.系统仿真的命令行参数
    • 2.迁移对象初始化
      • migration_object_init()
        • migration_object_check()
        • blk_mig_init()
        • ram_mig_init()
        • dirty_bitmap_mig_init()
    • 3.调试输出
  • 总结


前言

本文以 QEMU 8.2.2 为例,分析其作为系统仿真工具的工作过程,并为读者展示各种 QEMU 系统仿真的启动配置实例。
本文读者需要具备一定的 QEMU 系统仿真使用经验,并对 C 语言编程有一定了解。


一、QEMU是什么?

QEMU 是一个通用且开源的机器模拟器和虚拟机。
其官方主页是:https://www.qemu.org/


二、QEMU系统仿真的机器创建分析实例

1.系统仿真的命令行参数

QEMU 作为系统仿真工具,其入口代码在 system/main.c 文件中,初始化函数 qemu_init() 的实现在 system/vl.c 文件中。
前文完成创建目标机器的过程分析,本文将继续后续运行过程的分析,读者需要对 QEMU 系统启动过程的程序代码有所了解,相关内容可以参考《QEMU系统分析之启动篇》系列文章。

..\qemu\8.2.2-qkd\qemu-system-x86_64.exe -cpu "Penryn" -M  "q35,accel=whpx,smm=off" -m "6G" -display "sdl" -audio "sdl,model=hda" -vga "std" -L "data"

2.迁移对象初始化

这部分代码在 system/vl.c 文件中,实现如下:

int qemu_init(int argc, char **argv)
{
...
    /*
     * Note: creates a QOM object, must run only after global and
     * compat properties have been set up.
     */
    migration_object_init();
...
}

前文分析了创建后期后端驱动的过程,本文继续完成迁移对象的初始化过程。


migration_object_init()

函数 migration_object_init() 代码如下:

void migration_object_init(void)
{
    /* This can only be called once. */
    assert(!current_migration);
    current_migration = MIGRATION_OBJ(object_new(TYPE_MIGRATION));

    /*
     * Init the migrate incoming object as well no matter whether
     * we'll use it or not.
     */
    assert(!current_incoming);
    current_incoming = g_new0(MigrationIncomingState, 1);
    current_incoming->state = MIGRATION_STATUS_NONE;
    current_incoming->postcopy_remote_fds =
        g_array_new(FALSE, TRUE, sizeof(struct PostCopyFD));
    qemu_mutex_init(&current_incoming->rp_mutex);
    qemu_mutex_init(&current_incoming->postcopy_prio_thread_mutex);
    qemu_event_init(&current_incoming->main_thread_load_event, false);
    qemu_sem_init(&current_incoming->postcopy_pause_sem_dst, 0);
    qemu_sem_init(&current_incoming->postcopy_pause_sem_fault, 0);
    qemu_sem_init(&current_incoming->postcopy_pause_sem_fast_load, 0);
    qemu_sem_init(&current_incoming->postcopy_qemufile_dst_done, 0);

    qemu_mutex_init(&current_incoming->page_request_mutex);
    qemu_cond_init(&current_incoming->page_request_cond);
    current_incoming->page_requested = g_tree_new(page_request_addr_cmp);

    migration_object_check(current_migration, &error_fatal);

    blk_mig_init();
    ram_mig_init();
    dirty_bitmap_mig_init();
}

首先,调用函数 migrate_params_check(),代码如下:


migration_object_check()

代码如下:

/*
 * Check whether the parameters are valid. Error will be put into errp
 * (if provided). Return true if valid, otherwise false.
 */
bool migrate_params_check(MigrationParameters *params, Error **errp)
{
    if (params->has_compress_level &&
        (params->compress_level > 9)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "compress_level",
                   "a value between 0 and 9");
        return false;
    }

    if (params->has_compress_threads && (params->compress_threads < 1)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "compress_threads",
                   "a value between 1 and 255");
        return false;
    }

    if (params->has_decompress_threads && (params->decompress_threads < 1)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "decompress_threads",
                   "a value between 1 and 255");
        return false;
    }

    if (params->has_throttle_trigger_threshold &&
        (params->throttle_trigger_threshold < 1 ||
         params->throttle_trigger_threshold > 100)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "throttle_trigger_threshold",
                   "an integer in the range of 1 to 100");
        return false;
    }

    if (params->has_cpu_throttle_initial &&
        (params->cpu_throttle_initial < 1 ||
         params->cpu_throttle_initial > 99)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "cpu_throttle_initial",
                   "an integer in the range of 1 to 99");
        return false;
    }

    if (params->has_cpu_throttle_increment &&
        (params->cpu_throttle_increment < 1 ||
         params->cpu_throttle_increment > 99)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "cpu_throttle_increment",
                   "an integer in the range of 1 to 99");
        return false;
    }

    if (params->has_max_bandwidth && (params->max_bandwidth > SIZE_MAX)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "max_bandwidth",
                   "an integer in the range of 0 to "stringify(SIZE_MAX)
                   " bytes/second");
        return false;
    }

    if (params->has_avail_switchover_bandwidth &&
        (params->avail_switchover_bandwidth > SIZE_MAX)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "avail_switchover_bandwidth",
                   "an integer in the range of 0 to "stringify(SIZE_MAX)
                   " bytes/second");
        return false;
    }

    if (params->has_downtime_limit &&
        (params->downtime_limit > MAX_MIGRATE_DOWNTIME)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "downtime_limit",
                   "an integer in the range of 0 to "
                    stringify(MAX_MIGRATE_DOWNTIME)" ms");
        return false;
    }

    /* x_checkpoint_delay is now always positive */

    if (params->has_multifd_channels && (params->multifd_channels < 1)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "multifd_channels",
                   "a value between 1 and 255");
        return false;
    }

    if (params->has_multifd_zlib_level &&
        (params->multifd_zlib_level > 9)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "multifd_zlib_level",
                   "a value between 0 and 9");
        return false;
    }

    if (params->has_multifd_zstd_level &&
        (params->multifd_zstd_level > 20)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "multifd_zstd_level",
                   "a value between 0 and 20");
        return false;
    }

    if (params->has_xbzrle_cache_size &&
        (params->xbzrle_cache_size < qemu_target_page_size() ||
         !is_power_of_2(params->xbzrle_cache_size))) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "xbzrle_cache_size",
                   "a power of two no less than the target page size");
        return false;
    }

    if (params->has_max_cpu_throttle &&
        (params->max_cpu_throttle < params->cpu_throttle_initial ||
         params->max_cpu_throttle > 99)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "max_cpu_throttle",
                   "an integer in the range of cpu_throttle_initial to 99");
        return false;
    }

    if (params->has_announce_initial &&
        params->announce_initial > 100000) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "announce_initial",
                   "a value between 0 and 100000");
        return false;
    }
    if (params->has_announce_max &&
        params->announce_max > 100000) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "announce_max",
                   "a value between 0 and 100000");
       return false;
    }
    if (params->has_announce_rounds &&
        params->announce_rounds > 1000) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "announce_rounds",
                   "a value between 0 and 1000");
       return false;
    }
    if (params->has_announce_step &&
        (params->announce_step < 1 ||
        params->announce_step > 10000)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "announce_step",
                   "a value between 0 and 10000");
       return false;
    }

    if (params->has_block_bitmap_mapping &&
        !check_dirty_bitmap_mig_alias_map(params->block_bitmap_mapping, errp)) {
        error_prepend(errp, "Invalid mapping given for block-bitmap-mapping: ");
        return false;
    }

#ifdef CONFIG_LINUX
    if (migrate_zero_copy_send() &&
        ((params->has_multifd_compression && params->multifd_compression) ||
         (params->tls_creds && *params->tls_creds))) {
        error_setg(errp,
                   "Zero copy only available for non-compressed non-TLS multifd migration");
        return false;
    }
#endif

    if (params->has_x_vcpu_dirty_limit_period &&
        (params->x_vcpu_dirty_limit_period < 1 ||
         params->x_vcpu_dirty_limit_period > 1000)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "x-vcpu-dirty-limit-period",
                   "a value between 1 and 1000");
        return false;
    }

    if (params->has_vcpu_dirty_limit &&
        (params->vcpu_dirty_limit < 1)) {
        error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
                   "vcpu_dirty_limit",
                   "is invalid, it must greater then 1 MB/s");
        return false;
    }

    return true;
}

然后,调用函数 blk_mig_init() 完成块设备的迁移初始化,代码如下:


blk_mig_init()

代码如下:

void blk_mig_init(void)
{
    QSIMPLEQ_INIT(&block_mig_state.bmds_list);
    QSIMPLEQ_INIT(&block_mig_state.blk_list);
    qemu_mutex_init(&block_mig_state.lock);

    register_savevm_live("block", 0, 1, &savevm_block_handlers,
                         &block_mig_state);
}

跟踪进入函数 register_savevm_live() ,代码如下:

/* TODO: Individual devices generally have very little idea about the rest
   of the system, so instance_id should be removed/replaced.
   Meanwhile pass -1 as instance_id if you do not already have a clearly
   distinguishing id for all instances of your device class. */
int register_savevm_live(const char *idstr,
                         uint32_t instance_id,
                         int version_id,
                         const SaveVMHandlers *ops,
                         void *opaque)
{
    SaveStateEntry *se;

    se = g_new0(SaveStateEntry, 1);
    se->version_id = version_id;
    se->section_id = savevm_state.global_section_id++;
    se->ops = ops;
    se->opaque = opaque;
    se->vmsd = NULL;
    /* if this is a live_savem then set is_ram */
    if (ops->save_setup != NULL) {
        se->is_ram = 1;
    }

    pstrcat(se->idstr, sizeof(se->idstr), idstr);

    if (instance_id == VMSTATE_INSTANCE_ID_ANY) {
        se->instance_id = calculate_new_instance_id(se->idstr);
    } else {
        se->instance_id = instance_id;
    }
    assert(!se->compat || se->instance_id == 0);
    savevm_state_handler_insert(se);
    return 0;
}

ram_mig_init()

接着对内存迁移初始化,代码如下:

void ram_mig_init(void)
{
    qemu_mutex_init(&XBZRLE.lock);
    register_savevm_live("ram", 0, 4, &savevm_ram_handlers, &ram_state);
    ram_block_notifier_add(&ram_mig_ram_notifier);
}

dirty_bitmap_mig_init()

最后,对脏位图迁移初始化,代码如下:

void dirty_bitmap_mig_init(void)
{
    QSIMPLEQ_INIT(&dbm_state.save.dbms_list);
    qemu_mutex_init(&dbm_state.load.lock);

    register_savevm_live("dirty-bitmap", 0, 1,
                         &savevm_dirty_bitmap_handlers,
                         &dbm_state);
}

3.调试输出

首先,添加跟踪调试信息,修改后的代码如下:

int qemu_init(int argc, char **argv)
{
...
    /*
     * Note: creates a QOM object, must run only after global and
     * compat properties have been set up.
     */
    huedbg_flag = 1;
    HUEDBG("\n");
    migration_object_init();
    HUEDBG("\n");
    huedbg_flag = 0;
...
}


void migration_object_init(void)
{
    HUEDBG("enter\n");
...
    HUEDBG("\n");
    migration_object_check(current_migration, &error_fatal);
    if (current_migration) {
        huedbg_dump_MigrationState(current_migration, 9);
    }
    HUEDBG("\n");
    blk_mig_init();
    HUEDBG("\n");
    ram_mig_init();
    HUEDBG("\n");
    dirty_bitmap_mig_init();
    HUEDBG("exit\n");
}

void blk_mig_init(void)
{
    QSIMPLEQ_INIT(&block_mig_state.bmds_list);
    QSIMPLEQ_INIT(&block_mig_state.blk_list);
    qemu_mutex_init(&block_mig_state.lock);

    register_savevm_live("block", 0, 1, &savevm_block_handlers,
                         &block_mig_state);
    if (block_mig_state) {
        huedbg_dump_BlkMigState(block_mig_state, 9);
    }
}


void ram_mig_init(void)
{
    qemu_mutex_init(&XBZRLE.lock);
    register_savevm_live("ram", 0, 4, &savevm_ram_handlers, &ram_state);
    ram_block_notifier_add(&ram_mig_ram_notifier);
    if (ram_state) {
        huedbg_dump_RAMState(ram_state, 9);
    }
}


void dirty_bitmap_mig_init(void)
{
    QSIMPLEQ_INIT(&dbm_state.save.dbms_list);
    qemu_mutex_init(&dbm_state.load.lock);

    register_savevm_live("dirty-bitmap", 0, 1,
                         &savevm_dirty_bitmap_handlers,
                         &dbm_state);
    huedbg_dump_DBMState(&dbm_state, 9);
}

运行后,输出信息如下:

[15556]../system/vl.c/qemu_init(3860):
[15556]../migration/migration.c/migration_object_init(178):enter
[15556]../qom/object.c/type_table_lookup(103):lookup type(migration) in hash table
[15556]../qom/object.c/object_new_with_type(789):try type_initialize(migration)
[15556]../qom/object.c/object_new_with_type(799):obj(migration) alloc
[15556]../qom/object.c/object_new_with_type(808):try object_initialize_with_type(migration)
[15556]../qom/object.c/object_initialize_with_type(568):obj with type(migration) enter
[15556]../qom/object.c/object_initialize_with_type(576):mapping obj(migration).class with type(migration).class
[15556]../qom/object.c/object_initialize_with_type(579):try object_class_property_init_all(migration)
[15556]../qom/object.c/object_class_property_init_all(552):obj(migration) enter
[15556]../qom/object.c/object_class_property_iter_init(1440):objclass{migration} enter
[15556]../qom/object.c/object_class_get_parent(1130):enter
[15556]../qom/object.c/type_get_parent(194):parent_type(device)
[15556]../qom/object.c/object_class_get_parent(1138):objclass(migration) has parent(device)
[15556]../qom/object.c/object_class_get_parent(1141):objclass(migration) return
[15556]../qom/object.c/object_class_property_iter_init(1443):objclass{migration} return
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[max-cpu-throttle] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(max-cpu-throttle) init()
[15556]../qom/object.c/type_table_lookup(103):lookup type(device) in hash table
[15556]../qom/object.c/type_get_parent(194):parent_type(object)
[15556]../qom/object.c/type_get_parent(196):no parent_type
[15556]../qom/object.c/type_get_parent(194):parent_type(device)
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(max-cpu-throttle) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-zero-blocks] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-zero-blocks) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-zero-blocks) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-colo] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-colo) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-colo) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-switchover-ack] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-switchover-ack) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-switchover-ack) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[xbzrle-cache-size] type=[size] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(xbzrle-cache-size) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(xbzrle-cache-size) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[store-global-state] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(store-global-state) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(store-global-state) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[announce-max] type=[size] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(announce-max) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(announce-max) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-background-snapshot] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-background-snapshot) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-background-snapshot) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[max-postcopy-bandwidth] type=[size] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(max-postcopy-bandwidth) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(max-postcopy-bandwidth) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-downtime-limit] type=[uint64] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-downtime-limit) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-downtime-limit) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-cpu-throttle-tailslow] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-cpu-throttle-tailslow) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-cpu-throttle-tailslow) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-decompress-threads] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-decompress-threads) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-decompress-threads) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-rdma-pin-all] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-rdma-pin-all) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-rdma-pin-all) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[mode] type=[MigMode] desc=[mig_mode values, normal,cpr-reboot] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(mode) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(mode) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[announce-initial] type=[size] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(announce-initial) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(announce-initial) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-clear-bitmap-shift] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-clear-bitmap-shift) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-clear-bitmap-shift) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-throttle-trigger-threshold] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-throttle-trigger-threshold) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-throttle-trigger-threshold) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-cpu-throttle-increment] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-cpu-throttle-increment) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-cpu-throttle-increment) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-checkpoint-delay] type=[uint32] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-checkpoint-delay) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-checkpoint-delay) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[decompress-error-check] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(decompress-error-check) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(decompress-error-check) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-preempt-pre-7-2] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-preempt-pre-7-2) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-preempt-pre-7-2) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[tls-authz] type=[str] desc=[(null)] init=[0000000000000000]
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[multifd-zstd-level] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(multifd-zstd-level) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(multifd-zstd-level) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-xbzrle] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-xbzrle) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-xbzrle) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-events] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-events) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-events) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-vcpu-dirty-limit-period] type=[uint64] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-vcpu-dirty-limit-period) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-vcpu-dirty-limit-period) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[multifd-flush-after-each-section] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(multifd-flush-after-each-section) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(multifd-flush-after-each-section) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[multifd-zlib-level] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(multifd-zlib-level) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(multifd-zlib-level) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-cpu-throttle-initial] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-cpu-throttle-initial) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-cpu-throttle-initial) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[vcpu-dirty-limit] type=[uint64] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(vcpu-dirty-limit) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(vcpu-dirty-limit) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[tls-creds] type=[str] desc=[(null)] init=[0000000000000000]
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[multifd-compression] type=[MultiFDCompression] desc=[multifd_compression values, none/zlib/zstd] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(multifd-compression) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(multifd-compression) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-compress-wait-thread] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-compress-wait-thread) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-compress-wait-thread) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[announce-rounds] type=[size] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(announce-rounds) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(announce-rounds) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-compress-level] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-compress-level) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-compress-level) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-multifd] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-multifd) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-multifd) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[send-configuration] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(send-configuration) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(send-configuration) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[multifd-channels] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(multifd-channels) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(multifd-channels) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[send-section-footer] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(send-section-footer) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(send-section-footer) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-max-bandwidth] type=[size] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-max-bandwidth) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-max-bandwidth) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[tls-hostname] type=[str] desc=[(null)] init=[0000000000000000]
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-dirty-limit] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-dirty-limit) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-dirty-limit) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[announce-step] type=[size] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(announce-step) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(announce-step) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-compress-threads] type=[uint8] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-compress-threads) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-compress-threads) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[avail-switchover-bandwidth] type=[size] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(avail-switchover-bandwidth) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(avail-switchover-bandwidth) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-auto-converge] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-auto-converge) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-auto-converge) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-postcopy-preempt] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-postcopy-preempt) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-postcopy-preempt) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-postcopy-ram] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-postcopy-ram) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-postcopy-ram) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-release-ram] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-release-ram) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-release-ram) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-compress] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-compress) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-compress) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-return-path] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-return-path) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-return-path) init()
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[x-block] type=[bool] desc=[(null)] init=[00007ff767f1d580]
[15556]../qom/object.c/object_class_property_init_all(558):before obj(migration).prop(x-block) init()
[15556]../qom/object.c/object_class_property_init_all(560):after obj(migration).prop(x-block) init()
[15556]../qom/object.c/object_class_get_parent(1130):enter
[15556]../qom/object.c/type_get_parent(194):parent_type(object)
[15556]../qom/object.c/object_class_get_parent(1138):objclass(device) has parent(object)
[15556]../qom/object.c/object_class_get_parent(1141):objclass(device) return
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[hotpluggable] type=[bool] desc=[(null)] init=[0000000000000000]
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[hotplugged] type=[bool] desc=[(null)] init=[0000000000000000]
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[realized] type=[bool] desc=[(null)] init=[0000000000000000]
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[parent_bus] type=[link<bus>] desc=[(null)] init=[0000000000000000]
[15556]../qom/object.c/object_class_get_parent(1130):enter
[15556]../qom/object.c/type_get_parent(196):no parent_type
[15556]../qom/object.c/object_class_get_parent(1134):objclass(object) has no parent return
[15556]../qom/object.c/object_class_property_init_all(555):prop name=[type] type=[string] desc=[(null)] init=[0000000000000000]
[15556]../qom/object.c/object_class_property_init_all(563):obj(migration) return
[15556]../qom/object.c/object_initialize_with_type(583):try object_init_with_type(migration)
[15556]../qom/object.c/object_init_with_type(416):obj->class->type->name=[migration] ti->name=[migration] enter
[15556]../qom/object.c/type_get_parent(194):parent_type(device)
[15556]../qom/object.c/object_init_with_type(416):obj->class->type->name=[migration] ti->name=[device] enter
[15556]../qom/object.c/type_get_parent(194):parent_type(object)
[15556]../qom/object.c/object_init_with_type(416):obj->class->type->name=[migration] ti->name=[object] enter
[15556]../qom/object.c/object_init_with_type(427):obj->class->type->name=[migration] ti->name=[object] return
[15556]../qom/object.c/object_init_with_type(423):name=[device] ti->instance_init() before
[15556]../qom/object.c/type_table_lookup(103):lookup type(device) in hash table
[15556]../qom/object.c/type_get_parent(194):parent_type(object)
[15556]../qom/object.c/type_get_parent(196):no parent_type
[15556]../qom/object.c/type_get_parent(194):parent_type(device)
[15556]../qom/object.c/object_init_with_type(425):name=[device] ti->instance_init() after
[15556]../qom/object.c/object_init_with_type(427):obj->class->type->name=[migration] ti->name=[device] return
[15556]../qom/object.c/object_init_with_type(423):name=[migration] ti->instance_init() before
[15556]../qom/object.c/type_table_lookup(103):lookup type(migration) in hash table
[15556]../qom/object.c/type_get_parent(194):parent_type(device)
[15556]../qom/object.c/type_get_parent(194):parent_type(object)
[15556]../qom/object.c/type_get_parent(196):no parent_type
[15556]../qom/object.c/object_init_with_type(425):name=[migration] ti->instance_init() after
[15556]../qom/object.c/object_init_with_type(427):obj->class->type->name=[migration] ti->name=[migration] return
[15556]../qom/object.c/object_initialize_with_type(585):try object_post_init_with_type(migration)
[15556]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[migration] ti->name=[migration] enter
[15556]../qom/object.c/type_get_parent(194):parent_type(device)
[15556]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[migration] ti->name=[device] enter
[15556]../qom/object.c/object_post_init_with_type(436):name=[device] ti->instance_post_init() before
[15556]../qom/object.c/object_post_init_with_type(438):name=[device] ti->instance_post_init() after
[15556]../qom/object.c/type_get_parent(194):parent_type(object)
[15556]../qom/object.c/object_post_init_with_type(433):obj->class->type->name=[migration] ti->name=[object] enter
[15556]../qom/object.c/object_post_init_with_type(444):return
[15556]../qom/object.c/object_post_init_with_type(444):return
[15556]../qom/object.c/object_post_init_with_type(444):return
[15556]../qom/object.c/object_initialize_with_type(587):obj(migration) return
[15556]../qom/object.c/object_new_with_type(812):obj(migration) return
[15556]../migration/migration.c/migration_object_init(204):
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(242):<<<deep>>>=[9] s=[000001de99f946b0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(246):thread.data=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(247):thread.tid=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(248):vm_start_bh=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(249):cleanup_bh=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(250):to_dst_file=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(251):postcopy_qemufile_src=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(252):postcopy_qemufile_src_sem.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(253):bioc=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(254):qemu_file_lock.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(255):rate_limit_sem.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(256):iteration_initial_pages=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(257):pages_per_second=[-1.000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(258):iteration_initial_bytes=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(259):iteration_start_time=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(261):threshold_size=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(263):parameters=[p(000001de99f947e0)]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(138):<<<deep>>>=[8] params=[000001de99f947e0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(140):has_announce_initial=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(141):announce_initial=[50]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(142):has_announce_max=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(143):announce_max=[550]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(144):has_announce_rounds=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(145):announce_rounds=[5]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(146):has_announce_step=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(147):announce_step=[100]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(148):has_compress_level=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(149):compress_level=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(150):has_compress_threads=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(151):compress_threads=[8]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(152):has_decompress_threads=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(153):decompress_threads=[2]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(154):has_throttle_trigger_threshold=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(155):throttle_trigger_threshold=[50]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(156):has_cpu_throttle_initial=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(157):cpu_throttle_initial=[20]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(158):has_cpu_throttle_increment=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(159):cpu_throttle_increment=[10]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(160):has_cpu_throttle_tailslow=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(161):cpu_throttle_tailslow=[0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(162):tls_creds=[]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(163):tls_hostname=[]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(164):tls_authz=[(null)]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(165):has_max_bandwidth=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(166):max_bandwidth=[134217728]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(167):has_max_bandwidth=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(168):max_bandwidth=[134217728]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(169):has_avail_switchover_bandwidth=[0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(170):avail_switchover_bandwidth=[0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(171):has_downtime_limit=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(172):downtime_limit=[300]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(173):has_x_checkpoint_delay=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(174):x_checkpoint_delay=[20000]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(175):has_block_incremental=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(176):block_incremental=[0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(177):has_multifd_channels=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(178):multifd_channels=[2]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(179):has_xbzrle_cache_size=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(180):xbzrle_cache_size=[67108864]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(181):has_max_postcopy_bandwidth=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(182):max_postcopy_bandwidth=[0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(183):has_max_cpu_throttle=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(184):max_cpu_throttle=[99]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(185):has_multifd_compression=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(186):multifd_compression=[0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MultiFDCompression(28):<<<deep>>>=[7] c=[0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MultiFDCompression(36):[0]=[none]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(190):has_multifd_zlib_level=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(191):multifd_zlib_level=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(192):has_multifd_zstd_level=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(193):multifd_zstd_level=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(194):has_block_bitmap_mapping=[0]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(195):block_bitmap_mapping=[0000000000000000]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(199):has_x_vcpu_dirty_limit_period=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(200):x_vcpu_dirty_limit_period=[1000]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(201):has_vcpu_dirty_limit=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(202):vcpu_dirty_limit=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(203):has_mode=[1]
[15556]../util/huedbg-types-migration.c/huedbg_dump_MigrationParameters(204):mode=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(268):state=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(270):rp_state.from_dst_file=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(271):rp_state.rp_thread.tid=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(272):rp_state.rp_thread_created=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(273):rp_state.rp_sem.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(274):rp_state.rp_pong_acks.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(276):mbps=[-1.000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(277):start_time=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(278):total_time=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(279):downtime_start=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(280):downtime=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(281):expected_downtime=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[0]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[1]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[2]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[3]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[4]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[5]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[6]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[7]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[8]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[9]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[10]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[11]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[12]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[13]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[14]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[15]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[16]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[17]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[18]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[19]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[20]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[21]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(283):capabilities[22]=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(285):setup_time=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(287):vm_old_state=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(289):start_postcopy=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(290):postcopy_after_devices=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(292):migration_thread_running=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(294):block_inactive=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(296):wait_unplug_sem.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(298):pause_sem.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(300):colo_exit_sem.initialized=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(302):colo_checkpoint_event.value=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(303):colo_checkpoint_event.initialized=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(304):colo_checkpoint_time=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(305):colo_delay_timer=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(307):error=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(308):error_mutex.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(309):must_remove_block_options=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(311):store_global_state=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(313):send_configuration=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(314):send_section_footer=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(316):postcopy_pause_sem.initialized=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(318):decompress_error_check=[1]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(320):preempt_pre_7_2=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(322):multifd_flush_after_each_section=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(324):clear_bitmap_shift=[18]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(326):hostname=[(null)]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(328):vmdesc=[0000000000000000]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(330):switchover_acked=[0]
[15556]../util/huedbg-migration.c/huedbg_dump_MigrationState(331):rdma_migration=[0]
[15556]../migration/migration.c/migration_object_init(210):
[15556]../migration/migration.c/migration_object_init(212):
[15556]../migration/migration.c/migration_object_init(214):
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMState(93):<<<deep>>>=[9] dbms=[00007ff768e09080]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMState(95):save=[p(00007ff768e09080)]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMSaveState(26):<<<deep>>>=[8] save=[00007ff768e09080]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMSaveState(28):dbms_list=[p(00007ff768e09080)]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMSaveState(29):bulk_completed=[0]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMSaveState(30):no_bitmaps=[0]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMSaveState(32):prev_bs=[p(0000000000000000)]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMSaveState(33):prev_bitmap=[p(0000000000000000)]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMState(99):load=[p(00007ff768e090a8)]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(66):<<<deep>>>=[8] load=[00007ff768e090a8]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(68):flags=[0]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(69):node_alias=[]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(70):bitmap_alias=[]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(71):bitmap_name=[]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(72):bs=[0000000000000000]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(73):bitmap=[0000000000000000]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(75):before_vm_start_handled=[0]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(76):bmap_inner=[0000000000000000]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(78):cancelled=[0]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(80):bitmaps=[0000000000000000]
[15556]D:/msys64/home/yuhui/gitee/mingw-qemu/util/huedbg_inline-migration_block-dirty-bitmap.c/huedbg_dump_DBMLoadState(81):lock.initialized=[1]
[15556]../migration/migration.c/migration_object_init(216):exit
[15556]../system/vl.c/qemu_init(3862)

总结

以上分析了系统初始化过程中迁移对象的初始化过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/598887.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据挖掘算法原理与实践:决策树

第2关&#xff1a;决策树算法原理 任务描述 本关任务&#xff1a;根据本关所学知识&#xff0c;完成 calcInfoGain 函数。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 信息熵&#xff1b;条件熵&#xff1b;信息增益。 信息熵 信息是个很抽象的概念。…

04-xss获取cookie实验

二、开发XSS服务器端 1、确认实验环境 攻击者服务器&#xff1a;192.168.74.134&#xff0c;将获取到cookie数据保存到该服务器的数据库中&#xff0c;运行PHP代码暴露一个接收Cookie的URL地址。 正常Web服务器&#xff1a;192.168.74.133&#xff0c;用于正常的用户访问的目…

Linux磁盘IO、网络IO、零拷贝详解

一、什么是I/O&#xff1f; 在计算机操作系统中&#xff0c;所谓的I/O就是输入&#xff08;input&#xff09;和输出&#xff08;output&#xff09;,也可以理解为读&#xff08;read&#xff09;和写&#xff08;write&#xff09;,针对不同的对象&#xff0c;I/O模式可以划分…

46. UE5 RPG 实现角色死亡效果

在上一篇文章中&#xff0c;我们实现了敌人受到攻击后会播放受击动画&#xff0c;并且还给角色设置了受击标签。并在角色受击时&#xff0c;在角色身上挂上受击标签&#xff0c;在c里&#xff0c;如果挂载了此标签&#xff0c;速度将降为0 。 受击有了&#xff0c;接下来我们将…

Compose 状态管理

文章目录 Compose 状态管理概述使用MutableStaterememberStatelessComposable & StatefulComposable状态提升rememberSaveable支持parceable不支持parceable 使用ViewModelViewModelProvider.Factory 使用Flow Compose 状态管理 概述 当应用程序的状态发生变化时&#xf…

如何与精益生产咨询公司合作,确保项目的成功?

随着竞争的白热化&#xff0c;企业为了提升生产效率和降低成本&#xff0c;纷纷寻求精益生产咨询公司的帮助。然而&#xff0c;与咨询公司合作并不是一蹴而就的事情&#xff0c;需要双方共同努力&#xff0c;才能确保项目的成功。那么&#xff0c;如何与精益生产咨询公司合作&a…

Unity射击游戏开发教程:(10)创建主界面

主界面开发 玩游戏时,主菜单是事后才想到要做的。实际上几乎每个游戏都有一个主界面。如果你点击打开游戏并立即开始游戏,你会感到非常惊讶。本文将讨论如何创建带有启动新游戏的交互式按钮的主界面/主菜单。 主菜单将是一个全新的场景。我们将添加一个 UI 图像元素,并在图像…

cookie,session,token

目的&#xff1a;解决用户登录状态 从一个简单的登录开始说起&#xff0c; 在我们访问bilibili的时候&#xff0c;第一次需要登录&#xff0c;但后续就不需要登录了&#xff0c;可以直接访问bilibili。 而且每次在页面请求服务器的资源都需要维持登录状态&#xff0c;如果没…

运维实施工程师之Linux服务器全套教程

一、Linux目录结构 1.1 基本介绍 Linux 的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录“/”&#xff0c;然后在此目录下再创建其他的目录。 在 Linux 世界里&#xff0c;一切皆文件&#xff08;即使是一个硬件设备&#xff0c;也是使用文本来标…

暗区突围进不去/游戏无法启动/掉帧卡顿/报错的解决方法

暗区突围是一款高拟真硬核射击手游&#xff0c;打造了全新的沉浸式暗区战局体验&#xff0c;发行商是腾讯公司。这个游戏名词虽然看起来有些陌生&#xff0c;但其本身的玩法内核毫无疑问的是&#xff0c;这款游戏在画面质量和枪械操作方面&#xff0c;都是手游市场上同类游戏中…

文字转语音粤语怎么转换?6个软件教你快速进行文字转换语音

文字转语音粤语怎么转换&#xff1f;6个软件教你快速进行文字转换语音 当需要将文字转换为粤语语音时&#xff0c;可以使用多种工具和服务&#xff0c;这些工具可以帮助您快速而准确地实现这一目标。以下是六个非国内的语音转换软件&#xff0c;它们可以帮助您将文字转换为粤语…

【微磁学】对于现阶段微磁学仿真发展的思考1-理论篇

系列文章目录 对于现阶段微磁学仿真发展的思考1-理论篇 对于现阶段微磁学仿真发展的思考2-工具篇 文章目录 系列文章目录前言一、微磁学的数学区二、微磁学的物理区三、微磁学仿真现存的一些问题四、微磁学代码区&#xff1a;上手操作&#xff0c;理解更深入栗子1: 能量最小化…

人脸美妆SDK解决方案,自研人脸美妆方案

美妆已经成为视频内容中不可或缺的一部分。从拍摄到编辑&#xff0c;再到直播&#xff0c;美妆效果都能为视频内容增添魅力&#xff0c;吸引更多观众的眼球。为了满足企业对于高质量美妆效果的需求&#xff0c;美摄科技凭借多年的技术积累和创新精神&#xff0c;推出了全新的人…

Jmeter 中 CSV 如何参数化测试数据并实现自动断言

当我们使用Jmeter工具进行接口测试&#xff0c;可利用CSV Data Set Config配置元件&#xff0c;对测试数据进行参数化&#xff0c;循环读取csv文档中每一行测试用例数据&#xff0c;来实现接口自动化。此种情况下&#xff0c;很多测试工程师只会人工地查看响应结果来判断用例是…

局域网监控软件能干什么|有哪些好用的局域网监控软件

企业局域网已成为日常工作中不可或缺的一部分。 然而&#xff0c;网络环境的复杂性和员工上网行为的多样性&#xff0c;使得企业面临着诸多安全风险和管理挑战。 因此&#xff0c;高效局域网监控上网记录监测成为了企业保障信息安全和提升工作效率的重要手段。 高效局域网监控…

linux - 主次设备号自动申请

alloc_chrdev_region 原型如下&#xff0c;该函数向内核申请一个空闲的主设备号。 alloc_chrdev_region(&g_aputriger_dev, 0, APUTRIGER_MAX_NUM, "aputriger0"); 第四个参数是我们使用cat /proc/devices 看到的名称 /*** alloc_chrdev_region() - register a…

智慧交通系统:未来出行,从这里开始

随着城市化进程的加快&#xff0c;交通拥堵、事故频发、停车难等问题日益凸显&#xff0c;传统交通管理模式已难以满足现代社会的需求。智慧交通系统作为解决这些问题的关键&#xff0c;通过集成创新技术&#xff0c;实现交通管理的智能化、信息化&#xff0c;提高交通系统的运…

TC6291C 是一款电流模式升压型DC-DC转换器芯片

一般概述 TC6291C是一款电流模式升压型DC-DC转换器。其脉宽调制电路&#xff0c;内置0.2Q功率场效应管使这个调节器具有高功率效率。内部补偿网络也减少了多达6个的外部元件。误差信号放大器的同相输入端连接到0.6V精密基准电压&#xff0c;内部软启动功能可以减小瞬间突…

一文带你了解 Oracle 23ai 新特性 Vector 的基础用法

Oracle Database 23ai 来了&#xff0c;虽然目前只是云上可商用&#xff0c;但是 OP 有 FREE 版本可以进行开发。 本文将介绍 Oracle 23ai 的新特性之一&#xff1a; AI 向量搜索&#xff0c;的部分内容。 向量数据类型 23ai 新增向量数据类型&#xff0c;可以用于表示一系列的…

【PyTorch单点知识】深入理解与应用转置卷积ConvTranspose2d模块

文章目录 0. 前言1. 转置卷积概述2. nn.ConvTranspose2d 模块详解2.1 主要参数2.2 属性与方法 3. 计算过程&#xff08;重点&#xff09;3.1 基本过程3.2 调整stride3.3 调整dilation3.4 调整padding3.5 调整output_padding 4. 应用实例5. 总结 0. 前言 按照国际惯例&#xff0…
最新文章