From nobody Tue Feb 10 04:30:26 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1513542407502666.0606786964678; Sun, 17 Dec 2017 12:26:47 -0800 (PST) Received: from localhost ([::1]:55382 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQfWI-0006Ax-DI for importer@patchew.org; Sun, 17 Dec 2017 15:26:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55223) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eQfUV-0005CH-9s for qemu-devel@nongnu.org; Sun, 17 Dec 2017 15:25:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eQfUQ-00036C-Md for qemu-devel@nongnu.org; Sun, 17 Dec 2017 15:24:55 -0500 Received: from mail-eopbgr50129.outbound.protection.outlook.com ([40.107.5.129]:59082 helo=EUR03-VE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eQfUQ-00035K-A8; Sun, 17 Dec 2017 15:24:50 -0500 Received: from localhost.localdomain (194.28.30.174) by HE1PR0801MB2746.eurprd08.prod.outlook.com (2a01:111:e400:7baf::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.323.15; Sun, 17 Dec 2017 20:24:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Mo6LWgc2kEgw66EF6EOq417d9bycjedJHXWEHt3lwnY=; b=JniHIfzWEkxjxMrvforicmi3C/XoaDUAJ1Q14PIiYyEWJY+GtGWoFTKFgnuGaVdpVrGgq4WheXyCyV/WkBMid0bq3JnRyilb2DFLbHHnfi2umdrbONwRMJtJG20/zp0DQ78M9qgh5TAaXkxZPES6RP8/henVKhu2jcKhfWHqpzE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=jan.dakinevich@virtuozzo.com; From: Jan Dakinevich To: qemu-devel@nongnu.org Date: Sun, 17 Dec 2017 23:25:55 +0300 Message-Id: <1513542355-28203-3-git-send-email-jan.dakinevich@virtuozzo.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1513542355-28203-1-git-send-email-jan.dakinevich@virtuozzo.com> References: <1513542355-28203-1-git-send-email-jan.dakinevich@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [194.28.30.174] X-ClientProxiedBy: VI1PR0202CA0006.eurprd02.prod.outlook.com (2603:10a6:803:14::19) To HE1PR0801MB2746.eurprd08.prod.outlook.com (2a01:111:e400:7baf::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2a22e956-84c4-453a-0ec9-08d5458c377e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603307); SRVR:HE1PR0801MB2746; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2746; 3:HJTD8iJAQgLBKoYTWAk127dz2GQuf+I1XguarP9tw3H5NyGZYgSE4m7tCWFY4uvHeH4FeaVRuc1VCfJhhB3i8MEP+PQlesHzgPHIkfL8kYMwWrcSV+VG6h9hkXEOPkgI3WOBv372pR0jjsntS3w5F6I1bRWVNDwTa9xCaT7RSuw1xrllAGII4fH+Qa1CUN6d+nw2SJzM7H12KCGEN6yMCevTmRl+OkIOkL4jymnC9T6YmQBLgPg1VIM2lbFAuSEM; 25:F65s4AGrfBgXmSNmjN3Q+qbBTTj8zpGb3Y1Zi5STp6ZT36YsV2bCWo/ocMZMbpurrhKj6h/YhhPGfdJN1Sd4HGeCSG5m3aRFfCiAVMK5h8MEXjA7dKw+JNI+D/nlBHFUrVbz8g0Bb+NqxmEezlXdmk+NpZ7AOw8csPVH9VNsrP2yr2QpidmzQTIOXNNxlWArDrdENeW2Pb/pcXspDW4VdeL/GJb+5Q+yXhpNrA+67Zg+7X1rnqOozjiS2kCD940+wpSgr40hBquwyot4hotWkw9YFJyiAgrnij5GiuiuL4vc7k94Mu4bLpVe244emOL4VbEQtp+spsqXPRdHBQ7h2w==; 31:8DAUs0NozU25pSrYX5hAY+9HNzTJOpmMLPmQvvN7K7/wMV5hwymu/90sUEKhY+eEknsS2+XO5L+zjjH1OrretanKt0HfNOyVqf9HQHIzaRjvlcZYwCPYBMoLxNAM2ZTxhBBLI7jXN+9vIVLwczbtPeNnTKhbJ40OpZtb5N8SRcJnaJFeAP2yrCPrlWS7ceuOwCMaQ/nOkcLfXZWnRFEMGyCWAxG0YbflfSoQPkmEaMk= X-MS-TrafficTypeDiagnostic: HE1PR0801MB2746: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2746; 20:FwdscpsRXokH4TmYFnsB2/7aQlCGbH3pusmzGlrCFcFgcfoZmrKwLxt+3FWfVIuvtjflozoVu9Jr2b8RW9RHdVc2Vrb7FRuGV9pzuX9xNro/B7OZDY6fY4r8ESAsJUDct5KcPqZOp/Tt253PX3YsQiOAzojoOeWI4uJi0RI2EwAISrZI4FFMb7h2sRJJqH93WNVqW9aF/C99/nPVVGGFn4oK3NZvM2TQjhEoZVTZYSR8+lq85uoUy2AyGVvzZdoMyqMTF7UTKFsxoSE9uwr8T0CXI8kImPXeA+ZWGtxe2GXWEfGriQ2yxcryY/Q1WqWBdZtSfakmSSyDoDcoyhd95j0szg6al/ahaw8oJlZUOJKFpWS5FRtwyexEBrLxe7nCB7MrVTd8ELxP7f6pPBIEpy3VBVL4ayqBRpgadmKKTG0=; 4:7by6xkT+ftyxTAbmgK990Z8fkbU2HQm2wg38U5q5cXJ3w92E6173L+IVCgvhc+lbdetImWAzPNrLHt4JPwJPkMF0xkbUUaGZQaUbZ2p0yYTTXDffbi9hD1RZc7Y7h6y8h4LIOHODle/tvpoQZzpDVgVPIzTKjZ1G04vx0SYkWIkv4plLqTSn1Q2cSg4P7lIQVmwclrcZC0wphQvJ0rhP3zjW4U6txu8/xDuOf4gPrLh2oFBTAGnsZMbvvcDvDALTJP2zp48dX2SyM2jsXlR1Ww== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(3231023)(93006095)(93001095)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR0801MB2746; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0801MB2746; X-Forefront-PRVS: 05245CA661 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6069001)(346002)(376002)(366004)(396003)(39840400004)(199004)(189003)(478600001)(25786009)(6916009)(2950100002)(97736004)(6666003)(105586002)(4326008)(86362001)(47776003)(66066001)(5660300001)(53936002)(6506007)(386003)(7416002)(6116002)(3846002)(2906002)(81156014)(48376002)(68736007)(36756003)(8676002)(51416003)(7736002)(16526018)(6486002)(8936002)(16586007)(6512007)(54906003)(81166006)(76176011)(52116002)(2361001)(2351001)(106356001)(305945005)(50226002)(50466002)(316002)(81973001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB2746; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB2746; 23:gJLUA60mEFtzE6m6cC10SBGcr8/ZJlmJXDz3IEp?= =?us-ascii?Q?vcoivMrY1dmu2NGeAfOnwNhE178OjBu3A8v3slxZmQFnN8/q2i+75YliC5MM?= =?us-ascii?Q?D6gdfhpUNEjLEDlRXsAYtXEJGHRE2yQlmsqQZs3IuzkjmcxESD7TTN0TXSBX?= =?us-ascii?Q?J8ESarb9U+ffKDYWnVgGVe7zp/lPFK+yFR+YMyj+WilMG7sScwfybj4alkXa?= =?us-ascii?Q?kycZ4Eqj0h1mATKma3GjLlnbIFqbun4oe9EaFX5lv1klgt7nB0uQvtbnmJPB?= =?us-ascii?Q?REWuIKuttnbqJ7OoWgTJhnjrFEj6dNgDfAAI9F0DK4wQ1i3dHdwudOQfGzIv?= =?us-ascii?Q?BoGbNhz0lT3QR+xNJpyEPfecTqj2kzq+qoGAAz0xEvGes1ktmmuZ34zmTSW2?= =?us-ascii?Q?FchdNVdLUVtS2iosttD5PI4OqcQdGc/Oj9qPysYC2uReZJB8Z8P/30WDrN2S?= =?us-ascii?Q?zpTNe0dmFfyAwbrsZnLW1ChplkzF25bg3ODL66c6A/MhNLfYzNzdO56OGvuw?= =?us-ascii?Q?DdTW0fZNrjlObW/ieln3rzJ1KLZmpBIdOGuy0G9S6t4Tpe4R71/KfNwUOKMZ?= =?us-ascii?Q?vDiZaSFQor0p4EnRye0MVKFmwreeaLlGFPgysLaT1dG1k0rgmfMg0FBiPrWX?= =?us-ascii?Q?ulh6s64JN+05YItslCAR+QAU4suSjttEwvR7C0dR6Pj+eRxkfqY7RnO8e37F?= =?us-ascii?Q?VYAV1aE6RKd1kXEW0RuI8mtyMpYEvmRtifHlXwIlp+N0qnwkLGnngm5T2IiD?= =?us-ascii?Q?UaPhyxAPlwymIWnDRv0I08PWOrNybKOg0biE89kk0X2+pKShpxBk6BRPUYGi?= =?us-ascii?Q?ApCCV61fr6gDjNF7YueXm8cwpfEx9klIGkoFkd6lPX5Cf6IGjSD+vCUjXgby?= =?us-ascii?Q?v2HgTBZnz9tIh4Yv4hjTlZjtbOt+MiXsBS9V0zZxEYfViwhyTZSCyAqWF3YS?= =?us-ascii?Q?Rn18sBTdhM0L0x1Bn1VAcNRXt8QzxMd3xcair8IPZt2g3/HV/tMkjnzL+uWw?= =?us-ascii?Q?3hPo8pe92wwmonHo0pZatfY2Meft5SwxslRAdkLSwyMl+JIQAAzI8h6sdw/N?= =?us-ascii?Q?+I7eHNzNil5pDAHrSCYsjy+R8/KslxBG9Lvwh9Kl7ObgwVo+aN2rneAMU/TK?= =?us-ascii?Q?Txst8hyTyS0lv58oZNb8CyYK50+QUaUD2KNQLccAQMgBVQHLugD/fmg=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2746; 6:Oumduu5vkRfDGg3um+88oaT0Be4nhu2mcppSp7ItSurQUaSA44RZe7O/7jU/Kuc/o7sMCgzPQuJ3difNMLiSNHUi9lS/lvGMavQ657kzQKcEBMuzE9kA3gmF+rUSp2ftnerNe4Ib8bi/Nl17OlRh1iEGAOAKCpMaGApNUOEQfzsDLxtnRrx6EexHK4LtAOw8kKSOt4G/MykUmyi4YrhuxUoKy8+a755wm0rpPttL9y0NMhKVxQ3ljg6di2FHHNtxNfAdVPAiLYBetbeclhnVgNydWDGgET+jYxM1vAHH6h+Fh1wVk0vbPyVZrVvaey4MGm2K2+FIlwzQDUwY0cXd+St/CacOfte32ejTvS0HmeU=; 5:1yzf4rfENI91BurWRNXIluxhjKGHDh3k5ePH8oE9YdQ0jzIJnlvAJoBztoXQVzga2p575z8GwzbPJtPBkr9iVKxbMt2WFVFbmFDTfhXCrHVeLW00m85FHx1ZG//fJRB8t5X3X0N3x20xAozPO4xiSx/3c+sI7y3rt5F9DLETpsg=; 24:vz1CZMFzYM0IqifDK9zihJWC2yTSNQ5PybGCkibhA7uQgGsqleZAtcXviEtsU1B5kQtPfqIOrK8XJU7gzivi9s6RBFzY3gwOzge8rsza63A=; 7:p1FABcePGYRxiNAdGZdtokLzIqBWCry6H6RB8SmDANlPm7RcY+DBF59JL0IHgOoqRtBY2qPFvgVovoetcdXWm8qDr/PTx9d/OHIeRdW2PkQQJb6AJe/e8xwVqhK18OzE1E57Um1yPeAPQUYyzwLr8PS8roOn5PE9nBJAzg66H9/TvuaBhBcH9fHk7XXYmp/toUqNR75HYeLU2r9GfX8dyaPzxHpNzhjGS73HCtsf//JIN1ykUaYChSz9O9do4DWx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2746; 20:2jxzAyUKTFfejZppAMLs6xkTMjgMlkHB3f14DCBpVkG1hVVWaLLzT6Ebo69gfZJFkd2l6yGDEJYGGnz6t6T1VQNGOSshMSA0HLptAg4Xw+YI9fT7WcK/ztGUiZJlz8vMRBWGcGOwtm0tQ86Cg6OCK/7DicInVfDeHGATb/98EWI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Dec 2017 20:24:45.2320 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2a22e956-84c4-453a-0ec9-08d5458c377e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB2746 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.5.129 Subject: [Qemu-devel] [RFC v6 2/2] virtio: add `info virtio' HMP command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "Denis V. Lunev" , qemu-block@nongnu.org, Amit Shah , Jason Wang , Cornelia Huck , "Dr. David Alan Gilbert" , Markus Armbruster , Jan Dakinevich , "Michael S. Tsirkin" , Stefan Hajnoczi , Paolo Bonzini , Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZohoMail: RDKM_0 RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The command prints data from `query-virtio' QMP in human-readable format. Cc: Denis V. Lunev Signed-off-by: Jan Dakinevich --- hmp-commands-info.hx | 14 ++++++++++ hmp.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++= ++++ hmp.h | 1 + 3 files changed, 89 insertions(+) diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx index 54c3e5e..292280a 100644 --- a/hmp-commands-info.hx +++ b/hmp-commands-info.hx @@ -868,6 +868,20 @@ enabled) memory in bytes. ETEXI =20 STEXI +@item info virtio +@findex virtio +Display guest and host fetures for all virtio devices. +ETEXI + + { + .name =3D "virtio", + .args_type =3D "path:s?", + .params =3D "[path]", + .help =3D "show virtio info", + .cmd =3D hmp_info_virtio, + }, + +STEXI @end table ETEXI =20 diff --git a/hmp.c b/hmp.c index 35a7041..786782b 100644 --- a/hmp.c +++ b/hmp.c @@ -43,6 +43,7 @@ #include "hw/intc/intc.h" #include "migration/snapshot.h" #include "migration/misc.h" +#include "hw/virtio/virtio.h" =20 #ifdef CONFIG_SPICE #include @@ -2918,3 +2919,76 @@ void hmp_info_memory_size_summary(Monitor *mon, cons= t QDict *qdict) } hmp_handle_error(mon, &err); } + +#define HMP_INFO_VIRTIO_INDENT 2 +#define HMP_INFO_VIRTIO_FEATURE 40 + +static void hmp_info_virtio_print(Monitor *mon, VirtioInfo *info) +{ + Object *obj =3D object_resolve_path(info->qom_path, NULL); + char *path =3D qdev_get_dev_path(DEVICE(obj)); + VirtioFeatureList *feat; + strList *status; + + monitor_printf(mon, "%s at %s\n", object_get_typename(obj), path); + g_free(path); + + monitor_printf(mon, "%*sQOM path: %s\n", + HMP_INFO_VIRTIO_INDENT, "", info->qom_path); + + /* device status */ + monitor_printf(mon, "%*sstatus: 0x%02"PRIx8"\n", + HMP_INFO_VIRTIO_INDENT, "", info->status); + for (status =3D info->status_names; status; status =3D status->next) { + monitor_printf(mon, "%*s%s\n", + HMP_INFO_VIRTIO_INDENT * 2, "", status->value); + } + + + /* host and guest feature */ + monitor_printf(mon, "%*shost features: 0x%016"PRIx64"\n", + HMP_INFO_VIRTIO_INDENT, "", info->host_features); + monitor_printf(mon, "%*sguest features: 0x%016"PRIx64"\n", + HMP_INFO_VIRTIO_INDENT, "", info->guest_features); + + /* common features */ + monitor_printf(mon, "%*scommon features:%s\n", + HMP_INFO_VIRTIO_INDENT, "", + info->common_features_names ? "" : " (none)"); + for (feat =3D info->common_features_names; feat; feat =3D feat->next) { + monitor_printf(mon, "%*s%-*s%s\n", + HMP_INFO_VIRTIO_INDENT * 2, "", + HMP_INFO_VIRTIO_FEATURE, feat->value->name, + feat->value->acked ? " acked" : ""); + } + + /* device features */ + monitor_printf(mon, "%*sdevice features:%s\n", + HMP_INFO_VIRTIO_INDENT, "", + info->device_features_names ? "" : " (none)"); + for (feat =3D info->device_features_names; feat; feat =3D feat->next) { + monitor_printf(mon, "%*s%-*s%s\n", + HMP_INFO_VIRTIO_INDENT * 2, "", + HMP_INFO_VIRTIO_FEATURE, feat->value->name, + feat->value->acked ? " acked" : ""); + } +} + +void hmp_info_virtio(Monitor *mon, const QDict *qdict) +{ + const char *path =3D qdict_get_try_str(qdict, "path"); + Error *err =3D NULL; + VirtioInfoList *head, *info; + + + head =3D qmp_query_virtio(!!path, path, &err); + if (err) { + return; + } + + for (info =3D head; info; info =3D info->next) { + hmp_info_virtio_print(mon, info->value); + } + + qapi_free_VirtioInfoList(head); +} diff --git a/hmp.h b/hmp.h index a6f56b1..156293e 100644 --- a/hmp.h +++ b/hmp.h @@ -147,5 +147,6 @@ void hmp_info_ramblock(Monitor *mon, const QDict *qdict= ); void hmp_hotpluggable_cpus(Monitor *mon, const QDict *qdict); void hmp_info_vm_generation_id(Monitor *mon, const QDict *qdict); void hmp_info_memory_size_summary(Monitor *mon, const QDict *qdict); +void hmp_info_virtio(Monitor *mon, const QDict *qdict); =20 #endif --=20 2.1.4