Hi Corvin,
Thanks for posting these here.
GPU-Passthrough for bhyve requires a few patches to work properly.
These patches will allow GPU-Passthrough for bhyve.
It will work for dedicated AMD GPUs and integrated Intel GPUs.
Nvidia GPUs are untested.
I have no issue with patches 3/4 and 4/4. However, 1+2/4 switch over
to having EFI do the PCI scan/address assignment rather than accepting
bhyve's probe.
This history here is that tychon@'s initial version of bhyve/EFI had
the scan when it was mandatory in OVMF. That didn't work with passthru
devices, requiring the "Duet" (EFI-over-BIOS) PCI code to be used.
The recent upstreaming of Bhyve/EFI was done prior to the fix allowing
dynamic relocation of pass-thru BARs. With Duet not being available, the
flag allowing EFI to inherit PCI BAR assignment was set
(PcdPciDisableBusEnumeration, as you've found).
While it's now possible to allow EFI to scan/assign PCI BARs, I'd like
to avoid it if possible for 2 reasons:
- assignment policy can stay in bhyve, such as whether to locate
64-bit BARs in the 32-bit region which EFI didn't (doesn't?) allow. Bugs
or corner-cases can be fixed in bhyve without requiring a modification
to upstream EFI.
- there is no need for EFI to perform a slow can via PCI bus
operations, resulting in VM-exits, where bhyve can perform all this in
memory, which can result in faster boot.
Your patch description states:
>For Linux guests, AMD GPUs require that their PCI ROM is processed by
UEFI.
Is it possible to fix this in bhyve ? Can pass-thru ROMs be mapped
just like mmio BARs are ?
later,
Peter.