Systems and methods for remote peripheral device control virtualization
A method for processing a function command, the method that includes obtaining, by a device controller intermediary, a function command from a virtual machine, where the function command is associated with a peripheral device, making a first determination that the function command is associated with a remote peripheral device, forwarding the function command to the remote peripheral device, and in response to forwarding the function command, receiving processed data from the remote peripheral device, and providing the processed data to the virtual machine.
1 . A method for processing a function command for a peripheral device, the method comprising:
obtaining, by a device controller intermediary, a function command from a virtual machine, wherein the function command is for function operations to be performed on a peripheral device and wherein the function command comprises function parameters that include properties of the function command, the function operations, and a location of unprocessed data;
making a first determination that a plurality of peripheral devices including at least one remote peripheral device have sufficient resources to perform the function operations of the function command, wherein the at least one remote peripheral device is in a different computing device from the virtual machine and the device controller intermediary;
generating a composite peripheral device using resources of the plurality of peripheral devices to perform the function operations of the function command;
generating, after generating the composite peripheral device, emulated functions for the virtual machine to communicate with the plurality of peripheral devices;
forwarding the function command to the plurality of peripheral devices that make up the composite peripheral device;
in response to forwarding the function command:
receiving processed data from the plurality of peripheral devices, wherein the unprocessed data is processed by the plurality of peripheral devices; and
providing the processed data to the virtual machine using the emulated functions from the function command that presents the processed data as coming from a single peripheral device.
2 . The method of claim 1 , wherein the function command is received at an emulated remote function of the device controller intermediary.
3 . The method of claim 2 , wherein the function command is forwarded to a physical function of the remote peripheral device, wherein the physical function is associated with the emulated remote function.
4 . The method of claim 2 , wherein the function command is forwarded to virtual functions of the plurality of peripheral devices, wherein the virtual functions are associated with the emulated remote function.
5 . The method of claim 2 , wherein the composite peripheral device further comprises emulated virtual functions associated with the plurality of peripheral devices.
6 . The method of claim 5 , wherein the device controller intermediary presents, to the virtual machine, the emulated remote function and the emulated virtual functions as belonging to a same peripheral device.
7 . A non-transitory computer readable medium comprising instructions which, when executed by a processor, enables the processor to perform a method for processing a function command for a peripheral device, the method comprising:
obtaining, by a device controller intermediary, a function command from a virtual machine, wherein the function command is for function operations to be performed on a peripheral device and wherein the function command comprises function parameters that include properties of the function command, the function operations, and a location of unprocessed data;
making a first determination that a plurality of peripheral devices including at least one remote peripheral device have sufficient resources to perform the function operations of the function command, wherein the at least one remote peripheral device is in a different computing device from the virtual machine and the device controller intermediary;
generating a composite peripheral device using resources of the plurality of peripheral devices to perform the function operations of the function command;
generating, after generating the composite peripheral device, emulated functions for the virtual machine to communicate with the plurality of peripheral devices;
forwarding the function command to the plurality of peripheral devices that make up the composite peripheral device;
in response to forwarding the function command:
receiving processed data from the plurality of peripheral devices, wherein the unprocessed data is processed by the plurality of peripheral devices; and
providing the processed data to the virtual machine using the emulated functions from the function command that presents the processed data as coming from a single peripheral device.
8 . The non-transitory computer readable medium of claim 7 , wherein the function command is received at an emulated remote function of the device controller intermediary.
9 . The non-transitory computer readable medium of claim 8 , wherein the function command is forwarded to a physical function of the remote peripheral device, wherein the physical function is associated with the emulated remote function.
10 . The non-transitory computer readable medium of claim 8 , wherein the function command is forwarded to virtual functions of the plurality of peripheral devices, wherein the virtual functions are associated with the emulated remote function.
11 . The non-transitory computer readable medium of claim 8 , wherein the composite peripheral device further comprises emulated virtual functions associated with the plurality of peripheral devices.
12 . The non-transitory computer readable medium of claim 11 , wherein the device controller intermediary presents, to the virtual machine, the emulated remote functions and the emulated virtual function as belonging to a same peripheral device.
13 . A computing device, comprising:
a processor; and
memory storing instructions which, when executed by the processor, enables the processor to perform method for processing a function command for a peripheral device, the method comprising:
obtaining, by a device controller intermediary, a function command from a virtual machine, wherein the function command is for function operations to be performed on a peripheral device and wherein the function command comprises function parameters that include properties of the function command, the function operations, and a location of unprocessed data;
making a first determination that a plurality of peripheral devices including at least one remote peripheral device have sufficient resources to perform the function operations of the function command, wherein the at least one remote peripheral device is in a different computing device from the virtual machine and the device controller intermediary;
generating a composite peripheral device using resources of the plurality of peripheral devices to perform the function operations of the function command;
generating, after generating the composite peripheral device, emulated functions for the virtual machine to communicate with the plurality of peripheral devices;
forwarding the function command to the plurality of peripheral devices that make up the composite peripheral device;
in response to forwarding the function command:
receiving processed data from the plurality of peripheral devices, wherein the unprocessed data is processed by the plurality of peripheral devices; and
providing the processed data to the virtual machine using the emulated functions from the function command that presents the processed data as coming from a single peripheral device.
14 . The computing device of claim 13 , wherein the function command is received at an emulated remote function of the device controller intermediary.
15 . The computing device of claim 14 , wherein the function command is forwarded to a physical function of the remote peripheral device, wherein the physical function is associated with the emulated remote function.
16 . The computing device of claim 14 , wherein the composite peripheral device further comprises emulated virtual functions associated with the plurality of peripheral devices.
17 . The computing device of claim 16 , wherein the device controller intermediary presents, to the virtual machine, the emulated remote function and the emulated virtual functions as belonging to a same peripheral device.