- block: bugfix: Don't pause vm when NOSPACE EIO happened - block: enable cache mode of empty cdrom - block/mirror: fix file-system went to read-only after block-mirror - scsi-bus: fix incorrect call for blk_error_retry_reset_timeout() - scsi-bus: fix unmatched object_unref() - block: Add sanity check when setting retry parameters - block-backend: Stop retrying when draining - scsi-disk: Add support for retry on errors - scsi-bus: Refactor the code that retries requests - virtio_blk: Add support for retry on errors - block: Add error retry param setting - block-backend: Add timeout support for retry - block-backend: Enable retry action on errors - block-backend: Add device specific retry callback - block-backend: Introduce retry timer - qapi/block-core: Add retry option for error action - scsi: bugfix: fix division by zero - scsi: cdrom: Fix crash after remote cdrom detached - qemu-pr: fixed ioctl failed for multipath disk - scsi-disk: define props in scsi_block_disk to avoid memleaks - bugfix: fix possible memory leak - bugfix: fix some illegal memory access and memory leak - util/log: add CONFIG_DISABLE_QEMU_LOG macro - log: Add some logs on VM runtime path - bugfix: fix eventfds may double free when vm_id reused in ivshmem - hw/display/macfb: Fix missing ERRP_GUARD() in macfb_nubus_realize() - hw/cxl/cxl-host: Fix missing ERRP_GUARD() in cxl_fixed_memory_window_config() - qemu-img create: 'cache' paramter only use for reg file image - qemu-img: add qemu-img direct create - qemu-img block: set zero flags only when discard_zeros of the block supported - Revert "file-posix: Remove unused s->discard_zeroes" - pcie_sriov: Validate NumVFs (CVE-2024-26327) - hw/nvme: Use pcie_sriov_num_vfs() (CVE-2024-26328) - hw/acpi/cpu: Use CPUState typedef - target/i386/sev: Fix missing ERRP_GUARD() for error_prepend() - virtio-gpu: remove needless condition - hw/i2c/smbus_slave: Add object path on error prints - vfio/pci: Ascend710 change to bar2 quirk - vfio/pci: Ascend910 need 4Bytes quirk in bar0 - vfio/pci: Ascend710 need 4Bytes quirk in bar0 - vfio/pci: Ascend310 need 4Bytes quirk in bar4 - chardev/char-socket: Fix TLS io channels sending too much data to the backend - i386/cpuid: Move leaf 7 to correct group - i386/cpuid: Decrease cpuid_i when skipping CPUID leaf 1F - i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and FEAT_XSAVE_XSS_HI leafs - i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available - blkio: Respect memory-alignment for bounce buffer allocations - virtio-gpu: Correct virgl_renderer_resource_get_info() error check - hw/usb: Style cleanup - tests/qemu-iotests: resolved the problem that the 108 test cases in the container fail Signed-off-by: Jiabo Feng <fengjiabo1@huawei.com> (cherry picked from commit 404d45bf9147058a475a8031c454a6c8e0acc123)
172 lines
5.8 KiB
Diff
172 lines
5.8 KiB
Diff
From 9d683f1ea8961d89cececf1fdc3345663744067f Mon Sep 17 00:00:00 2001
|
|
From: Yan Wang <wangyan122@huawei.com>
|
|
Date: Tue, 8 Feb 2022 15:48:01 +0800
|
|
Subject: [PATCH] log: Add some logs on VM runtime path
|
|
|
|
Add logs on VM runtime path, to make it easier to do trouble shooting.
|
|
|
|
Signed-off-by: Ying Fang <fangying1@huawei.com>
|
|
Signed-off-by: Yan Wang <wangyan122@huawei.com>
|
|
Signed-off-by: Adttil <yangtao286@huawei.com>
|
|
---
|
|
hw/virtio/virtio-pci.c | 2 ++
|
|
hw/virtio/virtio.c | 14 ++++++++++++--
|
|
monitor/monitor.c | 9 +++++++++
|
|
qapi/qmp-dispatch.c | 15 +++++++++++++++
|
|
system/qdev-monitor.c | 4 +++-
|
|
5 files changed, 41 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
|
|
index e433879542..134a8eaef6 100644
|
|
--- a/hw/virtio/virtio-pci.c
|
|
+++ b/hw/virtio/virtio-pci.c
|
|
@@ -2082,7 +2082,9 @@ static void virtio_pci_device_unplugged(DeviceState *d)
|
|
VirtIOPCIProxy *proxy = VIRTIO_PCI(d);
|
|
bool modern = virtio_pci_modern(proxy);
|
|
bool modern_pio = proxy->flags & VIRTIO_PCI_FLAG_MODERN_PIO_NOTIFY;
|
|
+ VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);
|
|
|
|
+ qemu_log("unplug device name: %s\n", !vdev ? "NULL" : vdev->name);
|
|
virtio_pci_stop_ioeventfd(proxy);
|
|
|
|
if (modern) {
|
|
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
|
|
index 3a160f86ed..a9aa0c4f66 100644
|
|
--- a/hw/virtio/virtio.c
|
|
+++ b/hw/virtio/virtio.c
|
|
@@ -2048,7 +2048,14 @@ int virtio_set_status(VirtIODevice *vdev, uint8_t val)
|
|
k->set_status(vdev, val);
|
|
}
|
|
vdev->status = val;
|
|
-
|
|
+ if (val) {
|
|
+ qemu_log("%s device status is %d that means %s\n",
|
|
+ vdev->name, val,
|
|
+ (val & VIRTIO_CONFIG_S_DRIVER_OK) ? "DRIVER OK" :
|
|
+ (val & VIRTIO_CONFIG_S_DRIVER) ? "DRIVER" :
|
|
+ (val & VIRTIO_CONFIG_S_ACKNOWLEDGE) ? "ACKNOWLEDGE" :
|
|
+ (val & VIRTIO_CONFIG_S_FAILED) ? "FAILED" : "UNKNOWN");
|
|
+ }
|
|
return 0;
|
|
}
|
|
|
|
@@ -2326,8 +2333,11 @@ VirtQueue *virtio_add_queue(VirtIODevice *vdev, int queue_size,
|
|
break;
|
|
}
|
|
|
|
- if (i == VIRTIO_QUEUE_MAX || queue_size > VIRTQUEUE_MAX_SIZE)
|
|
+ if (i == VIRTIO_QUEUE_MAX || queue_size > VIRTQUEUE_MAX_SIZE) {
|
|
+ qemu_log("unacceptable queue_size (%d) or num (%d)\n",
|
|
+ queue_size, i);
|
|
abort();
|
|
+ }
|
|
|
|
vdev->vq[i].vring.num = queue_size;
|
|
vdev->vq[i].vring.num_default = queue_size;
|
|
diff --git a/monitor/monitor.c b/monitor/monitor.c
|
|
index 01ede1babd..e540c1334a 100644
|
|
--- a/monitor/monitor.c
|
|
+++ b/monitor/monitor.c
|
|
@@ -29,6 +29,7 @@
|
|
#include "qapi/qapi-emit-events.h"
|
|
#include "qapi/qapi-visit-control.h"
|
|
#include "qapi/qmp/qdict.h"
|
|
+#include "qapi/qmp/qjson.h"
|
|
#include "qemu/error-report.h"
|
|
#include "qemu/option.h"
|
|
#include "sysemu/qtest.h"
|
|
@@ -338,6 +339,7 @@ static void monitor_qapi_event_emit(QAPIEvent event, QDict *qdict)
|
|
{
|
|
Monitor *mon;
|
|
MonitorQMP *qmp_mon;
|
|
+ GString *json;
|
|
|
|
trace_monitor_protocol_event_emit(event, qdict);
|
|
QTAILQ_FOREACH(mon, &mon_list, entry) {
|
|
@@ -348,6 +350,13 @@ static void monitor_qapi_event_emit(QAPIEvent event, QDict *qdict)
|
|
qmp_mon = container_of(mon, MonitorQMP, common);
|
|
if (qmp_mon->commands != &qmp_cap_negotiation_commands) {
|
|
qmp_send_response(qmp_mon, qdict);
|
|
+ json = qobject_to_json(QOBJECT(qdict));
|
|
+ if (json) {
|
|
+ if (!strstr(json->str, "RTC_CHANGE")) {
|
|
+ qemu_log("%s\n", json->str);
|
|
+ }
|
|
+ g_string_free(json, true);
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
|
|
index 555528b6bb..7a215cbfd7 100644
|
|
--- a/qapi/qmp-dispatch.c
|
|
+++ b/qapi/qmp-dispatch.c
|
|
@@ -24,6 +24,7 @@
|
|
#include "qapi/qmp/qbool.h"
|
|
#include "qemu/coroutine.h"
|
|
#include "qemu/main-loop.h"
|
|
+#include "qemu/log.h"
|
|
|
|
Visitor *qobject_input_visitor_new_qmp(QObject *obj)
|
|
{
|
|
@@ -146,6 +147,7 @@ QDict *coroutine_mixed_fn qmp_dispatch(const QmpCommandList *cmds, QObject *requ
|
|
QObject *id;
|
|
QObject *ret = NULL;
|
|
QDict *rsp = NULL;
|
|
+ GString *json;
|
|
|
|
dict = qobject_to(QDict, request);
|
|
if (!dict) {
|
|
@@ -203,6 +205,19 @@ QDict *coroutine_mixed_fn qmp_dispatch(const QmpCommandList *cmds, QObject *requ
|
|
qobject_ref(args);
|
|
}
|
|
|
|
+ json = qobject_to_json(QOBJECT(args));
|
|
+ if (json) {
|
|
+ if ((strcmp(command, "query-block-jobs") != 0)
|
|
+ && (strcmp(command, "query-migrate") != 0)
|
|
+ && (strcmp(command, "query-blockstats") != 0)
|
|
+ && (strcmp(command, "query-balloon") != 0)
|
|
+ && (strcmp(command, "set_password") != 0)) {
|
|
+ qemu_log("qmp_cmd_name: %s, arguments: %s\n",
|
|
+ command, json->str);
|
|
+ }
|
|
+ g_string_free(json, true);
|
|
+ }
|
|
+
|
|
assert(!(oob && qemu_in_coroutine()));
|
|
assert(monitor_cur() == NULL);
|
|
if (!!(cmd->options & QCO_COROUTINE) == qemu_in_coroutine()) {
|
|
diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c
|
|
index a13db763e5..c885175b66 100644
|
|
--- a/system/qdev-monitor.c
|
|
+++ b/system/qdev-monitor.c
|
|
@@ -36,6 +36,7 @@
|
|
#include "qemu/option.h"
|
|
#include "qemu/qemu-print.h"
|
|
#include "qemu/option_int.h"
|
|
+#include "qemu/log.h"
|
|
#include "sysemu/block-backend.h"
|
|
#include "migration/misc.h"
|
|
#include "migration/migration.h"
|
|
@@ -643,6 +644,7 @@ DeviceState *qdev_device_add_from_qdict(const QDict *opts,
|
|
if (path != NULL) {
|
|
bus = qbus_find(path, errp);
|
|
if (!bus) {
|
|
+ error_setg(errp, "can not find bus for %s", driver);
|
|
return NULL;
|
|
}
|
|
if (!object_dynamic_cast(OBJECT(bus), dc->bus_type)) {
|
|
@@ -715,7 +717,7 @@ DeviceState *qdev_device_add_from_qdict(const QDict *opts,
|
|
if (*errp) {
|
|
goto err_del_dev;
|
|
}
|
|
-
|
|
+ qemu_log("add qdev %s:%s success\n", driver, dev->id ? dev->id : "none");
|
|
if (!qdev_realize(dev, bus, errp)) {
|
|
goto err_del_dev;
|
|
}
|
|
--
|
|
2.27.0
|
|
|