aboutsummaryrefslogtreecommitdiff
path: root/monitor
diff options
context:
space:
mode:
authorKlaus Jensen <k.jensen@samsung.com>2021-06-17 20:55:42 +0200
committerKlaus Jensen <k.jensen@samsung.com>2021-06-29 07:18:10 +0200
commit83d7ed5c570d4c1d5163951b3057cac2ae7da4ff (patch)
treefe21b9f16cfdc19d05f182447bc6f549f5335325 /monitor
parent2b02aabc9d02f9e95946cf639f546bb61f1721b7 (diff)
downloadqemu-83d7ed5c570d4c1d5163951b3057cac2ae7da4ff.zip
qemu-83d7ed5c570d4c1d5163951b3057cac2ae7da4ff.tar.gz
qemu-83d7ed5c570d4c1d5163951b3057cac2ae7da4ff.tar.bz2
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 ca247d35098d ("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 5e9aa92eb1a5 ("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: ca247d35098d ("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>
Diffstat (limited to 'monitor')
0 files changed, 0 insertions, 0 deletions