diff options
author | Maciej S. Szmigiero <maciej.szmigiero@oracle.com> | 2023-08-23 23:34:14 +0200 |
---|---|---|
committer | Maciej S. Szmigiero <maciej.szmigiero@oracle.com> | 2023-11-06 14:08:10 +0100 |
commit | 259ebed45a2cd2ae6a5820fbc2e51578d2ad4eb7 (patch) | |
tree | b79f2d9b57cdf58408a26880a23ce79836936e38 /hw/hyperv/hv-balloon.c | |
parent | 16dff2f9bb877bd1e147b5c5d9966d5a1d336c8c (diff) |
qapi: Add HV_BALLOON_STATUS_REPORT event and its QMP query command
Used by the hv-balloon driver for (optional) guest memory status reports.
Acked-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
Diffstat (limited to 'hw/hyperv/hv-balloon.c')
-rw-r--r-- | hw/hyperv/hv-balloon.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/hw/hyperv/hv-balloon.c b/hw/hyperv/hv-balloon.c index 44a8d15cc8..66f297c1d7 100644 --- a/hw/hyperv/hv-balloon.c +++ b/hw/hyperv/hv-balloon.c @@ -1102,7 +1102,35 @@ static void hv_balloon_handle_status_report(HvBalloon *balloon, balloon->status_report.available *= HV_BALLOON_PAGE_SIZE; balloon->status_report.received = true; - /* report event */ + qapi_event_send_hv_balloon_status_report(balloon->status_report.committed, + balloon->status_report.available); +} + +HvBalloonInfo *qmp_query_hv_balloon_status_report(Error **errp) +{ + HvBalloon *balloon; + HvBalloonInfo *info; + + balloon = HV_BALLOON(object_resolve_path_type("", TYPE_HV_BALLOON, NULL)); + if (!balloon) { + error_setg(errp, "no %s device present", TYPE_HV_BALLOON); + return NULL; + } + + if (!balloon->status_report.enabled) { + error_setg(errp, "guest memory status reporting not enabled"); + return NULL; + } + + if (!balloon->status_report.received) { + error_setg(errp, "no guest memory status report received yet"); + return NULL; + } + + info = g_malloc0(sizeof(*info)); + info->committed = balloon->status_report.committed; + info->available = balloon->status_report.available; + return info; } static void hv_balloon_handle_unballoon_response(HvBalloon *balloon, |