Configuration space virtualization
First Claim
Patent Images
1. A computer implemented method for managing communications between a virtual machine and an I/O device, comprising:
- receiving a description of the I/O device, the description indicative of which actions may be performed on the I/O device by a non-privileged virtual machine;
based on said description, constructing a representation of configuration space for the I/O device, the representation being usable by the computer to restrict operations that can be performed on memory locations within said configuration space;
constructing a representation of memory mapped I/O space based on said description, the representation comprising;
a first level of memory mapped I/O space constructed by determining pages of the memory mapped I/O space to be mapped into the virtual machine; and
a second level of memory mapped IO space constructed by determining bits of the memory mapped I/O space to be mapped into the virtual machine as static values; and
in accordance with said representation of configuration space and said representation of memory mapped I/O space, making a determination that a non-privileged virtual machine is attempting an operation on a location within the representation of configuration space or on a location within the representation of memory mapped I/O space;
intercepting the operation; and
permitting, denying, or translating the operation in accordance with the description indicative of actions that may be performed on the I/O device by the non-privileged virtual machine.
2 Assignments
0 Petitions
Accused Products
Abstract
Various aspects are disclosed herein for bounding the behavior of a non-privileged virtual machine that interacts with a device by creating a description of the device which indicates to a privileged authority (1) which operations on the device may have system-wide effects and (2) which operations have effects local to the device. The privileged authority may then permit or deny these actions. The privileged authority may also translate these actions into other actions with benign consequences.
44 Citations
20 Claims
-
1. A computer implemented method for managing communications between a virtual machine and an I/O device, comprising:
-
receiving a description of the I/O device, the description indicative of which actions may be performed on the I/O device by a non-privileged virtual machine; based on said description, constructing a representation of configuration space for the I/O device, the representation being usable by the computer to restrict operations that can be performed on memory locations within said configuration space; constructing a representation of memory mapped I/O space based on said description, the representation comprising; a first level of memory mapped I/O space constructed by determining pages of the memory mapped I/O space to be mapped into the virtual machine; and a second level of memory mapped IO space constructed by determining bits of the memory mapped I/O space to be mapped into the virtual machine as static values; and in accordance with said representation of configuration space and said representation of memory mapped I/O space, making a determination that a non-privileged virtual machine is attempting an operation on a location within the representation of configuration space or on a location within the representation of memory mapped I/O space; intercepting the operation; and permitting, denying, or translating the operation in accordance with the description indicative of actions that may be performed on the I/O device by the non-privileged virtual machine. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A system for managing communications between a virtual machine and a device, comprising:
-
at least one processor; and at least one memory communicatively coupled to said at least one processor, the memory having stored therein computer-executable instructions that, when executed on the processor, cause the processor to perform operations comprising; receiving a description of the device, the description comprising information regarding which operations on the device have system-wide effects and which have effects that are local to the device; based on said description, creating a representation of configuration space for the device, the system being configured to use the representation to restrict operations that can be performed on memory locations within said configuration space; constructing a representation of memory mapped I/O space based on said description, the representation comprising; a first level of memory mapped I/O space constructed by determining pages of the memory mapped I/O space to be mapped into the virtual machine; and a second level of memory mapped I/O space constructed by determining bits of the memory mapped I/O space to be mapped into the virtual machine as static values; in accordance with said representation of configuration space and said representation of memory mapped I/O space, making a determination that a non-privileged virtual machine is attempting an operation on a location within the representation of configuration space or on a location within the representation of memory mapped I/O space; intercepting the operation; and permitting, denying, or translating the operation in accordance with the description. - View Dependent Claims (13, 14)
-
-
15. A computer readable storage medium storing thereon computer executable instructions for controlling access to a device communicatively coupled to a physical machine that hosts virtual machines, comprising instructions for:
-
receiving an installation file for the device, wherein the installation file comprises information regarding which operations on the device have system-wide effects and which have effects that are local to the device; based on said description, constructing at least one map of attributes for the device'"'"'s configuration space, memory mapped I/O space and I/O space, the at least one map comprising a representation of memory mapped I/O space, the representation comprising; a first level of memory mapped I/O space constructed by determining pages of the memory mapped I/O space to be mapped into the virtual machine; and a second level of memory mapped IO space constructed by determining bits of the memory mapped I/O space to be mapped into the virtual machine as static values; the at least one map being usable by a virtualization system to restrict operations that can be performed on memory locations within said configuration space, wherein each page or each bit associated with the at least one map is mapped into said virtual machine and wherein a static page of bits can be provided to a virtual machine as the state of the device; populating the at least one map based on said received installation file; using the at least one map to manage access the device by; making a determination that a non-privileged virtual machine is attempting an operation on a location within the representation of configuration space or on a location within the representation of memory mapped I/O space; intercepting the operation; and permitting, denying, or translating the operation in accordance with the description. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification