DF-4818 / panic.txt
# DF-4818 — panic captures from the QEMU guest serial console.
#
# NOTE 1: the nvme defect itself (NULL sc->irq[k] -> nexus_setup_intr /
# resource_list_release panic) was NOT forceable on the emulator —
# see VERDICT.md "Trigger analysis". The panics below are the
# *incidental live discovery* in a DIFFERENT driver (virtio_pci),
# reached with the same MSI-pool-pressure setup used to exercise
# nvme's MSI-X error paths. Surfaced for a dedicated audit spawn.
#
# NOTE 2: this proves the audit guest kernel runs INVARIANTS
# (sys/config/X86_64_GENERIC:56), which DF-4818 manifestation (3)
# (pci_setup_msix KASSERT on re-attach after fallback leak) depends on.
panic: MSI-X is not setup yet
cpuid = 0
Trace beginning at frame 0xffffffff817a9990
pci_release_msix_vector_method() at pci_release_msix_vector_method+0x193 0xffffffff808f4193
pci_release_msix_vector_method() at pci_release_msix_vector_method+0x193 0xffffffff808f4193
vtpci_intr_release() at vtpci_intr_release+0xe1 0xffffffff80a726f1
vtnet_attach() at vtnet_attach+0x909 0xffffffff80a70c39
device_doattach() at device_doattach+0x3af 0xffffffff8068d2ff
vtpci_probe_and_attach_child() at vtpci_probe_and_attach_child+0x48 0xffffffff80a72948
Debugger("panic")
CPU0 stopping CPUs: 0x00000002
stopped
Stopped at Debugger+0x7c: movb $0,0xbd77f9(%rip)
db>
# Reproduced on EVERY boot with an exhausted/empty MSI pool:
# hw.ioapic.msi_start=224 (boot-nvme.log, run.2.log)
# hw.ioapic.msi_start=160 with 24 nvme controllers (boot-nvme24.log, run.3.log)
# KASSERT source: sys/bus/pci/pci.c:1588-1590 in pci_release_msix_vector_method,
# called from sys/dev/virtual/virtio/virtio_pci.c vtpci_intr_release() on the
# attach-error path where MSI-X was never (successfully) set up.