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
-----------------------------------------------------
end




[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