qemu/hw/scsi
Elazar Leibovich e7ebf057e6 hw/scsi/vmw_pvscsi: Remove assertion for kick after reset
When running Ubuntu 3.13.0-65-generic guest, QEMU sometimes crashes
during guest ACPI reset. It crashes on assert(s->rings_info_valid)
in pvscsi_process_io().

Analyzing the crash revealed that it happens when userspace issues
a sync during a reboot syscall.

Below are backtraces we gathered from the guests.

Guest backtrace when issuing PVSCSI_CMD_ADAPTER_RESET:
    pci_device_shutdown
    device_shutdown
    init_pid_ns
    init_pid_ns
    kernel_power_off
    SYSC_reboot

Guest backtrace when issuing PVSCSI_REG_OFFSET_KICK_RW_IO:
    scsi_done
    scsi_dispatch_cmd
    blk_add_timer
    scsi_request_fn
    elv_rb_add
    __blk_run_queue
    queue_unplugged
    blk_flush_plug_list
    blk_finish_plug
    ext4_writepages
    set_next_entity
    do_writepages
    __filemap_fdatawrite_range
    filemap_write_and_wait_range
    ext4_sync_file
    ext4_sync_file
    do_fsync
    sys_fsync

Since QEMU pvscsi should imitate VMware pvscsi device emulation,
we decided to imitate VMware's behavior in this case.

To check VMware behavior, we wrote a kernel module that issues
a reset to the pvscsi device and then issues a kick. We ran it on
VMware ESXi 6.5 and it seems that it simply ignores the kick.
Hence, we decided to ignore the kick as well.

Signed-off-by: Elazar Leibovich <elazar.leibovich@oracle.com>
Signed-off-by: Liran Alon <liran.alon@oracle.com>
Message-Id: <20200315132634.113632-1-liran.alon@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-04-01 19:00:16 +02:00
..
emulation.c
esp-pci.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
esp.c hw/scsi/esp: Remove superfluous semicolon 2020-02-18 20:20:49 +01:00
Kconfig hw/nvram/Kconfig: Add an entry for the NMC93xx EEPROM 2020-01-07 12:08:39 +01:00
lsi53c895a.c scsi: lsi: exit infinite loop while executing script (CVE-2019-12068) 2019-08-20 20:00:52 +02:00
Makefile.objs scsi: express dependencies with Kconfig 2019-03-07 21:45:53 +01:00
megasas.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
mfi.h
mpi.h
mptconfig.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
mptendian.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
mptsas.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
mptsas.h
scsi-bus.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
scsi-disk.c scsi/scsi-disk: Remove redundant statement in scsi_disk_emulate_command() 2020-03-09 15:59:31 +01:00
scsi-generic.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
spapr_vscsi.c hw/scsi/spapr_vscsi: Convert debug fprintf() to trace event 2020-03-17 15:08:50 +11:00
srp.h
trace-events hw/scsi/spapr_vscsi: Convert debug fprintf() to trace event 2020-03-17 15:08:50 +11:00
vhost-scsi-common.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
vhost-scsi.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
vhost-user-scsi.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
viosrp.h hw/scsi/spapr_vscsi: Do not mix SRP IU size with DMA buffer size 2020-03-17 15:08:50 +11:00
virtio-scsi-dataplane.c
virtio-scsi.c virtio: increase virtqueue size for virtio-scsi and virtio-blk 2020-02-22 08:26:47 +00:00
vmw_pvscsi.c hw/scsi/vmw_pvscsi: Remove assertion for kick after reset 2020-04-01 19:00:16 +02:00
vmw_pvscsi.h