When vt(4) falls back to vt_vga, vga_init() passes vd_video_dev to vga_pci_repost(), which expects a vgapci(4) device. The framebuffer driver that set it need not provide one: drm-kmod's linux_fb passes the parent of the DRM parent device, which is vgapci for LinuxKPI PCI drivers but the PCI bus for virtio-gpu, whose DRM parent is the virtio PCI transport. On x86, vga_pci_repost() then calls pci_get_class() on the bus, which fails the accessor's KASSERT under INVARIANTS; without INVARIANTS the class reads as 0 and the repost is skipped. Repost only a vgapci device.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Skipped - Unit
Tests Skipped