This change adds a new argument --dsa-accelerate to qemu. Signed-off-by: Hao Xiang <hao.xi...@bytedance.com> --- qemu-options.hx | 10 ++++++++++ softmmu/runstate.c | 4 ++++ softmmu/vl.c | 22 ++++++++++++++++++++++ storage-daemon/qemu-storage-daemon.c | 2 ++ 4 files changed, 38 insertions(+)
diff --git a/qemu-options.hx b/qemu-options.hx index b37eb9662b..29491ee691 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4890,6 +4890,16 @@ SRST otherwise the option is ignored. Default is off. ERST +DEF("dsa-accelerate", HAS_ARG, QEMU_OPTION_dsa, + "-dsa-accelerate <file>\n" + " Use Intel Data Streaming Accelerator for certain QEMU\n" + " operations, eg, checkpoint.\n", + QEMU_ARCH_I386) +SRST +``-dsa-accelerate path`` + The device path to a DSA accelerator. +ERST + DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate, "-dump-vmstate <file>\n" " Output vmstate information in JSON format to file.\n" diff --git a/softmmu/runstate.c b/softmmu/runstate.c index 2f2396c819..1f938e192f 100644 --- a/softmmu/runstate.c +++ b/softmmu/runstate.c @@ -41,6 +41,7 @@ #include "qapi/qapi-commands-run-state.h" #include "qapi/qapi-events-run-state.h" #include "qemu/accel.h" +#include "qemu/cutils.h" #include "qemu/error-report.h" #include "qemu/job.h" #include "qemu/log.h" @@ -834,6 +835,9 @@ void qemu_cleanup(void) tpm_cleanup(); net_cleanup(); audio_cleanup(); + + dsa_cleanup(); + monitor_cleanup(); qemu_chr_cleanup(); user_creatable_cleanup(); diff --git a/softmmu/vl.c b/softmmu/vl.c index b0b96f67fa..8ace491183 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -161,6 +161,7 @@ static const char *mem_path; static const char *incoming; static const char *loadvm; static const char *accelerators; +static const char *dsa_path; static bool have_custom_ram_size; static const char *ram_memdev_id; static QDict *machine_opts_dict; @@ -373,6 +374,20 @@ static QemuOptsList qemu_msg_opts = { }, }; +static QemuOptsList qemu_dsa_opts = { + .name = "dsa-accelerate", + .head = QTAILQ_HEAD_INITIALIZER(qemu_dsa_opts.head), + .desc = { + { + .name = "device", + .type = QEMU_OPT_STRING, + .help = "The device path to DSA accelerator used for certain " + "QEMU operations, eg, checkpoint\n", + }, + { /* end of list */ } + }, +}; + static QemuOptsList qemu_name_opts = { .name = "name", .implied_opt_name = "guest", @@ -2704,6 +2719,7 @@ void qemu_init(int argc, char **argv) qemu_add_opts(&qemu_semihosting_config_opts); qemu_add_opts(&qemu_fw_cfg_opts); qemu_add_opts(&qemu_action_opts); + qemu_add_opts(&qemu_dsa_opts); module_call_init(MODULE_INIT_OPTS); error_init(argv[0]); @@ -3504,6 +3520,12 @@ void qemu_init(int argc, char **argv) } configure_msg(opts); break; + case QEMU_OPTION_dsa: + dsa_path = optarg; + if (configure_dsa(dsa_path)) { + exit(1); + } + break; case QEMU_OPTION_dump_vmstate: if (vmstate_dump_file) { error_report("only one '-dump-vmstate' " diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c index 0e9354faa6..0e4375407a 100644 --- a/storage-daemon/qemu-storage-daemon.c +++ b/storage-daemon/qemu-storage-daemon.c @@ -439,6 +439,8 @@ int main(int argc, char *argv[]) job_cancel_sync_all(); bdrv_close_all(); + dsa_cleanup(); + monitor_cleanup(); qemu_chr_cleanup(); user_creatable_cleanup(); -- 2.30.2