I'm trying to get PCI passthru of an AMD GPU working, and am seeing
what I think is a problem mapping the device's BAR into the guest. The
host shows:

# pciconf -lbevV pci0:3:0:0
vgapci0@pci0:3:0:0:    class=0x030000 rev=0xc0 hdr=0x00 vendor=0x1002
device=0x7590 subvendor=0x148c subdevice=0x2437
    vendor     = 'Advanced Micro Devices, Inc. [AMD/ATI]'
    device     = 'Navi 44 [Radeon RX 9060 XT]'
    class      = display
    subclass   = VGA
    bar   [10] = type Prefetchable Memory, range 64, base
0x4000000000, size 268435456, enabled
    bar   [18] = type Prefetchable Memory, range 64, base
0x4010000000, size 2097152, enabled
    bar   [20] = type I/O Port, range 32, base 0x6000, size 256, enabled
    bar   [24] = type Memory, range 32, base 0x81100000, size 524288, enabled
  PCI-e errors = Correctable Error Detected
                 Unsupported Request Detected
     Non-fatal = Unsupported Request
     Corrected = Advisory Non-Fatal Error

(yes, a 256 MiB BAR). After starting the Linux guest, bhyve spits out the error:

bhyve: pci_passthru: map_pptdev_mmio failed. I've traced this a bit
and see that vm_map_find returns 3 (KERN_NO_SPACE) with arguments
    off=0, addr=0x800000000, len=2097152, max_addr=0

In the guest, lspci reports
# lspci -s 00:07.0 -v
00:07.0 VGA compatible controller: Advanced Micro Devices, Inc.
[AMD/ATI] Device 7590 (rev c0) (prog-if 00 [VGA controller])
    Subsystem: Tul Corporation / PowerColor Device 2437
    Flags: bus master, fast devsel, latency 0
    Memory at 800000000 (64-bit, prefetchable) [size=256M]
    Memory at 810000000 (64-bit, prefetchable) [size=2M]
    I/O ports at 2000 [size=256]
    Memory at c1000000 (32-bit, non-prefetchable) [size=512K]
    Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]

Has anyone run into something like this before? Is this a limit I'm
bumping into? Suggestions for what to poke next, etc.? TIA!

--chuck

Reply via email to