[oi-dev] system configuration for a working bhyve GPU passthrough

Stephan Althaus Stephan.Althaus at Duedinghausen.eu
Fri Jun 13 11:42:14 UTC 2025


On 6/11/25 11:03, Stephan Althaus via oi-dev wrote:
>
> Hello!
>
>
> I've created a script to get the relevant system parameters around 
> bhyve, to get the corresponding config for each of my tests.
>
> Please let me know if i miss something relevant here!
>
> i call it check_bhyve_config.sh
>
>
> echo "######### grep -v '#' /etc/ppt_aliases"
> grep -v "#" /etc/ppt_aliases | awk NF
> echo "######### grep -v '#' /etc/ppt_matches "
> grep -v "#" /etc/ppt_matches | awk NF
> echo "######### grep -v '#' /etc/mach"
> grep -v "#" /etc/mach | awk NF
> echo "######### grep -v '#' /platform/i86pc/kernel/drv/rootnex.conf"
> grep -v "#" /platform/i86pc/kernel/drv/rootnex.conf | awk NF
> echo "######### apic_mode::print | mdb -k"
> echo apic_mode::print | mdb -k
> echo "######### pptadm list -ao all"
> pptadm list -ao all
> echo "######### /opt/bhyve-tests/tests/vmm/check_iommu  (Openindiana 
> package pkg://openindiana.org/system/bhyve/tests 
> <http://openindiana.org/system/bhyve/tests>)"
> /opt/bhyve-tests/tests/vmm/check_iommu
> echo "######### dmesg | grep -iE '(vmm|ppt|APIC|DMAR|IOMMU|mapp)'"
> grep -iE '(vmm|ppt|APIC|DMAR|IOMMU|mapp)' /var/adm/messages | tail -n 100
>
>
>
> Would you be so kind, and run above script on your machines with a 
> working GPU passthrough configuration, i have no clue why i get "error 
> 43" within my win10 vm. The GPUs are visible as PCI device within 
> Windows, but are not usable.  (with FreeBSD 14.2 host-OS this is 
> working well on my hardware/BIOS combination with both GPUs AMD RX6400 
> and MSI NVidia GT1030).
>
> Thank you!
> Stephan
>
> -------------------------
> output on my machine fpr my first test today:
>
> # ./check_bhyve_config.sh
> ######### grep -v '#' /etc/ppt_aliases
> ppt "pci1002,743f"
> ppt "pci1002,ab28"
> ppt "pci10de,1d01"
> ppt "pci10de,fb8"
> ######### grep -v '#' /etc/ppt_matches
> pciex1da2,e458
> pciex1002,ab28
> pciex10de,1d01
> pciex10de,fb8
> ######### grep -v '#' /etc/mach
> pcplusmp
> apix
> xpv_psm
> ######### grep -v '#' /platform/i86pc/kernel/drv/rootnex.conf
> immu-enable="false";
> immu-intrmap-enable="false";
> ######### apic_mode::print | mdb -k
> 3 (LOCAL_X2APIC)
> ######### pptadm list -ao all
> DEV        VENDOR DEVICE SUBVENDOR SUBDEVICE REV PATH                 
>                         LABEL
> /dev/ppt2  10de   1d01   1462      8c98      a1 
> /pci at 0,0/pci8086,6f04 at 2/display at 0                 NVIDIA Corporation 
> GP108 [GeForce GT 1030]
> /dev/ppt3  10de   fb8    1462      8c98      a1 
> /pci at 0,0/pci8086,6f04 at 2/pci1462,8c98 at 0,1          NVIDIA Corporation 
> GP108 High Definition Audio Controller
> /dev/ppt0  1002   743f   1da2      e458      c7 
> /pci at ff,0/pci8086,6f08 at 3/pci1002,1478 at 0/pci1002,1479 at 0/display at 0 
> Advanced Micro Devices, Inc. [AMD/ATI] Navi 24 [Radeon RX 6400/6500 
> XT/6500M]
> /dev/ppt1  1002   ab28   1002      ab28      0 
>  /pci at ff,0/pci8086,6f08 at 3/pci1002,1478 at 0/pci1002,1479 at 0/pci1002,ab28 at 0,1 
> Advanced Micro Devices, Inc. [AMD/ATI] Navi 21/23 HDMI/DP Audio Controller
> ######### /opt/bhyve-tests/tests/vmm/check_iommu (Openindiana package 
> pkg://openindiana.org/system/bhyve/tests)
> check_iommu     PASS
> ######### dmesg | grep -iE '(vmm|ppt|APIC|DMAR|IOMMU|mapp)'
> Jun 11 10:10:20 smhost genunix: [ID 936769 kern.info] vmm0 is 
> /pseudo/vmm at 0
> Jun 11 10:19:19 smhost pseudo: [ID 129642 kern.info] pseudo-device: 
> vmm_drv_test0
> Jun 11 10:19:19 smhost genunix: [ID 936769 kern.info] vmm_drv_test0 is 
> /pseudo/vmm_drv_test at 0
>
>
>
> _______________________________________________
> oi-dev mailing list
> oi-dev at openindiana.org
> https://openindiana.org/mailman/listinfo/oi-dev

