GPU Passthrough on FreeBSD 14.3 (AMD Radeon RX 6900 XT, Windows 10 Pro)
Author: Jonathan Vasquez <jon@xyinn.org>
Last Updated: 2025-08-31-1030
Running: FreeBSD 14.3-RELEASE-p2 GENERIC amd64
pub fn main() !void
This document is a work in progress and is not ready! I'm just collecting all of my notes and experiments here for now. I do have a bhyve VM running on Windows 10 Pro, and I was able to passthrough the GPU, however I can't currently use the GPU for anything. However this the below is an interesting observation:
- I've noticed that no matter what I do, the VM will start with the AMD Radeon RX 6900 XT
GPU in a failed state mentioning
Code 43
. This will always happen even if I reboot the host. However, what I've also noticed is that if you go into Device Manager, and disable the card, and then enable it again, the card will switch to a working state with noCode 43
, and you can see it has been allocated resources if you checke the device's properties' resource tab. However when I try to run some basic benchmarking software, it just fails to detect any DirectX, Audio, or OpenGL stuff.dxdiag
still doesn't show the card either, although it also no longer shows any Code 43 errors in the debug information window towards the bottom of the screen. I'm not sure if it always starting in a failed state is also related to the famous AMD Hardware Reset Bug but it could be related. - Another important thing is that the card will always fail with a
Code 43
if you are using Remote Desktop. It doesn't matter if you manually disable and enable the card when using RDP. If you are using RDP, it will fail 100% of the time. If I disable RDP, and just use the normal VNC, then doing the "disable and renable" workaround mentioned previously will allow the card to start up. You can see the screenshots below:
These experiments are running on the following:
-
Host OS: FreeBSD 14.3-RELEASE-p2 GENERIC amd64
-
Host CPU: AMD Ryzen 9 7950X 16-Core Processor
-
Host Hypervisor: bhyve
-
Bhyve Firmware:
1.0_2
-
Host GPU #1: Integrated. This is used on the host for output:
vgapci0@pci0:19:0:0: class=0x030000 rev=0xc1 hdr=0x00 vendor=0x1002 device=0x164e subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Raphael'
class = display
subclass = VGA
hdac0@pci0:19:0:1: class=0x040300 rev=0x00 hdr=0x00 vendor=0x1002 device=0x1640 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Rembrandt Radeon High Definition Audio Controller'
class = multimedia
subclass = HDA
- Host GPU #2: Dedicated. This is passed into bhyve. It is not used on the host.
ppt0@pci0:3:0:0: class=0x030000 rev=0xc0 hdr=0x00 vendor=0x1002 device=0x73af subvendor=0x1043 subdevice=0x04fe
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Navi 21 [Radeon RX 6900 XT]'
class = display
subclass = VGA
ppt1@pci0:3:0:1: class=0x040300 rev=0x00 hdr=0x00 vendor=0x1002 device=0xab28 subvendor=0x1002 subdevice=0xab28
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Navi 21/23 HDMI/DP Audio Controller'
class = multimedia
subclass = HDA
All options that I could find in the UEFI firmware related to GPU stuff has been enabled. Things like:
IOMMU
- Making sure that the "primary video card" on the host is the Integrated one.
- This is to further steer away the system from trying to use the Dedicated card in any way. However we have further options to ensure this on the FreeBSD side as well.
SR-IOV
. Although this isn't really something we are using for this use case.- The system is running in
UEFI
mode. It is not usingCSM
.
If IOMMU
is properly enabled, you should see the following in your FreeBSD host:
# dmesg | grep IOMMU
ivhd0: <AMD-Vi/IOMMU ivhd with EFR> on acpi0
Install some required packages
pkg install bhyve-firmware
Configuring the system for bhyve, passthrough, etc.
The following settings allow the VM system to be used, allows for IOMMU to work on AMD, and also specifies the PCI devices for our dedicated card so that they aren't attached to the host and allows us to pass it into bhyve later.
NOTE: The PCI values below depend on your machine. Use pciconf -vl
to find
them.
Load the bhyve kernel driver
kldload vmm
Add some configurations to your boot loader config
/boot/loader.conf
:
# Load Bhyve VM Driver
vmm_load="YES"
# Allow AMD-Vi (IOMMU) Passthrough Support
hw.vmm.amdvi.enable="1"
# Tell OS which devices it should ignore (so we can pass them to the VM).
pptdevs="3/0/0 3/0/1"
Create your storage
I'm just going to create a simple flat file for now.
truncate -s 100G disk0.img
Creating the network devices
TAP Devices
This tunnable will allow your TAP devices to switch to the UP
state as
soon as they are created.
Let's first run the following commands:
sysctl net.link.tap.up_on_open=1
ifconfig tap0 create
and now add the following to your configuration so it persists across reboots:
/etc/sysctl.conf
:
# Allow TAP devices to switch to UP state when they are created.
net.link.tap.up_on_open=1
Bridge
This will create a network device for the VM to use, and a bridge so that our host network adapter and the VM network adapter can communicate on the same network.
ifconfig bridge0 create addm ix0 addm tap0
ifconfig bridge0 up
NOTE: Replace ix0
with your host's network interface.
If you want to make these permanent, you can add something like this to your
/etc/rc.conf
:
cloned_interfaces="bridge0 tap0"
ifconfig_bridge0="addm ix0 addm tap0 up"
Now the bridge0
and tap0
interfaces will be created at start up,
and the bridge will be configured so both of these interfaces can communicate
with each other.
Bhyve Script
This is the bhyve script I'm currently using for my experiments. There may be things in here that are not needed for AMD, but I'm still in my experimentation stage. However, I've been slowly eliminating some options as I go.
#!/bin/sh
VM_DIR="$(dirname $(realpath $0))"
VM_NAME="$(basename $VM_DIR)"
cd "$VM_DIR"
bhyve -AHPSw -c sockets=1,cores=8 -m 4G \
-s 0,hostbridge \
-s 1,nvme,disk0.img \
-s 2,virtio-net,tap0 \
-s 3:0,passthru,3/0/0 \
-s 3:1,passthru,3/0/1 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=1024,h=768 \
-s 30,xhci,tablet \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd,fwcfg=qemu \
-l com1,stdio \
$VM_NAME
# Exit the script here and leave some options for debugging more
# ergonomically after the exit line.
exit
# If you want a network device without using virtio, you can use e1000.
# You should install the virtio drivers and use virtio-net instead for
# better performance. You can download the latest stable virtio drivers
# at: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
-s 2,e1000,tap0 \
# Only use this when installing the VM for the first time:
-s 4,ahci-cd,Win10_22H2_English_x64v1_2023.iso \
-s 4,ahci-cd,virtio-win-0.1.271.iso \
# Options to pass the VBIOS and the GPU's Audio Function:
-s 3:0,passthru,3/0/0,rom=vbios_6900.rom \
-s 3:1,passthru,3/0/1 \
# This isn't needed on AMD (only on Intel) but I've been playing
# with these as well:
-o pci.0.31.0.pcireg.vendor=host \
-o pci.0.31.0.pcireg.device=host \
-o pci.0.31.0.pcireg.revid=host \
-o pci.0.31.0.pcireg.subvendor=host \
-o pci.0.31.0.pcireg.subdevice=host \
You'll want to use a VNC client to install Windows.
Extract vBIOS (Not Required for Windows)
The vBIOS is not required
to be extracted nor used in bhyve when using Windows.
However, below I'll put the instructions I used to successfully extract the
ROM from my card. FreeBSD does not support this so the easiest way to do this
is to boot a Linux Live CD and extract it from there. You should try and use a
Linux Live CD with a modern kernel in order to extract this file. Originally I
tried using my Linux Mint 22.1 ISO to extract, but no rom file was shown at
/sys/bus/pci/devices/0000\:03\:00.0/rom
. However, when I booted into a
Fedora 42 Live CD running kernel 6.14.0-63.fc42.x86_64
, the file was
available, and I was able to successfully extract it with the following steps:
root@localhost-live:~# echo 1 > /sys/bus/pci/devices/0000\:03\:00.0/rom
root@localhost-live:~# cat /sys/bus/pci/devices/0000\:03\:00.0/rom > vbios_6900.rom
root@localhost-live:~# echo 0 > /sys/bus/pci/devices/0000\:03\:00.0/rom
This is how the directories looked like for devices: 3/0/0
and 3/0/1
:
root@localhost-live:~# ls /sys/bus/pci/devices/0000\:03\:00.0/
aer_dev_correctable current_link_width local_cpulist reset revision
aer_dev_fatal d3cold_allowed local_cpus reset_method rom
aer_dev_nonfatal device max_link_speed resource subsystem
ari_enabled dma_mask_bits max_link_width resource0 subsystem_device
boot_vga driver_override modalias resource0_resize subsystem_vendor
broken_parity_status enable msi_bus resource0_wc uevent
class firmware_node numa_node resource2 vendor
config iommu power resource2_resize waiting_for_supplier
consistent_dma_mask_bits iommu_group power_state resource2_wc
consumer:pci:0000:03:00.1 irq remove resource4
current_link_speed link rescan resource5
root@localhost-live:~# ls /sys/bus/pci/devices/0000\:03\:00.1/
aer_dev_correctable current_link_width iommu msi_bus revision
aer_dev_fatal d3cold_allowed iommu_group msi_irqs sound
aer_dev_nonfatal device irq numa_node subsystem
ari_enabled dma_mask_bits link power subsystem_device
broken_parity_status driver local_cpulist power_state subsystem_vendor
class driver_override local_cpus remove supplier:pci:0000:03:00.0
config enable max_link_speed rescan uevent
consistent_dma_mask_bits firmware_node max_link_width resource vendor
current_link_speed hdaudioC0D0 modalias resource0
I was also able to extract the ROM from within the Windows VM inside of bhyve.
You probably want to do it outside but it worked for me and gave me a ROM file
with the same hash and file size as the amdvbflash
dump. You can also use
the amdvbflash utility that apparently
has been taking down from some other github repos. I also did notice that the file
sizes and contents of the vbios file between the direct Linux extract and the
amdvbflash/GPU-Z versions were different. I just did a basic analysis of the file sizes
and some of the hex contents between both files, and the files start off with the
same hex information, but they eventually diverge in terms of both memory addresses
mentioned, and contents as the file progresses. For example:
SHA1: amdvbflash Extracted ROM: 517e09d7ac6be5da0b0fac7d09f782a3c9494343
File Size: 1.0M
SHA1: GPU-Z Extracted ROM: 517e09d7ac6be5da0b0fac7d09f782a3c9494343
File Size: 1.0M
SHA1: Direct Linux Extracted ROM: abbdfd11c246f570839fa7ad78186dcb12408595
File Size: 119K
It also seems TechPowerUp has a public BIOS collection, but you probably should still dump it directly from your current card for best results since there may be incompatibilities or weirdness if you mix them up. I also would not recommend flashing the vBIOS since you may end up bricking your card.
Additional Remarks
- Only use 1 CPU / 1 Core during the windows installation. You can adjust afterwards.
- If I use the
-A
flag for bhyve's ACPI tables, I get 4 COM devices, however, they are all broken withError 12
. I also getCode 43
on the GPU side (not directly related). If I remove the-A
flag, the COM errors go away and I get 2 COM devices, however the GPU then switches toError 12
and complains that there aren't enough resources for it and that I must free up some other devices.
pciconf -vl
hostb0@pci0:0:0:0: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14d8 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Root Complex'
class = bridge
subclass = HOST-PCI
amdviiommu0@pci0:0:0:2: class=0x080600 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14d9 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge IOMMU'
class = base peripheral
subclass = IOMMU
hostb1@pci0:0:1:0: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14da subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Dummy Host Bridge'
class = bridge
subclass = HOST-PCI
pcib1@pci0:0:1:1: class=0x060400 rev=0x00 hdr=0x01 vendor=0x1022 device=0x14db subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge GPP Bridge'
class = bridge
subclass = PCI-PCI
pcib4@pci0:0:1:2: class=0x060400 rev=0x00 hdr=0x01 vendor=0x1022 device=0x14db subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge GPP Bridge'
class = bridge
subclass = PCI-PCI
hostb2@pci0:0:2:0: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14da subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Dummy Host Bridge'
class = bridge
subclass = HOST-PCI
pcib5@pci0:0:2:1: class=0x060400 rev=0x00 hdr=0x01 vendor=0x1022 device=0x14db subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge GPP Bridge'
class = bridge
subclass = PCI-PCI
pcib17@pci0:0:2:2: class=0x060400 rev=0x00 hdr=0x01 vendor=0x1022 device=0x14db subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge GPP Bridge'
class = bridge
subclass = PCI-PCI
hostb3@pci0:0:3:0: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14da subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Dummy Host Bridge'
class = bridge
subclass = HOST-PCI
hostb4@pci0:0:4:0: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14da subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Dummy Host Bridge'
class = bridge
subclass = HOST-PCI
hostb5@pci0:0:8:0: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14da subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Dummy Host Bridge'
class = bridge
subclass = HOST-PCI
pcib18@pci0:0:8:1: class=0x060400 rev=0x00 hdr=0x01 vendor=0x1022 device=0x14dd subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A]'
class = bridge
subclass = PCI-PCI
pcib19@pci0:0:8:3: class=0x060400 rev=0x00 hdr=0x01 vendor=0x1022 device=0x14dd subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A]'
class = bridge
subclass = PCI-PCI
none0@pci0:0:20:0: class=0x0c0500 rev=0x71 hdr=0x00 vendor=0x1022 device=0x790b subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'FCH SMBus Controller'
class = serial bus
subclass = SMBus
isab0@pci0:0:20:3: class=0x060100 rev=0x51 hdr=0x00 vendor=0x1022 device=0x790e subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'FCH LPC Bridge'
class = bridge
subclass = PCI-ISA
hostb6@pci0:0:24:0: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14e0 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Data Fabric; Function 0'
class = bridge
subclass = HOST-PCI
hostb7@pci0:0:24:1: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14e1 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Data Fabric; Function 1'
class = bridge
subclass = HOST-PCI
hostb8@pci0:0:24:2: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14e2 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Data Fabric; Function 2'
class = bridge
subclass = HOST-PCI
hostb9@pci0:0:24:3: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14e3 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Data Fabric; Function 3'
class = bridge
subclass = HOST-PCI
hostb10@pci0:0:24:4: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14e4 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Data Fabric; Function 4'
class = bridge
subclass = HOST-PCI
hostb11@pci0:0:24:5: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14e5 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Data Fabric; Function 5'
class = bridge
subclass = HOST-PCI
hostb12@pci0:0:24:6: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14e6 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Data Fabric; Function 6'
class = bridge
subclass = HOST-PCI
hostb13@pci0:0:24:7: class=0x060000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x14e7 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge Data Fabric; Function 7'
class = bridge
subclass = HOST-PCI
pcib2@pci0:1:0:0: class=0x060400 rev=0xc0 hdr=0x01 vendor=0x1002 device=0x1478 subvendor=0x0000 subdevice=0x0000
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Navi 10 XL Upstream Port of PCI Express Switch'
class = bridge
subclass = PCI-PCI
pcib3@pci0:2:0:0: class=0x060400 rev=0x00 hdr=0x01 vendor=0x1002 device=0x1479 subvendor=0x1002 subdevice=0x1479
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Navi 10 XL Downstream Port of PCI Express Switch'
class = bridge
subclass = PCI-PCI
ppt0@pci0:3:0:0: class=0x030000 rev=0xc0 hdr=0x00 vendor=0x1002 device=0x73af subvendor=0x1043 subdevice=0x04fe
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Navi 21 [Radeon RX 6900 XT]'
class = display
subclass = VGA
ppt1@pci0:3:0:1: class=0x040300 rev=0x00 hdr=0x00 vendor=0x1002 device=0xab28 subvendor=0x1002 subdevice=0xab28
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Navi 21/23 HDMI/DP Audio Controller'
class = multimedia
subclass = HDA
nvme0@pci0:4:0:0: class=0x010802 rev=0x00 hdr=0x00 vendor=0x144d device=0xa80a subvendor=0x144d subdevice=0xa801
vendor = 'Samsung Electronics Co Ltd'
device = 'NVMe SSD Controller PM9A1/PM9A3/980PRO'
class = mass storage
subclass = NVM
pcib6@pci0:5:0:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f4 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Upstream Port'
class = bridge
subclass = PCI-PCI
pcib7@pci0:6:0:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
pcib8@pci0:6:4:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
pcib9@pci0:6:8:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
pcib15@pci0:6:12:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
pcib16@pci0:6:13:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
pcib10@pci0:9:0:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f4 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Upstream Port'
class = bridge
subclass = PCI-PCI
pcib11@pci0:10:0:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
pcib12@pci0:10:8:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
pcib13@pci0:10:12:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
pcib14@pci0:10:13:0: class=0x060400 rev=0x01 hdr=0x01 vendor=0x1022 device=0x43f5 subvendor=0x1b21 subdevice=0x3328
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset PCIe Switch Downstream Port'
class = bridge
subclass = PCI-PCI
ix0@pci0:11:0:0: class=0x020000 rev=0x01 hdr=0x00 vendor=0x8086 device=0x1557 subvendor=0x1dcf subdevice=0x0317
vendor = 'Intel Corporation'
device = '82599 10 Gigabit Network Connection'
class = network
subclass = ethernet
xhci0@pci0:14:0:0: class=0x0c0330 rev=0x01 hdr=0x00 vendor=0x1022 device=0x43f7 subvendor=0x1b21 subdevice=0x1142
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset USB 3.2 Controller'
class = serial bus
subclass = USB
ahci0@pci0:15:0:0: class=0x010601 rev=0x01 hdr=0x00 vendor=0x1022 device=0x43f6 subvendor=0x1b21 subdevice=0x1062
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset SATA Controller'
class = mass storage
subclass = SATA
xhci1@pci0:16:0:0: class=0x0c0330 rev=0x01 hdr=0x00 vendor=0x1022 device=0x43f7 subvendor=0x1b21 subdevice=0x1142
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset USB 3.2 Controller'
class = serial bus
subclass = USB
ahci1@pci0:17:0:0: class=0x010601 rev=0x01 hdr=0x00 vendor=0x1022 device=0x43f6 subvendor=0x1b21 subdevice=0x1062
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = '600 Series Chipset SATA Controller'
class = mass storage
subclass = SATA
nvme1@pci0:18:0:0: class=0x010802 rev=0x00 hdr=0x00 vendor=0x144d device=0xa80a subvendor=0x144d subdevice=0xa801
vendor = 'Samsung Electronics Co Ltd'
device = 'NVMe SSD Controller PM9A1/PM9A3/980PRO'
class = mass storage
subclass = NVM
vgapci0@pci0:19:0:0: class=0x030000 rev=0xc1 hdr=0x00 vendor=0x1002 device=0x164e subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Raphael'
class = display
subclass = VGA
hdac0@pci0:19:0:1: class=0x040300 rev=0x00 hdr=0x00 vendor=0x1002 device=0x1640 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD/ATI]'
device = 'Rembrandt Radeon High Definition Audio Controller'
class = multimedia
subclass = HDA
none1@pci0:19:0:2: class=0x108000 rev=0x00 hdr=0x00 vendor=0x1022 device=0x1649 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Family 19h PSP/CCP'
class = encrypt/decrypt
xhci2@pci0:19:0:3: class=0x0c0330 rev=0x00 hdr=0x00 vendor=0x1022 device=0x15b6 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge USB 3.1 xHCI'
class = serial bus
subclass = USB
xhci3@pci0:19:0:4: class=0x0c0330 rev=0x00 hdr=0x00 vendor=0x1022 device=0x15b7 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge USB 3.1 xHCI'
class = serial bus
subclass = USB
xhci4@pci0:20:0:0: class=0x0c0330 rev=0x00 hdr=0x00 vendor=0x1022 device=0x15b8 subvendor=0x1043 subdevice=0x8877
vendor = 'Advanced Micro Devices, Inc. [AMD]'
device = 'Raphael/Granite Ridge USB 2.0 xHCI'
class = serial bus
subclass = USB
References
- https://wiki.freebsd.org/bhyve
- https://wiki.freebsd.org/bhyve/pci_passthru
- https://docs.freebsd.org/en/books/handbook/virtualization/#virtualization-host-bhyve
- https://forums.freebsd.org/threads/a-solid-howto-with-bhyve-on-freebsd-14-and-windows-11.92236/
- GPU passthrough with bhyve - Corvin Köhne - EuroBSDcon 2023
- November 2021: FreeBSD Vendor Summit: GPU and TPM2 Passthrough with bhyve, Beckoff
- https://forums.freebsd.org/threads/experience-from-bhyve-freebsd-14-1-gpu-passthrough-with-windows-10-guest.94118/
- https://wiki.freebsd.org/bhyve/Windows
- https://www.ateamsystems.com/tech-blog/howto-windows-10-bhyve-w-freebsd-11/
- https://github.com/isc30/ryzen-gpu-passthrough-proxmox
- https://freebsdfoundation.org/wp-content/uploads/2023/05/a66452da2b483e5e92bde6533b7236c4d11382eb-1-1.pdf
- https://curtisshoward.com/post/fixing-amd-gpu-passthrough-reset-issues-in-windows/