Question on PCIe pass through capability in KVM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have searched high and low on the internet, but I have not found an answer. I am hoping someone on this list can help or point me in the right direction.

My company manufactures test equipment for semiconductor companies. A typical tester consists of a test head with multiple different kinds of instruments of our design. Some instruments are designed for high speed digital stimulus and compare. Some for parametric voltage/current sense/force (called VI), some for RF, etc.

The test head can be configured to hold up to 40 of these instruments in just about any combination. The databus connection to the instruments is a PCIe fabric that takes a 16 lane PCIe slot from a tester workstation running Linux (currently Centos 7.2), and through a combination of PCIe switches (such as the Broadcom PLX 8664).

When we first marketed the tester, we used Centos 4, and have progressed up to the latest Centos 7 with our current software release. Unfortunately, our customer base does not migrate easily, and this is something we can't control, so we have to accommodate these customer by continuing to support the older software releases on the older Linux versions. This proves difficult with the advent of newer workstations that can't run with the older Linux versions. While we strive to get commitments from our workstation vendors (iBase, SuperMicro, etc) that these workstations have a minimum 5 year life span, at some point, they become End Of Life and we can no longer obtain them. Yet our customers still need systems running older versions of Linux.

The idea is to use some kind of virtualization to run the latest Linux on a more modern workstation, then run the desired Linux on a guest VM. Since our software requires access to the PCIe devices, we need to use PCIe pass through to the guest VM. Herein lies the problem. While I can successfully pass through our PCIe compliant instruments to the guest VM without problem, I still need to be able to access the PLX PCIe switches, because in some cases, they too provide a vital function in the system. However, the KVM architecture disallows the pass through of bridges and switches to the guest VM. I can understand the bridge/switch aspect, however, these PLX devices are both a switch and an endpoint. Their upstream port has a 256K BAR 0 through which many extra functions are available, including control of virtual switch capability, non-transparent ports, onboard GPIO pins, some even have general purpose DMA engines. These are all accessed via BAR 0.

So my question is, how (any ideas welcome) can I access these BAR resources from within the guest VM? I have full control over the kernel driver (I wrote it) that our software uses to access the instruments, including memory mapping, control of DMA engines on our instruments, etc. so even if I had to modify our driver in some way, that is OK. I could even customize the driver to run something on the VM host to support the guest VM, if I had some starting point on how this might be accomplished.

Thank you for reading this long winded post, but some background is necessary to understand what I am trying to do.

-----------------------------------------------------
Russ Poffenberger | System Architecture Group
Phone:  +1 / 408 / 635-6049
russell.poffenberger@xxxxxxxxxx
Xcerra Corporation, LTX/Credence Division
880 N. McCarthy Blvd, Suite 100
Milpitas, CA 95035, USA
-----------------------------------------------------




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux