IP Library Granted Patent US 12,639,096
Granted Patent B2
US 12,639,096 · App. 18/160,731 · Granted May 26, 2026

Systems and methods for remote peripheral device control virtualization

Inventors: William Price Dawkins (Lakeway, TX); John S. Harwood (Boston, MA); Douglas Lang Farley (Round Rock, TX); David Craig Lawson (Richardson, TX); Srinivas Giri Raju Gowda (Fremont, CA); Shawn M. Swanson (Chanhassen, MN); Judith A. Furlong (Natick, MA)
Assignee: Dell Products L.P.
G06F9/45558G06F2009/45579
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,639,096
App. No.
18/160,731
Granted
May 26, 2026
Kind
B2
Abstract

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.

Claims (43)

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.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2023
From: DAWKINS, WILLIAM PRICE; HARWOOD, JOHN S.; FARLEY, DOUGLAS L.; LAWSON, DAVID CRAIG; GOWDA, SRINIVAS GIRI RAJU; SWANSON, SHAWN M.; FURLONG, JUDITH A.
To: DELL PRODUCTS L.P.
Reel/Frame 062557/0276 →
Continuity (1)
Related Publication 20240256319A1 · Aug 1, 2024
References Cited (7)
US 20170289313A1 · Vajravel · 2017 [cited by examiner]
US 20220261266A1 · Huilgol · 2022 [cited by examiner]
US 20220283946A1 · Ng · 2022 [cited by examiner]
US 20230359395A1 · Beygi · 2023 [cited by examiner]
Amit et al., vIOMMU: Efficient IOMMU Emulation 2011 (14 pages). [cited by applicant]
Lim et al., Optimizing Nested Virtualization Performance Using Direct Virtual Hardware, ASPLOS'20, Mar. 16-20, 2020, (18 pages). [cited by applicant]
Virtualization Technology for Directed I/O, Architecture Specification, Jun. 2022 (328 pages). [cited by applicant]