Signature Verification of Field-Programmable Gate Array Programs
US-2018205553-A1 · Jul 19, 2018 · US
US10540506B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10540506-B2 |
| Application number | US-201715405176-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jan 12, 2017 |
| Priority date | Jan 12, 2017 |
| Publication date | Jan 21, 2020 |
| Grant date | Jan 21, 2020 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Techniques for field-programmable gate array (FPGA) virtualization are described herein. In one or more implementations, an FPGA virtualization manager of a host device receives a request from a virtual machine for a device, such as for a compression engine. The FPGA virtualization manager identifies an FPGA program associated with the request and configured to program FPGAs of the host as the requested device. The FPGA virtualization manager also checks the FPGA program against security policies of the host to determine whether to allow the FPGA program to program the FPGAs. If the programming is allowed, the FPGA virtualization manager allocates at least a portion of the FPGAs to the requested device and loads the FPGA program to program the allocated portion of FPGAs. The FPGA virtualization manager generates a virtual device to furnish the functionality of the programmed device to the requesting virtual machine.
Opening claim text (preview).
What is claimed is: 1. A method implemented by a host computing device to provide services to a client device, the host computing device comprising field programmable gate arrays (FPGAs), the method comprising: receiving a request from a virtual machine associated with the client device, the request comprising a unique device identifier, the unique device identifier corresponding to and uniquely identifying a non-virtual physical device that is not available on the host computing device and which is associated with providing one or more hardware functions; selecting, from among device drivers available on the host computing device, according to the unique device identifier, a device driver configured to program the FPGAs with an FPGA program that is configured to provide the hardware functions of the unavailable non-virtual physical device; selecting the FPGA program, which is associated with the unique device identifier, the FPGA program configured to program the FPGAs of the host computing device to provide the one or more hardware functions; determining whether to allow the FPGA program to be loaded to program the FPGAs of the host computing device by checking the FPGA program or the device driver against one or more security policies associated with the host computing device, the one or more security policies comprising criteria to identify allowed or prohibited devices and/or allowed or prohibited device drivers; responsive to a determination that the FPGA program is allowed to be loaded to program the FPGAs, allocating at least a portion of the FPGAs; loading, by the selected device driver, the selected FPGA program to program the allocated portion of the FPGAs to perform the one or more hardware functions of the unavailable uniquely identified non-virtual physical device; generating a virtual device, configured to provide at least one of hardware access paths or software access paths, to relay data between virtual machines and the programmed portion of the FPGAs; and outputting, by the virtual device, output data to the virtual machines. 2. The method of claim 1 , further comprising mapping input and output of the virtual device to respective input and output programmed to the allocated portion of the FPGAs. 3. The method of claim 2 , wherein the virtual device relays the data between the virtual machines and the programmed portion of the FPGAs according to the mapping. 4. The method of claim 1 , further comprising obtaining the FPGA program from storage of the host computing device. 5. The method of claim 1 , wherein the FPGA program is configured to program the FPGAs of the host computing device as the physical device according to a hardware description language (HDL). 6. The method of claim 1 , wherein the determination that the FPGA program is allowed to be loaded to program the FPGAs includes determining that the FPGA program meets the configuration criteria. 7. The method of claim 1 , wherein determining whether to allow the FPGA program to be loaded to program the FPGAs includes checking the FPGA program against the one or more security policies. 8. The method of claim 7 , wherein the one or more security policies specify different levels of security that comprise two or more of a group level, a domain level, and an admin level. 9. The method of claim 1 , further comprising exposing the virtual device to the virtual machines, the exposed virtual device relaying the data between the virtual machines and the programmed portion of the FPGAs to furnish the one or more functions of the device to the virtual machines. 10. The method of claim 9 , wherein at least one of the virtual machines uses the virtual device and is hosted on a different host device. 11. The method of claim 1 , wherein the allocated portion of the FPGAs is programmed as at least one of: an encryption engine; a networking device; a compression engine; or a data storage device. 12. The method of claim 1 , wherein the allocating comprises allocating a portion of one of the FPGAs to the host computing device. 13. The method of claim 1 , wherein the allocating comprises allocating at least a portion of two or more of the FPGAs to the host computing device. 14. A host device to provide services, the host device comprising: a plurality of field-programmable gate arrays (FPGAs) that are programmable to have different hardware functions; a hardware processor; and computer-readable storage hardware having instructions stored thereon that are executable by the hardware processor to implement an FPGA virtualization manager to perform operations comprising: receiving a request from a virtual machine (VM) associated with the client device, the request comprising a device identifier corresponding to and uniquely identifying a non-virtual physical device that is not available from the host device and which is associated providing the hardware functions; based on the device identifier, finding and selecting, among device drivers on the host device, a device driver that is associated with the device identifier, the device driver configured to program the plurality of FPGAs with an FPGA program configured to program the plurality of FPGAs to provide the hardware functions; determining that the FPGA program is allowed to be loaded to program the plurality of FPGAs according to one or more security policies of the host device, the one or more security policies controlling (i) which devices are allowed to have respective programs loaded into the FPGA and/or (ii) which device drivers are allowed to program the FPGAs; responsive to a determination that the FPGA program is allowed to be loaded to program the FPGAs, loading, by the found device driver, the FPGA program to program an allocated portion of the plurality of FPGAs, the FPGA program configuring the allocated portion to have the hardware functions of the unavailable non-virtual physical device; generating a virtual device configured to provide at least one of hardware access paths or software access paths, the generated virtual device configured to furnish the one or more hardware functions of the programmed allocated portion to virtual machines hosted by the host device by relaying data between the virtual machines and the programmed allocated portion; and outputting, by the virtual device, output data to the virtual machines. 15. The host device of claim 14 , the determining that the FPGA program is allowed to be loaded to program the plurality of FPGAs is based on checking the device driver or device identifier against the one or more security policies. 16. The host device of claim 15 , wherein the determining comprises checking a program identifier of the FPGA program against the one or more security policies. 17. The host device of claim 15 , wherein the determining is based, at least in part, on whether a digital signature of the FPGA program indicates that the FPGA program is trusted. 18. The host device of claim 14 , wherein the operations further comprise: determining that a different FPGA program is not allowed to program the FPGAs according to the one or more security policies; and prohibiting the different FPGA program from programming the FPGAs. 19. A method implemented by a host device comprising field-programmable gate arrays (FPGAs), the method comprising: receiving a request from a virtual machine requesting a hardware function furnished by a non-virtual physical device that is not available on the host device, the request comprising a unique device identifier of the device uniquely id
Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS · CPC title
Isolation or security of virtual machine instances · CPC title
Hypervisor-specific management and integration aspects · CPC title
Tools and structures for managing or administering access control systems · CPC title
Cross-Sectional Technologies · mapped topic
Related publications grouped by family.
Answers are generated from the same data shown on this page.