Skip to content

PCI Passthru on FreeBSD (bhyve)

This log documents my successful implementations of hardware PCI passthru using the FreeBSD kernel and the bhyve hypervisor. These configurations represent pragmatic, architectural workarounds implemented to bypass hardware driver limitations and unlock raw GPU performance.

Case Study 1: The Network Driver Handoff (Arch Linux Guest)

When production hardware includes a network interface card completely unsupported by native FreeBSD driver trees, a creative infrastructure routing loop can bridge the gap.

The Architecture

  1. Isolation: I isolated the physical PCI slot holding the un-supported network card under FreeBSD using ppt.
  2. Passthru: Passed the raw PCI device directly into a lightweight Arch Linux virtual machine running inside bhyve.
  3. Driver Loading: Arch Linux natively initialized the card using its modern Linux kernel drivers, establishing a clean hardware link.
  4. Reverse Routing: Configured a private virtual network switch between the guest and host, allowing the Arch Linux VM to route the active internet connection back to the FreeBSD host, successfully granting the entire machine internet access.

Case Study 2: Headless Compute Passthru for Blender (Ubuntu Guest)

To maximize rendering capabilities without leaving the stability of a FreeBSD host environment, I successfully passed a dedicated graphics card through to an Ubuntu Linux VM.

  • Objective: Bypassing FreeBSD's compute layer restrictions to feed raw GPU cycles directly into heavy multi-threaded render pipelines.
  • Outcome: The Ubuntu environment successfully claimed the hardware, unlocking optimal rendering processing loops when calculating complex scenes like the Lone Monk mesh.

Next entries will detail the exact /boot/loader.conf parameters and bhyve launch scripts required to bind these devices safely.