AMD passthru on bhyve_svm branch

Clint Armstrong clint at clintarmstrong.net
Sun Jun 8 02:45:44 UTC 2014


I'm not sure if this is supposed to be fully functional yet, but it
appears to be partially working so there may be a fix for my issue.

I'm running bhyve_svm r267218. One reason to think it's not supposed
to be working yet is I still get this logged during boot:

# dmesg | grep iommu
amd_iommu_init: not implemented

But trying it anyway it appears to almost work. The device shows up
during the boot process, but it hangs 20-30 seconds before giving
"polling failed". I'm having trouble finding out if this is supposed
to work yet or if AMD passthru is not yet fully implemented. Thanks.

# pciconf -vl | grep -A 4 pci0:1:0:0
ppt0 at pci0:1:0:0:        class=0x010700 card=0x30201000 chip=0x00721000
rev=0x03 hdr=0x00
    vendor     = 'LSI Logic / Symbios Logic'
    device     = 'SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]'
    class      = mass storage
    subclass   = SAS

# grep pptdevs /boot/loader.conf
pptdevs="1/0/0"

# bhyveload -m 4G -d FreeBSD-10.0-RELEASE-amd64-bootonly.iso -c stdio vm
[...]

# bhyve -c 2 -m 4G -A -H -P -s 0:0,hostbridge -s 1:0,passthru,1/0/0 -s
2:0,lpc -s 3:0,virtio-blk,FreeBSD-10.0-RELEASE-amd64-bootonly.iso -l
com1,stdio vm
[...]
mps0: <LSI SAS2008> port 0x2000-0x20ff mem
0xc0000000-0xc0003fff,0xc0040000-0xc007ffff irq 18 at device 1.0 on
pci0
mps0: Firmware: 15.00.00.00, Driver: 16.00.00.00-fbsd
mps0: IOCCapabilities:
1285c<ScsiTaskFull,DiagTrace,SnapBuf,EEDP,TransRetry,EventReplay,HostDisc>
mps0: polling failed
mps0: Calling Reinit from mps_request_polled
mps0: Reinitializing controller,


Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x8
fault code              = supervisor write data, page not present
instruction pointer     = 0x20:0xffffffff805d7ed7
stack pointer           = 0x28:0xffffffff817f6260
frame pointer           = 0x28:0xffffffff817f62a0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 0 (swapper)
trap number             = 12
panic: page fault
cpuid = 0
KDB: stack backtrace:
#0 0xffffffff808e7dd0 at kdb_backtrace+0x60
#1 0xffffffff808af8b5 at panic+0x155
#2 0xffffffff80c8e692 at trap_fatal+0x3a2
#3 0xffffffff80c8e969 at trap_pfault+0x2c9
#4 0xffffffff80c8e0f6 at trap+0x5e6
#5 0xffffffff80c75392 at calltrap+0x8
#6 0xffffffff805cb9a9 at mps_reinit+0xf9
#7 0xffffffff805cefbb at mps_request_polled+0xab
#8 0xffffffff805ced43 at mps_update_events+0x133
#9 0xffffffff805cd3a3 at mps_iocfacts_allocate+0x1383
#10 0xffffffff805cd76c at mps_attach+0x28c
#11 0xffffffff805d5d36 at mps_pci_attach+0x196
#12 0xffffffff808df242 at device_attach+0x3a2
#13 0xffffffff808e031d at bus_generic_attach+0x2d
#14 0xffffffff8035e1ff at acpi_pci_attach+0x15f
#15 0xffffffff808df242 at device_attach+0x3a2
#16 0xffffffff808e031d at bus_generic_attach+0x2d
#17 0xffffffff8036024d at acpi_pcib_attach+0x23d
Uptime: 1s


More information about the freebsd-virtualization mailing list