bhyve PCIe passthrough on AMD Epyc

Kevin Day toasty at dragondata.com
Tue Feb 26 21:32:04 UTC 2019


I'm trying to get PCIe device (video card) passthrough working to a Windows bhyve VM, should this work now?

I have the device blocked off in loader.conf, and added hw.vmm.amdvi.enable="1".  After doing so this is how it appears in pciconf:

ppt0 at pci0:97:0:0:	class=0x030000 card=0x27173842 chip=0x128b10de rev=0xa1 hdr=0x00
    bar   [10] = type Memory, range 32, base 0xe0000000, size 16777216, disabled
    bar   [14] = type Prefetchable Memory, range 64, base 0xfcf0000000, size 134217728, disabled
    bar   [1c] = type Prefetchable Memory, range 64, base 0xfcf8000000, size 33554432, disabled
    bar   [24] = type I/O Port, range 32, base 0x3000, size 128, disabled
    cap 01[60] = powerspec 3  supports D0 D3  current D0
    cap 05[68] = MSI supports 1 message, 64 bit
    cap 10[78] = PCI-Express 2 legacy endpoint max data 256(256) RO NS
                 link x8(x8) speed 5.0(5.0)
    ecap 0002[100] = VC 1 max VC0
    ecap 0004[128] = Power Budgeting 1
    ecap 000b[600] = Vendor 1 ID 1

When trying to attach it to a VM with "-s 9:0,passthru,97/0/0" I get this almost immediately after it starts up:

Assertion failed: (error == 0), function modify_bar_registration, file /usr/src/usr.sbin/bhyve/pci_emul.c, line 504.

Also on the console I'm seeing a lot of messages like:

ivhd0: Error: completion failed tail:0x1c0, head:0x0.
ivhd0: Dump all the commands:
  [CMD0, off:0xff0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD1, off:0x0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD2, off:0x10] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD3, off:0x20] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD4, off:0x30] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD5, off:0x40] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD6, off:0x50] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD7, off:0x60] opcode= 0x2 0x6101 0x0 0x0
  [CMD8, off:0x70] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD9, off:0x80] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD10, off:0x90] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD11, off:0xa0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD12, off:0xb0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD13, off:0xc0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD14, off:0xd0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD15, off:0xe0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD16, off:0xf0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD17, off:0x100] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD18, off:0x110] opcode= 0x2 0x6100 0x0 0x0
  [CMD19, off:0x120] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD20, off:0x130] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD21, off:0x140] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD22, off:0x150] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD23, off:0x160] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD24, off:0x170] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD25, off:0x180] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD26, off:0x190] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD27, off:0x1a0] opcode= 0x1 0x304f1629 0x30 0xa5a5
  [CMD28, off:0x1b0] opcode= 0x1 0x304f1629 0x30 0xa5a5




More information about the freebsd-virtualization mailing list