Issues with GTX960 on CentOS7 using bhyve PCI passthru (FreeBSD 11-RC2)

Dom misc-freebsd at talk2dom.com
Fri Sep 9 09:20:44 UTC 2016


Hi Peter,

Thanks for getting back to me. Here's the info you requested:

>> [    0.163085] acpi PNP0A03:00: host bridge window
>> [0xd000000000-0xd0100fffff] (ignored, not CPU addressable)
>
>  That one is most likely a bug in bhyve, where the space used for 64-bit
> BAR placement isn't tested against the max physaddr width of the host
> CPU.
>
>  To confirm, would you be able to report on this value on your system ?
>
> # sudo pkg install cpuid
> # cpuid | grep ^80000008
On my Intel i7-4790K CPU:

# cpuid | grep ^80000008
80000008 00003027 00000000 00000000 00000000

> The device has an MSI capability, but the nvidia driver may not use it.
> bhyve PCI passthrough requires the use of MSI/MSI-x interrupts, and
> doesn't support using legacy interrupts.
>
> This could be confirmed from the output of /proc/interrupts when
> booting Linux on the system.
Output of /proc/interrupts:

             CPU0
    0:        137   IO-APIC-edge      timer
    1:          9   IO-APIC-edge      i8042
    4:        965   IO-APIC-edge      serial
    8:          0   IO-APIC-edge      rtc0
    9:          0   IO-APIC-fasteoi   acpi
   12:        138   IO-APIC-edge      i8042
   17:          0   IO-APIC-fasteoi   snd_hda_intel
   24:          0   PCI-MSI-edge      virtio0-config
   25:       8535   PCI-MSI-edge      virtio0-req.0
   26:          0   PCI-MSI-edge      virtio1-config
   27:        123   PCI-MSI-edge      virtio1-input.0
   28:          1   PCI-MSI-edge      virtio1-output.0
NMI:          0   Non-maskable interrupts
LOC:       6050   Local timer interrupts
SPU:          0   Spurious interrupts
PMI:          0   Performance monitoring interrupts
IWI:       2484   IRQ work interrupts
RTR:          0   APIC ICR read retries
RES:          0   Rescheduling interrupts
CAL:          0   Function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
THR:          0   Threshold APIC interrupts
MCE:          0   Machine check exceptions
MCP:          1   Machine check polls
ERR:          0
MIS:          0

I guess the lack of a line containing PCI-MSI-* here indicates the 
nvidia driver isn't using an MSI/MSI-x interrupt?
However, searching the web suggests the Linux nvidia driver does use MSI 
interrupts. This taken from a working non-VM Linux dmesg:

[    4.330536] nvidia 0000:05:00.0: PCI INT A -> GSI 16 (level, low) -> 
IRQ 16
[    4.330542] nvidia 0000:05:00.0: setting latency timer to 64

Source: https://bugzilla.kernel.org/show_bug.cgi?id=20432#c2
(Thread also mentions disabling MSI)

I'll try some Linux boot options and reordering the devices when calling 
bhyve to see if that changes anything.

Thanks,

Dom



More information about the freebsd-virtualization mailing list