IP Library Granted Patent US 12,020,053
Granted Patent B2
US 12,020,053 · App. 17/215,836 · Granted Jun 25, 2024

Exposing untrusted devices to virtual machines

Inventor: Michael Tsirkin (Lexington, MA)
Assignee: Red Hat, Inc.
G06F9/45558G06F13/4221G06F2009/45579G06F2009/45587
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,020,053
App. No.
17/215,836
Granted
Jun 25, 2024
Kind
B2
Abstract

A method includes receiving, by a hypervisor executing on a computing system, a request to associate an input/output (I/O) device with a virtual machine running on the computing system. The I/O device corresponds to a physical device attached to a first peripheral bus of a first bus type. The method further includes determining whether the I/O device is a trusted I/O device. The method further includes, in response to determining that the I/O device is not a trusted I/O device, exposing the I/O device to the virtual machine via a first virtual bus of a second bus type. Exposing the I/O device to the virtual machine via the first virtual bus causes the virtual machine to initiate a first security protocol associated with the first virtual bus.

Claims (42)

1. A method comprising:

receiving, by a hypervisor executing on a computing system, a request to associate an input/output (I/O) device with a virtual machine running on the computing system, wherein the I/O device corresponds to a physical device attached to a first peripheral bus of a first bus type;

determining whether the I/O device is a trusted I/O device; and

responsive to determining that the I/O device is not a trusted I/O device, exposing the I/O device to the virtual machine via a first virtual bus of a second bus type, thus causing the virtual machine to initiate a first security protocol associated with the first virtual bus.

2. The method of claim 1 , further comprising:

responsive to determining that the I/O device is a trusted I/O device, exposing the I/O device to the virtual machine via a second virtual bus associated with a second type.

3. The method of claim 1 , wherein determining whether the I/O device is a trusted I/O device for exposure to the virtual machine comprises:

obtaining a set of parameters associated with the I/O device; and

determining whether each of the set of parameters associated with the I/O device corresponds to a set of trusted I/O device parameters.

4. The method of claim 3 , wherein the set of parameters associated with the I/O device comprises at least one of an identifier of a manufacturer of the I/O device, an identifier of a vendor associated with the I/O device, an identifier of a geographic location corresponding to the manufacturer of the I/O device, an identifier of a geographic location corresponding to the vendor associated with the I/O device, a device type associated with the I/O device, or a driver type associated with the I/O device.

5. The method of claim 3 , further comprising:

receiving, from a guest operating system (OS) for the virtual machine, one or more of the set of trusted I/O device parameters.

6. The method of claim 1 , wherein the first security protocol comprises one or more security operations corresponding to I/O memory management unit (MMU) protections.

7. The method of claim 1 , wherein the first security protocol comprises one or more security operations corresponding to a bounce buffer at a memory for the computing system.

8. The method of claim 1 , wherein the physical device is attached to a Peripheral Component Interconnect express (PCIe) slot at the computing system, and wherein exposing the I/O device to the virtual machine via the first virtual bus of the second bus type comprises exposing the physical device to the virtual machine as a device attached to a Thunderbolt slot at the computing system.

9. The method of claim 1 , wherein the computing system is a cloud computing system.

10. A system comprising:

a memory device; and

a processor coupled to the memory device, the processor is configured to:

receive a request to associate an input/output (I/O) device with a virtual machine running on a computing system, wherein the I/O device corresponds to a physical device attached to a first peripheral bus of a first bus type;

determine whether the I/O device is a trusted I/O device; and

responsive to determining that the I/O device is not a trusted I/O device, expose the I/O device to the virtual machine via a first virtual bus of a second bus type, thus causing the virtual machine to initiate a first security protocol associated with the first virtual bus.

11. The system of claim 10 , wherein the processor is further configured to:

responsive to determining that the I/O device is a trusted I/O device, expose the I/O device to the virtual machine via a second virtual bus associated with a second type.

12. The system of claim 10 , wherein to determine whether the I/O device is a trusted I/O device for exposure to the virtual machine, the processor is configured to:

obtain a set of parameters associated with the I/O device; and

determine whether each of the set of parameters associated with the I/O device corresponds to a set of trusted I/O device parameters.

13. The system of claim 12 , wherein the set of parameters associated with the I/O device comprises at least one of an identifier of a manufacturer of the I/O device, an identifier of a vendor associated with the I/O device, an identifier of a geographic location corresponding to the manufacturer of the I/O device, an identifier of a geographic location corresponding to the vendor associated with the I/O device, a device type associated with the I/O device, or a driver type associated with the I/O device.

14. The system of claim 12 , wherein the processor is further configured to:

receive, from a guest operating system (OS) for the virtual machine, one or more of the set of trusted I/O device parameters.

15. The system of claim 10 , wherein the first security protocol comprises one or more security operations corresponding to I/O memory management unit (MMU) protections.

16. The system of claim 10 , wherein the first security protocol comprises one or more security operations corresponding to a bounce buffer at a memory for the computing system.

17. A non-transitory computer readable storage medium including instructions that, when executed by a processing device, cause the processing device to:

receive a request to associate an input/output (IO) device with a virtual machine running on a computing system, wherein the I/O device corresponds to a physical device attached to a first peripheral bus of a first bus type;

determine whether the I/O device is a trusted I/O device; and

responsive to determining that the I/O device is not a trusted I/O device, expose the I/O device to the virtual machine via a first virtual bus of a second bus type, thus causing the virtual machine to initiate a first security protocol associated with the first virtual bus.

18. The non-transitory computer readable storage medium of claim 17 , wherein the processing device is further to:

responsive to determining that the I/O device is a trusted I/O device, expose the I/O device to the virtual machine via a second virtual bus associated with a second type.

19. The non-transitory computer readable storage medium of claim 17 , wherein to determine whether the I/O device is a trusted I/O device for exposure to the virtual machine, the processing device is to:

obtain a set of parameters associated with the I/O device; and

determine whether each of the set of parameters associated with the I/O device corresponds to a set of I/O device trusted parameters.

20. The non-transitory computer readable storage medium of claim 19 , wherein the set of parameters associated with the I/O device comprises at least one of an identifier of a manufacturer of the I/O device, an identifier of a vendor associated with the I/O device, an identifier of a geographic location corresponding to the manufacturer of the I/O device, an identifier of a geographic location corresponding to the vendor associated with the I/O device, a device type associated with the I/O device, or a driver type associated with the I/O device.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2021
From: TSIRKIN, MICHAEL
To: RED HAT, INC.
Reel/Frame 055755/0916 →