qemu-e2k/hw
Klaus Jensen 83d7ed5c57 hw/nvme: fix pin-based interrupt behavior (again)
Jakub noticed[1] that, when using pin-based interrupts, the device will
unconditionally deasssert when any CQEs are acknowledged. However, the
pin should not be deasserted if other completion queues still holds
unacknowledged CQEs.

The bug is an artifact of commit ca247d3509 ("hw/block/nvme: fix
pin-based interrupt behavior") which fixed one bug but introduced
another. This is the third time someone tries to fix pin-based
interrupts (see commit 5e9aa92eb1 ("hw/block: Fix pin-based interrupt
behaviour of NVMe"))...

Third time's the charm, so fix it, again, by keeping track of how many
CQs have unacknowledged CQEs and only deassert when all are cleared.

  [1]: <20210610114624.304681-1-jakub.jermar@kernkonzept.com>

Cc: qemu-stable@nongnu.org
Fixes: ca247d3509 ("hw/block/nvme: fix pin-based interrupt behavior")
Reported-by: Jakub Jermář <jakub.jermar@kernkonzept.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Reviewed-by: Keith Busch <kbusch@kernel.org>
2021-06-29 07:18:10 +02:00
..
9pfs docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
acpi hw/acpi: Provide function acpi_ghes_present() 2021-06-21 16:49:37 +01:00
adc docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
alpha docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
arm target-arm queue: 2021-06-16 17:02:30 +01:00
audio hw/audio/sb16: Restrict I/O sampling rate range for command 41h/42h 2021-06-24 11:42:54 +02:00
avr hw/avr/atmega.c: use the avr51 cpu for atmega1280 2021-05-13 19:11:42 +02:00
block hw/block/fdc: Add description to floppy controllers 2021-06-25 08:53:28 -04:00
char hw/char/ibex_uart: Make the register layout private 2021-06-24 05:00:12 -07:00
core hw/nvme: default for namespace EUI-64 2021-06-29 07:16:25 +02:00
cpu
cris
display virtio-gpu: move scanout_id sanity check 2021-06-15 07:16:56 +02:00
dma docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
gpio misc: Correct relative include path 2021-06-05 21:10:42 +02:00
hppa docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
hyperv
i2c docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
i386 hw/block/fdc: Extract ISA floppy controllers to fdc-isa.c 2021-06-25 08:53:28 -04:00
ide docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
input docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
intc hw/intc/armv7m_nvic: Remove stale comment 2021-06-15 16:18:48 +01:00
ipack
ipmi
isa hw/block/fdc: Extract ISA floppy controllers to fdc-isa.c 2021-06-25 08:53:28 -04:00
m68k softmmu/memory: Pass ram_flags to memory_region_init_ram_shared_nomigrate() 2021-06-15 20:27:38 +02:00
mem docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
microblaze
mips hw/block/fdc: Extract SysBus floppy controllers to fdc-sysbus.c 2021-06-25 08:53:28 -04:00
misc softmmu/memory: Pass ram_flags to qemu_ram_alloc_from_fd() 2021-06-15 20:27:38 +02:00
net -----BEGIN PGP SIGNATURE----- 2021-06-04 13:38:49 +01:00
nios2
nubus
nvme hw/nvme: fix pin-based interrupt behavior (again) 2021-06-29 07:18:10 +02:00
nvram docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
openrisc
pci docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
pci-bridge
pci-host docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
pcmcia
ppc ppc/pef.c: initialize cgs->ready in kvmppc_svm_init() 2021-06-03 18:10:31 +10:00
rdma docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
remote multi-process: Initialize variables declared with g_auto* 2021-05-21 15:43:57 +01:00
riscv hw/riscv: OpenTitan: Connect the mtime and mtimecmp timer 2021-06-24 05:00:13 -07:00
rtc docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
rx
s390x s390x/css: Add passthrough IRB 2021-06-21 08:48:21 +02:00
scsi esp: store lun coming from the MESSAGE OUT phase 2021-06-15 17:17:09 +02:00
sd docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
sh4
smbios hw/smbios: support for type 41 (onboard devices extended information) 2021-05-14 10:26:18 -04:00
sparc hw/block/fdc: Extract SysBus floppy controllers to fdc-sysbus.c 2021-06-25 08:53:28 -04:00
sparc64 hw/block/fdc: Extract ISA floppy controllers to fdc-isa.c 2021-06-25 08:53:28 -04:00
ssi Trivial patches pull request 20210503 2021-05-05 13:52:00 +01:00
timer hw/timer: Initial commit of Ibex Timer 2021-06-24 05:00:12 -07:00
tpm docs: fix references to docs/specs/tpm.rst 2021-06-02 06:51:09 +02:00
tricore hw/tricore: Add testdevice for tests in tests/tcg/ 2021-05-18 09:36:21 +01:00
usb usb/dev-mtp: use GDateTime for formatting timestamp for objects 2021-06-14 13:28:50 +01:00
vfio s390x/css: Add passthrough IRB 2021-06-21 08:48:21 +02:00
virtio vhost-vdpa: don't initialize backend_features 2021-06-11 10:30:13 +08:00
watchdog docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
xen docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
xenpv
xtensa
Kconfig hw/nvme: move nvme emulation out of hw/block 2021-05-17 09:19:00 +02:00
meson.build hw/nvme: move nvme emulation out of hw/block 2021-05-17 09:19:00 +02:00