diff options
-rw-r--r-- | hmp.c | 94 | ||||
-rw-r--r-- | hw/s390x/virtio-ccw.c | 6 | ||||
-rw-r--r-- | target-s390x/cpu.h | 11 | ||||
-rw-r--r-- | target-s390x/kvm.c | 5 |
4 files changed, 67 insertions, 49 deletions
@@ -291,62 +291,78 @@ void hmp_info_block(Monitor *mon, const QDict *qdict) if (device && strcmp(device, info->value->device)) { continue; } - monitor_printf(mon, "%s: removable=%d", - info->value->device, info->value->removable); - if (info->value->removable) { - monitor_printf(mon, " locked=%d", info->value->locked); - monitor_printf(mon, " tray-open=%d", info->value->tray_open); + if (info != block_list) { + monitor_printf(mon, "\n"); + } + + monitor_printf(mon, "%s", info->value->device); + if (info->value->has_inserted) { + monitor_printf(mon, ": %s (%s%s%s)\n", + info->value->inserted->file, + info->value->inserted->drv, + info->value->inserted->ro ? ", read-only" : "", + info->value->inserted->encrypted ? ", encrypted" : ""); + } else { + monitor_printf(mon, ": [not inserted]\n"); } - if (info->value->has_io_status) { - monitor_printf(mon, " io-status=%s", + if (info->value->has_io_status && info->value->io_status != BLOCK_DEVICE_IO_STATUS_OK) { + monitor_printf(mon, " I/O status: %s\n", BlockDeviceIoStatus_lookup[info->value->io_status]); } - if (info->value->has_inserted) { - monitor_printf(mon, " file="); - monitor_print_filename(mon, info->value->inserted->file); - - if (info->value->inserted->has_backing_file) { - monitor_printf(mon, " backing_file="); - monitor_print_filename(mon, info->value->inserted->backing_file); - monitor_printf(mon, " backing_file_depth=%" PRId64, - info->value->inserted->backing_file_depth); - } - monitor_printf(mon, " ro=%d drv=%s encrypted=%d", - info->value->inserted->ro, - info->value->inserted->drv, - info->value->inserted->encrypted); + if (info->value->removable) { + monitor_printf(mon, " Removable device: %slocked, tray %s\n", + info->value->locked ? "" : "not ", + info->value->tray_open ? "open" : "closed"); + } - monitor_printf(mon, " bps=%" PRId64 " bps_rd=%" PRId64 - " bps_wr=%" PRId64 " iops=%" PRId64 - " iops_rd=%" PRId64 " iops_wr=%" PRId64, + + if (!info->value->has_inserted) { + continue; + } + + if (info->value->inserted->has_backing_file) { + monitor_printf(mon, + " Backing file: %s " + "(chain depth: %" PRId64 ")\n", + info->value->inserted->backing_file, + info->value->inserted->backing_file_depth); + } + + if (info->value->inserted->bps + || info->value->inserted->bps_rd + || info->value->inserted->bps_wr + || info->value->inserted->iops + || info->value->inserted->iops_rd + || info->value->inserted->iops_wr) + { + monitor_printf(mon, " I/O throttling: bps=%" PRId64 + " bps_rd=%" PRId64 " bps_wr=%" PRId64 + " iops=%" PRId64 " iops_rd=%" PRId64 + " iops_wr=%" PRId64 "\n", info->value->inserted->bps, info->value->inserted->bps_rd, info->value->inserted->bps_wr, info->value->inserted->iops, info->value->inserted->iops_rd, info->value->inserted->iops_wr); + } - if (verbose) { - monitor_printf(mon, " images:\n"); - image_info = info->value->inserted->image; - while (1) { - bdrv_image_info_dump((fprintf_function)monitor_printf, - mon, image_info); - if (image_info->has_backing_image) { - image_info = image_info->backing_image; - } else { - break; - } + if (verbose) { + monitor_printf(mon, "\nImages:\n"); + image_info = info->value->inserted->image; + while (1) { + bdrv_image_info_dump((fprintf_function)monitor_printf, + mon, image_info); + if (image_info->has_backing_image) { + image_info = image_info->backing_image; + } else { + break; } } - } else { - monitor_printf(mon, " [not inserted]"); } - - monitor_printf(mon, "\n"); } qapi_free_BlockInfoList(block_list); diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index faef5ddf57..e7449573fc 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -79,8 +79,7 @@ static int virtio_ccw_set_guest2host_notifier(VirtioCcwDevice *dev, int n, return r; } virtio_queue_set_host_notifier_fd_handler(vq, true, set_handler); - r = s390_assign_subch_ioeventfd(event_notifier_get_fd(notifier), sch_id, - n, assign); + r = s390_assign_subch_ioeventfd(notifier, sch_id, n, assign); if (r < 0) { error_report("%s: unable to assign ioeventfd: %d", __func__, r); virtio_queue_set_host_notifier_fd_handler(vq, false, false); @@ -89,8 +88,7 @@ static int virtio_ccw_set_guest2host_notifier(VirtioCcwDevice *dev, int n, } } else { virtio_queue_set_host_notifier_fd_handler(vq, false, false); - s390_assign_subch_ioeventfd(event_notifier_get_fd(notifier), sch_id, - n, assign); + s390_assign_subch_ioeventfd(notifier, sch_id, n, assign); event_notifier_cleanup(notifier); } return r; diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h index 918c819c64..741c4e4dd1 100644 --- a/target-s390x/cpu.h +++ b/target-s390x/cpu.h @@ -1081,7 +1081,8 @@ void kvm_s390_io_interrupt(S390CPU *cpu, uint16_t subchannel_id, void kvm_s390_crw_mchk(S390CPU *cpu); void kvm_s390_enable_css_support(S390CPU *cpu); int kvm_s390_get_registers_partial(CPUState *cpu); -int kvm_s390_assign_subch_ioeventfd(int fd, uint32_t sch, int vq, bool assign); +int kvm_s390_assign_subch_ioeventfd(EventNotifier *notifier, uint32_t sch, + int vq, bool assign); #else static inline void kvm_s390_io_interrupt(S390CPU *cpu, uint16_t subchannel_id, @@ -1100,7 +1101,8 @@ static inline int kvm_s390_get_registers_partial(CPUState *cpu) { return -ENOSYS; } -static inline int kvm_s390_assign_subch_ioeventfd(int fd, uint32_t sch, int vq, +static inline int kvm_s390_assign_subch_ioeventfd(EventNotifier *notifier, + uint32_t sch, int vq, bool assign) { return -ENOSYS; @@ -1131,11 +1133,12 @@ static inline void s390_crw_mchk(S390CPU *cpu) } } -static inline int s390_assign_subch_ioeventfd(int fd, uint32_t sch_id, int vq, +static inline int s390_assign_subch_ioeventfd(EventNotifier *notifier, + uint32_t sch_id, int vq, bool assign) { if (kvm_enabled()) { - return kvm_s390_assign_subch_ioeventfd(fd, sch_id, vq, assign); + return kvm_s390_assign_subch_ioeventfd(notifier, sch_id, vq, assign); } else { return -ENOSYS; } diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c index b524c35ed2..42f758fc7d 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -934,12 +934,13 @@ void kvm_arch_init_irq_routing(KVMState *s) { } -int kvm_s390_assign_subch_ioeventfd(int fd, uint32_t sch, int vq, bool assign) +int kvm_s390_assign_subch_ioeventfd(EventNotifier *notifier, uint32_t sch, + int vq, bool assign) { struct kvm_ioeventfd kick = { .flags = KVM_IOEVENTFD_FLAG_VIRTIO_CCW_NOTIFY | KVM_IOEVENTFD_FLAG_DATAMATCH, - .fd = fd, + .fd = event_notifier_get_fd(notifier), .datamatch = vq, .addr = sch, .len = 8, |