⬢ DragonFlyBSD Kernel Audit
DF-4818 / panic.txt
← back to finding ↓ download raw
# 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.