Hello!

My longterm-goal is to have a bhyve Win10 guest with GPU passthrough on 
an OI host.
Passthrough works 'somehow', i see the devices in the guest, but i have 
the win error code 43 within the guest.

With FreeBSD host OS this is working on the hardware/BIOS, so these seem 
to be ok.


! With OI host OS, I have a working ubuntu guest with the nvidia GPU, 
that's promising!


I've tried this and that, to get some knowledge and some details about 
what's happening,
and i now chose an OI guest to maybe get even more details about what 
could be the cause of the windows error.

With OI host OS and OI guest, i have errors on the host, and within the 
guest. (details below)
### OI HOST output of the bhyve executable
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed

### OI GUEST from dmesg
Jun 13 12:07:10 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: BAR1 @ 0x14: BAR is 0 (invalid)
Jun 13 12:07:10 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: nv_attach: nvidia_pci_probe failed

Maybe this has something to do with the 4GB 'barrier' ("Above 4G 
Decoding") ??
# ~max Address 32 Bit (=2^32-1)
  4294967295
# BAR1 Address
0x800000000 <- this is corresponding to what the OI host gives to the 
ubuntu-vm "pci 0000:00:08.0: BAR 1 [mem 0x800000000-0x80fffffff 64bit pref]"


Please give me a hint what i should look at,
  maybe there's a bhyve param or OI-guest or nvidia param i haven't seen??

Thanks!

Regards,
Stephan

================================================================================

################################################################################
### Openindiana-HOST
################################################################################

######### grep -v '#' /etc/ppt_aliases
ppt "pci1002,743f"
ppt "pci1002,ab28"
ppt "pci10de,1d01"
ppt "pci10de,fb8"

######### grep -v '#' /etc/ppt_matches
pciex1da2,e458
pciex1002,ab28
pciex10de,1d01
pciex10de,fb8

######### grep -v '#' /etc/mach
pcplusmp
apix
xpv_psm

######### grep -v '#' /platform/i86pc/kernel/drv/rootnex.conf
immu-enable="false";
immu-intrmap-enable="false";
immu-blacklist=
                 "SMBIOS","Supermicro","X10DRI-T","",
                 "DRIVER", "xhci",
                 "DRIVER", "ehci",
                 "DRIVER", "nvme",
                 ;
immu-dvma-mapping="xlate";
immu-dvma-unity-drivers="igb","ahci","ixgbe","ehci","xhci","nvme","mpt";

######### apic_mode::print | mdb -k
3 (LOCAL_X2APIC)

######### pptadm list -ao all
DEV        VENDOR DEVICE SUBVENDOR SUBDEVICE REV PATH                   
               LABEL
/dev/ppt2  10de   1d01   1462      8c98      a1 
/pci at 0,0/pci8086,6f04 at 2/display at 0                 NVIDIA Corporation 
GP108 [GeForce GT 1030]
/dev/ppt3  10de   fb8    1462      8c98      a1 
/pci at 0,0/pci8086,6f04 at 2/pci1462,8c98 at 0,1          NVIDIA Corporation 
GP108 High Definition Audio Controller
/dev/ppt0  1002   743f   1da2      e458      c7 
/pci at ff,0/pci8086,6f08 at 3/pci1002,1478 at 0/pci1002,1479 at 0/display at 0 
Advanced Micro Devices, Inc. [AMD/ATI] Navi 24 [Radeon RX 6400/6500 
XT/6500M]
/dev/ppt1  1002   ab28   1002      ab28      0 
  /pci at ff,0/pci8086,6f08 at 3/pci1002,1478 at 0/pci1002,1479 at 0/pci1002,ab28 at 0,1 
Advanced Micro Devices, Inc. [AMD/ATI] Navi 21/23 HDMI/DP Audio Controller

######### /opt/bhyve-tests/tests/vmm/check_iommu  (Openindiana package 
pkg://openindiana.org/system/bhyve/tests)
check_iommu     PASS

# /usr/X11/bin/scanpci -v
pci bus 0x0002 cardnum 0x00 function 0x00: vendor 0x10de device 0x1d01
  NVIDIA Corporation GP108 [GeForce GT 1030]
  CardVendor 0x1462 card 0x8c98 (Micro-Star International Co., Ltd. 
[MSI], Card unknown)
   STATUS    0x0010  COMMAND 0x0040
   CLASS     0x03 0x00 0x00  REVISION 0xa1
   BIST      0x00  HEADER 0x80  LATENCY 0x00  CACHE 0x10
   BASE0     0xbe000000 SIZE 16777216  MEM
   BASE1     0x0000383fe0000000 SIZE 268435456  MEM64 PREFETCHABLE
   BASE3     0x0000383ff0000000 SIZE 33554432  MEM64 PREFETCHABLE
   BASE5     0x00006000 SIZE 128  I/O
   MAX_LAT   0x00  MIN_GNT 0x00  INT_PIN 0x01  INT_LINE 0x0b

pci bus 0x0002 cardnum 0x00 function 0x01: vendor 0x10de device 0x0fb8
  NVIDIA Corporation GP108 High Definition Audio Controller
  CardVendor 0x1462 card 0x8c98 (Micro-Star International Co., Ltd. 
[MSI], Card unknown)
   STATUS    0x0010  COMMAND 0x0040
   CLASS     0x04 0x03 0x00  REVISION 0xa1
   BIST      0x00  HEADER 0x80  LATENCY 0x00  CACHE 0x10
   BASE0     0xbf080000 SIZE 16384  MEM
   MAX_LAT   0x00  MIN_GNT 0x00  INT_PIN 0x02  INT_LINE 0x0a

### Openindiana-HOST
# prtconf -vD
             display, instance #2 (driver name: ppt)
                 Driver properties:
                     name='fm-errcb-capable' type=boolean dev=none
                     name='fm-ereport-capable' type=boolean dev=none
                 Hardware properties:
                     name='pcie-aspm-state' type=string items=1
                         value='l1'
                     name='pcie-aspm-support' type=string items=1
                         value='l0s,l1'
                     name='pcie-link-supported-speeds' type=int64 items=3
value=000000009502f900.000000012a05f200.00000001dcd65000
                     name='pcie-link-target-speed' type=int64 items=1
                         value=00000001dcd65000
                     name='pcie-link-maximum-speed' type=int64 items=1
                         value=00000001dcd65000
                     name='pcie-link-current-speed' type=int64 items=1
                         value=00000001dcd65000
                     name='pcie-link-current-width' type=int items=1
                         value=00000004
                     name='pcie-link-maximum-width' type=int items=1
                         value=00000004
                     name='acpi-namespace' type=string items=1
                         value='\_SB_.PCI0.BR2A.D07B'
                     name='assigned-addresses' type=int items=35
value=82020010.00000000.be000000.00000000.01000000.c3020014.0000383f.e0000000.00000000.10000000.c302001c.0000383f.f0000000.00000000.02000000.8102002
4.00000000.00006000.00000000.00000080.a1020000.00000000.000003b0.00000000.0000000c.a1020000.00000000.000003c0.00000000.00000020.a2020000.00000000.000a0000.00000000.00020000
                     name='reg' type=int items=40
value=00020000.00000000.00000000.00000000.00000000.02020010.00000000.00000000.00000000.01000000.43020014.00000000.00000000.00000000.10000000.4302001
c.00000000.00000000.00000000.02000000.01020024.00000000.00000000.00000000.00000080.a1020000.00000000.000003b0.00000000.0000000c.a1020000.00000000.000003c0.00000000.00000020
.a2020000.00000000.000a0000.00000000.00020000
                     name='compatible' type=string items=13
                         value='pciex10de,1d01.1462.8c98.a1' + 
'pciex10de,1d01.1462.8c98' + 'pciex10de,1d01.a1' + 'pciex10de,1d01' + 
'pciexclass,030000' + 'pciexclass,0300'
+ 'pci10de,1d01.1462.8c98.a1' + 'pci10de,1d01.1462.8c98' + 
'pci10de,1d01.a1' + 'pci10de,1d01,p' + 'pci10de,1d01' + 
'pciclass,030000' + 'pciclass,0300'
...

### Openindiana-HOST
# cat testoigui.sh
/usr/sbin/bhyve -U bd60bf59-0ed6-61a1-f0ed-b17e99ada165 -A -H \
-B 
1,manufacturer=OpenIndiana,product=OpenIndianaHVM,version=1.0,serial=69a18a85-c1df-c266-f620-a99a632d3c11,sku=001,family=VirtualMachine 
\
-c 8 -m 16G -w \
-s 31:0,lpc -l bootrom,/usr/share/bhyve/firmware/BHYVE_DEBUG.fd \
-s 0,hostbridge,model=i440fx  \
-s 4:0,nvme,/dev/zvol/rdsk/rpool1/zones/oivm \
-s 6:0,virtio-net-viona,vnic0 \
-s 30:0,fbuf,tcp=0.0.0.0:5905,w=1900,h=900 \
-s 30:1,xhci,tablet \
-S -s 8:0,passthru,/dev/ppt2,rom=/home2/vm/GP108.rom \
-s 8:1,passthru,/dev/ppt3 \
oivm

### Openindiana-HOST
# ./testoigui.sh
fbuf frame buffer base: 7fffa7e00000 [sz 33554432]
rfb0: connection from 192.168.2.63
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed
bhyve: pci_passthru: map_pptdev_mmio failed
bhyve: pci_passthru: unmap_pptdev_mmio failed


################################################################################
### openindiana-vm
################################################################################

# /usr/X11/bin/scanpci -v
pci bus 0x0000 cardnum 0x08 function 0x00: vendor 0x10de device 0x1d01
  NVIDIA Corporation GP108 [GeForce GT 1030]
  CardVendor 0x1462 card 0x8c98 (Micro-Star International Co., Ltd. 
[MSI], Card unknown)
   STATUS    0x0010  COMMAND 0x0047
   CLASS     0x03 0x00 0x00  REVISION 0xa1
   BIST      0x00  HEADER 0x80  LATENCY 0x00  CACHE 0x10
   BASE0     0xc4000000 SIZE 16777216  MEM
   BASE1     0x0000000800000000 SIZE 268435456  MEM64 PREFETCHABLE
   BASE3     0x00000000c0000000 SIZE 33554432  MEM64 PREFETCHABLE
   BASE5     0x00002000 SIZE 128  I/O
   MAX_LAT   0x00  MIN_GNT 0x00  INT_PIN 0x01  INT_LINE 0x0b

pci bus 0x0000 cardnum 0x08 function 0x01: vendor 0x10de device 0x0fb8
  NVIDIA Corporation GP108 High Definition Audio Controller
  CardVendor 0x1462 card 0x8c98 (Micro-Star International Co., Ltd. 
[MSI], Card unknown)
   STATUS    0x0010  COMMAND 0x0047
   CLASS     0x04 0x03 0x00  REVISION 0xa1
   BIST      0x00  HEADER 0x80  LATENCY 0x00  CACHE 0x10
   BASE0     0xc5004000 SIZE 16384  MEM
   MAX_LAT   0x00  MIN_GNT 0x00  INT_PIN 0x02  INT_LINE 0x0a

### openindiana-vm
# lspci -vv
00:08.0 Class 0300: Device 10de:1d01 (rev a1)
         Subsystem: Device 1462:8c98
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- 
ParErr+ Stepping- SERR- FastB2B- DisINTx-
         Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
         Latency: 0, Cache Line Size: 64 bytes
         Interrupt: pin A routed to IRQ 11
         Region 0: Memory at c4000000 (32-bit, non-prefetchable)
         Region 1: Memory at <unassigned> (64-bit, prefetchable)
         Region 2: Memory at <unassigned> (32-bit, prefetchable)
         Region 3: Memory at c0000000 (64-bit, prefetchable)
         Region 5: I/O ports at 2000
         Expansion ROM at bf000000 [disabled]

### openindiana-vm
# prtconf -vD
         display, instance #1 (driver name: nvidia)
             Hardware properties:
                 name='pcie-aspm-state' type=string items=1
                     value='l1'
                 name='pcie-aspm-support' type=string items=1
                     value='l0s,l1'
                 name='pcie-link-supported-speeds' type=int64 items=3
value=000000009502f900.000000012a05f200.00000001dcd65000
                 name='pcie-link-target-speed' type=int64 items=1
                     value=00000001dcd65000
                 name='pcie-link-maximum-speed' type=int64 items=1
                     value=00000001dcd65000
                 name='pcie-link-current-speed' type=int64 items=1
                     value=00000001dcd65000
                 name='pcie-link-current-width' type=int items=1
                     value=00000004
                 name='pcie-link-maximum-width' type=int items=1
                     value=00000004
                 name='assigned-addresses' type=int items=35
value=82004010.00000000.c4000000.00000000.01000000.c3004014.00000008.00000000.00000000.10000000.c300401c.00000000.c0000000.00000000.02000000.81004024.00000000.00002000.00000000.00000080.a1004000.00000000.000003b0.00000000.0000000c.a1004000.00000000.000003c0.00000000.00000020.a2004000.00000000.000a0000.00000000.00020000
                 name='reg' type=int items=40
value=00004000.00000000.00000000.00000000.00000000.02004010.00000000.00000000.00000000.01000000.43004014.00000000.00000000.00000000.10000000.4300401c.00000000.00000000.00000000.02000000.01004024.00000000.00000000.00000000.00000080.a1004000.00000000.000003b0.00000000.0000000c.a1004000.00000000.000003c0.00000000.00000020.a2004000.00000000.000a0000.00000000.00020000
                 name='compatible' type=string items=13
                     value='pciex10de,1d01.1462.8c98.a1' + 
'pciex10de,1d01.1462.8c98' + 'pciex10de,1d01.a1' + 'pciex10de,1d01' + 
'pciexclass,030000' + 'pciexclass,0300' + 'pci10de,1d01.1462.8c98.a1' + 
'pci10de,1d01.1462.8c98' + 'pci10de,1d01.a1' + 'pci10de,1d01,p' + 
'pci10de,1d01' + 'pciclass,030000' + 'pciclass,0300'


### openindiana-vm
# dmesg|grep NOTICE
Jun 13 12:07:10 openindiana-vm iommulib: [ID 321598 kern.info] NOTICE: 
iommulib_nexus_register: rootnex-1: Succesfully registered NEXUS i86pc 
nexops=fffffffffbd39040
Jun 13 12:07:10 openindiana-vm apix: [ID 615120 kern.info] NOTICE: apic: 
local nmi: 255 0x5 1
Jun 13 12:07:10 openindiana-vm apix: [ID 468339 kern.info] NOTICE: apic: 
Using ACPI (MADT) for SMP configuration
Jun 13 12:07:10 openindiana-vm apix: [ID 179576 kern.info] NOTICE: apic: 
Using APIC interrupt routing mode
Jun 13 12:07:10 openindiana-vm blkdev: [ID 643073 kern.info] NOTICE: 
blkdev0: dynamic LUN expansion
Jun 13 12:07:10 openindiana-vm unix: [ID 494986 kern.info] NOTICE: CPU 
power management will not function.
Jun 13 12:07:10 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: BAR1 @ 0x14: BAR is 0 (invalid)
Jun 13 12:07:10 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: nv_attach: nvidia_pci_probe failed
Jun 13 12:07:10 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: BAR1 @ 0x14: BAR is 0 (invalid)
Jun 13 12:07:10 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: nv_attach: nvidia_pci_probe failed
Jun 13 12:07:11 openindiana-vm unix: [ID 494986 kern.info] NOTICE: CPU 
power management will not function.
Jun 13 12:07:11 openindiana-vm unix: [ID 494986 kern.info] NOTICE: CPU 
power management will not function.
Jun 13 12:07:11 openindiana-vm unix: [ID 494986 kern.info] NOTICE: CPU 
power management will not function.
Jun 13 12:07:11 openindiana-vm unix: [ID 494986 kern.info] NOTICE: CPU 
power management will not function.
Jun 13 12:07:11 openindiana-vm unix: [ID 494986 kern.info] NOTICE: CPU 
power management will not function.
Jun 13 12:07:11 openindiana-vm unix: [ID 494986 kern.info] NOTICE: CPU 
power management will not function.
Jun 13 12:07:11 openindiana-vm unix: [ID 494986 kern.info] NOTICE: CPU 
power management will not function.
Jun 13 12:07:11 openindiana-vm unix: [ID 434834 kern.info] NOTICE: 
hma_vmx_init: CPU does not support VMX
Jun 13 12:07:14 openindiana-vm mac: [ID 469746 kern.info] NOTICE: vioif0 
registered
Jun 13 12:07:14 openindiana-vm mac: [ID 435574 kern.info] NOTICE: vioif0 
link up, 1000 Mbps, full duplex
Jun 13 12:07:16 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: BAR1 @ 0x14: BAR is 0 (invalid)
Jun 13 12:07:16 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: nv_attach: nvidia_pci_probe failed
Jun 13 12:07:30 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: BAR1 @ 0x14: BAR is 0 (invalid)
Jun 13 12:07:30 openindiana-vm nvidia: [ID 702911 kern.notice] NOTICE: 
NVRM: nv_attach: nvidia_pci_probe failed

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openindiana.org/pipermail/oi-dev/attachments/20250613/1ce6473f/attachment-0001.html>


More information about the oi-dev mailing list