diff options
Diffstat (limited to 'hw')
-rw-r--r-- | hw/block/fdc.c | 11 | ||||
-rw-r--r-- | hw/intc/xics_kvm.c | 11 | ||||
-rw-r--r-- | hw/net/e1000.c | 8 | ||||
-rw-r--r-- | hw/ppc/spapr_irq.c | 1 | ||||
-rw-r--r-- | hw/riscv/boot.c | 12 | ||||
-rw-r--r-- | hw/scsi/scsi-disk.c | 10 |
6 files changed, 27 insertions, 26 deletions
diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 77af9979de..9b24cb9b85 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -514,6 +514,7 @@ static void floppy_drive_realize(DeviceState *qdev, Error **errp) FloppyDrive *dev = FLOPPY_DRIVE(qdev); FloppyBus *bus = FLOPPY_BUS(qdev->parent_bus); FDrive *drive; + bool read_only; int ret; if (dev->unit == -1) { @@ -542,6 +543,12 @@ static void floppy_drive_realize(DeviceState *qdev, Error **errp) dev->conf.blk = blk_new(qemu_get_aio_context(), 0, BLK_PERM_ALL); ret = blk_attach_dev(dev->conf.blk, qdev); assert(ret == 0); + + /* Don't take write permissions on an empty drive to allow attaching a + * read-only node later */ + read_only = true; + } else { + read_only = !blk_bs(dev->conf.blk) || blk_is_read_only(dev->conf.blk); } blkconf_blocksizes(&dev->conf); @@ -559,9 +566,7 @@ static void floppy_drive_realize(DeviceState *qdev, Error **errp) dev->conf.rerror = BLOCKDEV_ON_ERROR_AUTO; dev->conf.werror = BLOCKDEV_ON_ERROR_AUTO; - if (!blkconf_apply_backend_options(&dev->conf, - blk_is_read_only(dev->conf.blk), - false, errp)) { + if (!blkconf_apply_backend_options(&dev->conf, read_only, false, errp)) { return; } diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c index 2df1f3e92c..65c35f90f9 100644 --- a/hw/intc/xics_kvm.c +++ b/hw/intc/xics_kvm.c @@ -430,17 +430,6 @@ fail: void xics_kvm_disconnect(SpaprMachineState *spapr, Error **errp) { - /* The KVM XICS device is not in use */ - if (kernel_xics_fd == -1) { - return; - } - - if (!kvm_enabled() || !kvm_check_extension(kvm_state, KVM_CAP_IRQ_XICS)) { - error_setg(errp, - "KVM and IRQ_XICS capability must be present for KVM XICS device"); - return; - } - /* * Only on P9 using the XICS-on XIVE KVM device: * diff --git a/hw/net/e1000.c b/hw/net/e1000.c index 1dc1466332..a023ceb27c 100644 --- a/hw/net/e1000.c +++ b/hw/net/e1000.c @@ -1381,11 +1381,6 @@ static int e1000_pre_save(void *opaque) E1000State *s = opaque; NetClientState *nc = qemu_get_queue(s->nic); - /* If the mitigation timer is active, emulate a timeout now. */ - if (s->mit_timer_on) { - e1000_mit_timer(s); - } - /* * If link is down and auto-negotiation is supported and ongoing, * complete auto-negotiation immediately. This allows us to look @@ -1423,7 +1418,8 @@ static int e1000_post_load(void *opaque, int version_id) s->mit_irq_level = false; } s->mit_ide = 0; - s->mit_timer_on = false; + s->mit_timer_on = true; + timer_mod(s->mit_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 1); /* nc.link_down can't be migrated, so infer link_down according * to link status bit in mac_reg[STATUS]. diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index ff3df0bbd8..d07aed8ca9 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -86,6 +86,7 @@ static void spapr_irq_init_kvm(SpaprMachineState *spapr, * emulated mode */ error_prepend(&local_err, "kernel_irqchip allowed but unavailable: "); + error_append_hint(&local_err, "Falling back to kernel-irqchip=off\n"); warn_report_err(local_err); } } diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index 5dee63011b..6b7d322e85 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -26,6 +26,7 @@ #include "hw/riscv/boot.h" #include "hw/boards.h" #include "elf.h" +#include "sysemu/qtest.h" #if defined(TARGET_RISCV32) # define KERNEL_BOOT_ADDRESS 0x80400000 @@ -46,10 +47,13 @@ void riscv_find_and_load_firmware(MachineState *machine, * In the future this defaul will change to loading the prebuilt * OpenSBI firmware. Let's warn the user and then continue. */ - warn_report("No -bios option specified. Not loading a firmware."); - warn_report("This default will change in QEMU 4.3. Please use the " \ - "-bios option to aviod breakages when this happens."); - warn_report("See QEMU's deprecation documentation for details"); + if (!qtest_enabled()) { + warn_report("No -bios option specified. Not loading a firmware."); + warn_report("This default will change in a future QEMU release. " \ + "Please use the -bios option to avoid breakages when "\ + "this happens."); + warn_report("See QEMU's deprecation documentation for details."); + } return; } diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 8e95e3e38d..af3e622dc5 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2318,6 +2318,7 @@ static void scsi_disk_unit_attention_reported(SCSIDevice *dev) static void scsi_realize(SCSIDevice *dev, Error **errp) { SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev); + bool read_only; if (!s->qdev.conf.blk) { error_setg(errp, "drive property not set"); @@ -2351,8 +2352,13 @@ static void scsi_realize(SCSIDevice *dev, Error **errp) return; } } - if (!blkconf_apply_backend_options(&dev->conf, - blk_is_read_only(s->qdev.conf.blk), + + read_only = blk_is_read_only(s->qdev.conf.blk); + if (dev->type == TYPE_ROM) { + read_only = true; + } + + if (!blkconf_apply_backend_options(&dev->conf, read_only, dev->type == TYPE_DISK, errp)) { return; } |