Pci/virtio_pci.c:248: if (pci_get_revid(dev) != VIRTIO_PCI_ABI_VERSION_MIN & Pci/virtio_pci.c:247:/* if (pci_get_revid(dev) != VIRTIO_PCI_ABI_VERSION) */ Upon further investigation, I did a quick and dirty hack of the source code: Both match the Windows' SCSI INF driver definition: Link x1(x1) speed 2.5(2.5) ASPM disabled(L0s)Īside from the device ID changes, looks like there's a revision (?) change from 0x00 to 0x01. Table in map 0x14, PBA in map 0x14Īnd when boot with Q35 class=0x010000 card=0x11001af4 chip=0x10481af4 rev=0x01 hdr=0x00Ĭap 01 = powerspec 3 supports D0 D3 current D0Ĭap 10 = PCI-Express 2 endpoint max data 128(128) Here's the pciconf for the SCSI when boot with i440FX class=0x010000 card=0x00081af4 chip=0x10041af4 rev=0x00 hdr=0x00Ĭap 11 = MSI-X supports 4 messages, enabled As verification, I've modified the source code to:Īnd rebuilt the kernel. Thus, the controllers are detected since they match the vendor ID but the drivers are not loaded. When the detected device ID is as follow for 12.0-RELEASE when booted with Q35 chipset:Īll those IDs are beyond the defined range. Please correct me if I'm wrong since it's been a very long time since I've dealt with C/C++ :(įile src/sys/dev/virtio/pci/virtio_pci.h has this: As side note, I was able to install just about every guest OS (Fedora, Ubuntu, and Windows 2008 R2 to Windows 2016) successfully utilizing the Q35 chipset and VirtIO HDD+NIC I've attached the /var/log/messages file with verbose logging on boot as requested. When 'pciconf -lvce' shows the VirtIO PCI controllers. Kldload: can't load virtio: module already loaded or in # kldstatģ 2 0xffffffff8160e000 a2e8 opensolaris.ko To confirm that the virtio drivers are loaded, I got # kldload virtio Since the custom kernel did in fact the detect the VirtIO PCI controllers, it lead me to believe that the drivers are not working correctly. If anything, I'd expect the custom built kernel not to detect any VirtIO PCI controllers like the original kernel of the install. I'm hesitant to try QEMU 4.0 since it's not officially supported on Ubuntu (even the current 18.10):Īside from that, it still doesn't explain why the original kernel (r341666) from the install ISO did not detect the VirtIO PCI controllers while the custom built updated from src (r345757) did detect the VirtIO PCI controllers when the diff comparison of src/sys/dev/virtio doesn't show any changes. (In reply to Kubilay Kocak from comment #2) If the HDD is SATA type and NIC is other virtio, everything works. Utilizing the Q35 chipset, FreeBSD would neither boot properly nor install when both HDD and NIC are virtio. The custom kernel show the VirtIO PCI controller in pciconf but any virtio HDD attached does not show up in /dev.ġ) Install Ubuntu 18.04.2 desktop to support virtualization using libvirt, QEMU-KVM, and virt-manager.Ģ) Use virt-manager to create/import a VMĢb) Make sure to check "Customize configuration before install"ģa) In the popup customization window, change the chipset from i440FX to Q35 in the overview.ģb) Select the HDD and change the "Disk bus" in "Advanced options" to VirtIOģc) Select the NIC and change the "Device model" to virtioĤ) Boot from imported HDD or from ISO media to install While the "Controller Virtio SCSI 0" is added as SCSI controller having "VirtIO SCSI" model. FreeBSD detected and loaded the 'sym' SCSI driver. In the screen shot QEMU-KVM_freebsd_virtio_1.png, the "Controller SCSI 1" is added as SCSI controller having "Hypervisor default" model. Src.conf - src.conf used in building kernel r345757. Sysctl.hw_r345757_custom.txt - output of 'sysctl hw' of the kernel r345757 built from updated srcĬustom12 - kernel configuration (copy of GENERIC with unneeded drivers and configs removed) Pciconf_12.0_r345757_custom.txt - output of 'pciconf -lvce' of the kernel r345757 built from updated src Pciconf_12.0_r341666_ori.txt - output of 'pciconf -lvce' of the original kernel r341666 used during install Z_fbsd_q35.xml - Libvirt/QEMU XML configuration for the same VM seen in the screen shot QEMU-KVM_freebsd_virtio_1.png - screen shot of the VM configuration as seen in virt-manager When configured to use Q35 chipset, virtio failed to load properly and any device configured to use virtio would not be detected.Īttachments within zip of data gathered from the same VM: If the VM configuration uses i440FX chipset, everything works as expected. VirtIO to support Q35 for FreeBSD 13-CURRENT VirtIO to support Q35 backported for FreeBSD 11.xĬonsolidated Differences across VirtIO / netmap var/log/messages file as requested with verbose logging during boot
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |