From 95b15e49010299902abd2aa65bcc71e4158b7326 Mon Sep 17 00:00:00 2001 From: Liav A Date: Tue, 7 Mar 2023 21:04:39 +0200 Subject: [PATCH] Kernel/VirtIO: Ignore Configurations that have length of zero bytes These configurations are simply invalid. Ignoring those allow us to boot with the virtio-gpu-pci device (in addition to the already supported virtio-vga PCI device). --- Kernel/Bus/VirtIO/Device.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Kernel/Bus/VirtIO/Device.cpp b/Kernel/Bus/VirtIO/Device.cpp index 7f4c1838a9..81cf8f57d2 100644 --- a/Kernel/Bus/VirtIO/Device.cpp +++ b/Kernel/Bus/VirtIO/Device.cpp @@ -113,6 +113,9 @@ UNMAP_AFTER_INIT void Device::initialize() } config.offset = capability.read32(0x8); config.length = capability.read32(0xc); + // NOTE: Configuration length of zero is an invalid configuration that should be ignored. + if (config.length == 0) + continue; dbgln_if(VIRTIO_DEBUG, "{}: Found configuration {}, bar: {}, offset: {}, length: {}", m_class_name, (u32)config.cfg_type, config.bar, config.offset, config.length); if (config.cfg_type == ConfigurationType::Common) m_use_mmio = true;