Re: [PATCH v3 13/23] system/dirtylimit: Extract HMP code to dirtylimit-hmp-cmds.c
Hy Man <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <CAFWXh4yc+nFPTEe6m5uvgNq1kkkP7bie6N=VabjkTYnfzCYYfg@mail.gmail.com> |
Reviewed-by: Hyman Huang <[email protected]> On Thu, Aug 13, 2026 at 5:18 AM Philippe Mathieu-Daudé <[email protected]> wrote: > > Signed-off-by: Philippe Mathieu-Daudé <[email protected]> > Reviewed-by: Marc-André Lureau <[email protected]> > --- > MAINTAINERS | 1 + > system/dirtylimit-hmp-cmds.c | 74 ++++++++++++++++++++++++++++++++++++ > system/dirtylimit.c | 60 ----------------------------- > system/meson.build | 1 + > 4 files changed, 76 insertions(+), 60 deletions(-) > create mode 100644 system/dirtylimit-hmp-cmds.c > > diff --git a/MAINTAINERS b/MAINTAINERS > index 4628793dde6..a33fbeebf61 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -3858,6 +3858,7 @@ Migration dirty limit and dirty page rate > M: Hyman Huang <[email protected]> > S: Maintained > F: system/dirtylimit.c > +F: system/dirtylimit-hmp-cmds.c > F: include/system/dirtylimit.h > F: migration/dirtyrate.c > F: migration/dirtyrate.h > diff --git a/system/dirtylimit-hmp-cmds.c b/system/dirtylimit-hmp-cmds.c > new file mode 100644 > index 00000000000..4928d57cc8e > --- /dev/null > +++ b/system/dirtylimit-hmp-cmds.c > @@ -0,0 +1,74 @@ > +/* > + * HMP commands related to migration dirty page rate limit > + * > + * Copyright (c) 2022 CHINA TELECOM CO.,LTD. > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. > + * > + * SPDX-License-Identifier: GPL-2.0-or-later > + */ > + > +#include "qemu/osdep.h" > +#include "qapi/error.h" > +#include "qapi/qapi-commands-migration.h" > +#include "qobject/qdict.h" > +#include "monitor/hmp.h" > +#include "monitor/monitor.h" > +#include "system/dirtylimit.h" > + > +void hmp_cancel_vcpu_dirty_limit(Monitor *mon, const QDict *qdict) > +{ > + int64_t cpu_index = qdict_get_try_int(qdict, "cpu_index", -1); > + Error *err = NULL; > + > + qmp_cancel_vcpu_dirty_limit(!!(cpu_index != -1), cpu_index, &err); > + if (err) { > + hmp_handle_error(mon, err); > + return; > + } > + > + monitor_printf(mon, "[Please use 'info vcpu_dirty_limit' to query " > + "dirty limit for virtual CPU]\n"); > +} > + > +void hmp_set_vcpu_dirty_limit(Monitor *mon, const QDict *qdict) > +{ > + int64_t dirty_rate = qdict_get_int(qdict, "dirty_rate"); > + int64_t cpu_index = qdict_get_try_int(qdict, "cpu_index", -1); > + Error *err = NULL; > + > + if (dirty_rate < 0) { > + error_setg(&err, "invalid dirty page limit %" PRId64, dirty_rate); > + goto out; > + } > + > + qmp_set_vcpu_dirty_limit(!!(cpu_index != -1), cpu_index, dirty_rate, &err); > + > +out: > + hmp_handle_error(mon, err); > +} > + > +void hmp_info_vcpu_dirty_limit(Monitor *mon, const QDict *qdict) > +{ > + DirtyLimitInfoList *info; > + g_autoptr(DirtyLimitInfoList) head = NULL; > + Error *err = NULL; > + > + if (!dirtylimit_in_service()) { > + monitor_printf(mon, "Dirty page limit not enabled!\n"); > + return; > + } > + > + head = qmp_query_vcpu_dirty_limit(&err); > + if (err) { > + hmp_handle_error(mon, err); > + return; > + } > + > + for (info = head; info != NULL; info = info->next) { > + monitor_printf(mon, "vcpu[%"PRIi64"], limit rate %"PRIi64 " (MB/s)," > + " current rate %"PRIi64 " (MB/s)\n", > + info->value->cpu_index, > + info->value->limit_rate, > + info->value->current_rate); > + } > +} > diff --git a/system/dirtylimit.c b/system/dirtylimit.c > index 50fa67f3d6a..70bb7bac2d0 100644 > --- a/system/dirtylimit.c > +++ b/system/dirtylimit.c > @@ -17,8 +17,6 @@ > #include "qapi/error.h" > #include "system/dirtyrate.h" > #include "system/dirtylimit.h" > -#include "monitor/hmp.h" > -#include "monitor/monitor.h" > #include "system/memory.h" > #include "exec/target_page.h" > #include "hw/core/boards.h" > @@ -491,21 +489,6 @@ void qmp_cancel_vcpu_dirty_limit(bool has_cpu_index, > dirtylimit_state_unlock(); > } > > -void hmp_cancel_vcpu_dirty_limit(Monitor *mon, const QDict *qdict) > -{ > - int64_t cpu_index = qdict_get_try_int(qdict, "cpu_index", -1); > - Error *err = NULL; > - > - qmp_cancel_vcpu_dirty_limit(!!(cpu_index != -1), cpu_index, &err); > - if (err) { > - hmp_handle_error(mon, err); > - return; > - } > - > - monitor_printf(mon, "[Please use 'info vcpu_dirty_limit' to query " > - "dirty limit for virtual CPU]\n"); > -} > - > void qmp_set_vcpu_dirty_limit(bool has_cpu_index, > int64_t cpu_index, > uint64_t dirty_rate, > @@ -548,23 +531,6 @@ void qmp_set_vcpu_dirty_limit(bool has_cpu_index, > dirtylimit_state_unlock(); > } > > -void hmp_set_vcpu_dirty_limit(Monitor *mon, const QDict *qdict) > -{ > - int64_t dirty_rate = qdict_get_int(qdict, "dirty_rate"); > - int64_t cpu_index = qdict_get_try_int(qdict, "cpu_index", -1); > - Error *err = NULL; > - > - if (dirty_rate < 0) { > - error_setg(&err, "invalid dirty page limit %" PRId64, dirty_rate); > - goto out; > - } > - > - qmp_set_vcpu_dirty_limit(!!(cpu_index != -1), cpu_index, dirty_rate, &err); > - > -out: > - hmp_handle_error(mon, err); > -} > - > /* Return the max throttle time of each virtual CPU */ > uint64_t dirtylimit_throttle_time_per_round(void) > { > @@ -646,29 +612,3 @@ struct DirtyLimitInfoList *qmp_query_vcpu_dirty_limit(Error **errp) > { > return dirtylimit_query_all(); > } > - > -void hmp_info_vcpu_dirty_limit(Monitor *mon, const QDict *qdict) > -{ > - DirtyLimitInfoList *info; > - g_autoptr(DirtyLimitInfoList) head = NULL; > - Error *err = NULL; > - > - if (!dirtylimit_in_service()) { > - monitor_printf(mon, "Dirty page limit not enabled!\n"); > - return; > - } > - > - head = qmp_query_vcpu_dirty_limit(&err); > - if (err) { > - hmp_handle_error(mon, err); > - return; > - } > - > - for (info = head; info != NULL; info = info->next) { > - monitor_printf(mon, "vcpu[%"PRIi64"], limit rate %"PRIi64 " (MB/s)," > - " current rate %"PRIi64 " (MB/s)\n", > - info->value->cpu_index, > - info->value->limit_rate, > - info->value->current_rate); > - } > -} > diff --git a/system/meson.build b/system/meson.build > index cd3193d170b..377adce8035 100644 > --- a/system/meson.build > +++ b/system/meson.build > @@ -9,6 +9,7 @@ system_ss.add(files( > 'cpus.c', > 'cpu-timers.c', > 'dirtylimit.c', > + 'dirtylimit-hmp-cmds.c', > 'dma-helpers.c', > 'exit-with-parent.c', > 'globals.c', > -- > 2.53.0 >