bhyve GPU passthrough + romfile

From: John Nielsen <lists_at_jnielsen.net>
Date: Sun, 19 Jun 2022 19:15:20 UTC
Hi all-

I was excited to (belatedly) see the work done in D33129 and elsewhere to improve GPU passthrough support with ROM emulation. However I’m unsure how to interpret this comment: "it's only possible to use a ROM when using OVMF with enabled bus enumeration.” Does “OVMF” here refer to the normal tianocore/edk2 UEFI boot rom? How does one enable bus enumeration with that?

I’m trying to pass through an AMD GPU to a Windows 10 machine on bhyve. The GPU in question is the only one in the box, so if I boot both the host and guest via UEFI it is initialized for EFI and works fine when Windows attaches to and initializes it. However (and not surprisingly), when I reboot the VM the GPU goes in to a funky state and the VM doesn’t come up.

The behavior is the same whether or not I have a ‘rom=‘ argument on the passthru device, so I’m assuming that the ROM is not actually being used. I’m further assuming that the aforementioned bus enumeration in the bootrom is the missing piece.

I did try rebuilding edk2-bhyve from the 202205 release. The build succeeded but the behavior was unchanged.

I’d love to get some guidance on this. Thanks!

JN

PS: Is there a known/supported way to get a GPU ROM file from FreeBSD? The one I have I obtained from a Linux host where this GPU was secondary.