# Patent

## Title
Virtualized device control in computer systems

## Abstract

Virtual device control in a computer system is described. Examples include: obtaining a device configuration policy from firmware in the computer system, the device configuration policy defining global access permissions to at least one embedded device in the computer system applied at boot time. Obtaining a virtual device configuration policy established for at least one of a selected user or a selected virtual machine (VM), the virtual device configuration policy defining additional access permissions to the at least one embedded device. Establishing a virtual hardware definition for an instance of the selected VM executing on the computer system based on the global access permissions and the additional access permissions.

## Background
CROSS-REFERENCE TO RELATED APPLICATION
This application is a U.S. National Stage Application of and claims priority to International Patent Application No. PCT/US2011/054110, filed on Sep. 30, 2011, and entitled “VIRTUALIZED DEVICE CONTROL IN COMPUTER SYSTEMS,” which is hereby incorporated by reference in its entirety.
BACKGROUND
Computer systems, such as desktop computers, notebook computers, and the like, can include a variety of peripheral devices embedded therein (“embedded devices”). Examples of embedded devices include a network interface card (NIC), a camera, a modem, a microphone, speakers, various input/output (IO) interfaces (serial, parallel, universal serial bus (USB), etc.), wireless radios, and the like. Computer systems can also include embedded device control mechanisms to allow embedded devices to be selectively enabled or disabled. These control mechanisms can be useful in various environments, such as enterprise environments, where there are requirements that some embedded devices be disabled for various reasons (e.g., data security, lower support burden, etc.). The particular embedded devices that need to be disabled can vary from enterprise to enterprise, as well as from user to user within each enterprise.



BRIEF DESCRIPTION OF THE DRAWINGS
Some embodiments of the invention are described with respect to the following figures:
FIG. 1 is a block diagram of a computer system according to an example implementation;
FIG. 2 is a flow diagram of a method of virtual device control in a computer system according to an example implementation; and
FIG. 3 is a block diagram depicting a computer according to an example implementation.



DETAILED DESCRIPTION
FIG. 1 is a block diagram of a computer system 100 according to an example implementation. The computer system 100 includes physical hardware 102 and a hypervisor 104. The computer system 100 can be implemented as any type of desktop computer, mobile computer, or the like. The physical hardware 102 includes a memory to store firmware (“firmware 106”), a processor 122, and at least one embedded device (“embedded device(s) 108”). The physical hardware 102 can include various other devices 124, such as memory, cache, power supplies, clock circuits, data registers, IO circuits, and the like. The embedded device(s) 108 can include various devices peripheral to the processor 122, such as wireless interfaces (e.g., IEEE 802.11, BLUETOOTH, etc.), network interfaces, imaging devices, audio devices, modems, serial ports, parallel ports, memory readers, universal serial bus (USB) ports, FIREWIRE ports, and like type peripheral devices. The firmware 106 can be implemented using non-volatile memory, such as electronically erasable programmable read only memory (EEPROM), FLASH memory, or the like. The processor 108 can include one or more of any type of microprocessor.
The firmware 106 can include boot program code 126 that is executed by the processor 122 upon power-up or reset of the physical hardware 102 (e.g., basic input/output system (BIOS), unified extensible firmware interface (UEFI), or like type firmware interface). The firmware 106 can further include a device configuration policy that defines access permissions to the embedded device(s) 108 for the physical hardware 102 (referred to as “global policy 110”). In an example, the global policy 110 can be implemented by the boot program code 126 or using separate stand-alone program code stored in the firmware 106 and executable by the processor 122. The access permissions defined in the global policy 110 are “global access permissions” for the embedded device(s) 108. In general, the global access permissions control access to the embedded device(s) 108 in the physical hardware 102. The global access permissions can include, for example, whether device(s) are enabled or disabled at power-up or reset of the physical hardware 102 (“boot time”). As described further below, the global access permissions can also include whether access to the device(s) can be modified by the hypervisor 104, and whether the device(s) are visible or hidden from the hypervisor 104. The global access permissions are discussed further below. The global access permissions defined by the global policy 110 can be implemented at boot time.
Elements of functionality of the hypervisor 104 can be provided through execution of machine-readable instructions by the physical hardware 102 (e.g., using the processor 122). In general, the hypervisor 104 provides hardware virtualization for one or more virtual machines. The hypervisor 104 includes at least one virtual machine (“virtual machine(s) 112”), at least one defined user (“user(s) 114”), a configuration component 116, and at least one device model component (“device model component(s) 120”). Each of the virtual machine(s) 112 can include a software implementation of a machine (e.g., computer) that includes an operating system (sometimes referred to as a “guest operating system”). When a virtual machine 112 is booted, the hypervisor 104 manages an instance of the virtual machine (“virtual machine instance”) for use by one or more of the user(s) 114.
The configuration component 116 defines additional access permissions for the embedded device(s) 108 in a virtual device configuration policy (“policy for device access control (PDAC) 118”). The PDAC 118 can define access permissions for the user(s) 114 and/or the VM(s) 112. In an example, the PDAC 118 is subordinate to the global policy 110 (i.e., permissions defined in the global policy can take precedence over permissions defined in the PDAC 118 if so configured). For example, the global policy 110 can define whether access to the embedded device(s) 108 can be modified by the hypervisor 104. If the global policy 110 prevents changes to access of a particular embedded device, then any permission defined in the PDAC 118 for that particular device will not be effective. If the global policy 110 allows changes to access of a particular embedded device, then permissions defined in the PDAC 118 can affect access to that device (e.g., the PDAC 118 can change the access permission defined in the global policy 110). In some examples, the global policy 110 can make its access permissions visible or invisible to the hypervisor 104 and thus to the configuration component 116. If access permissions to device(s) are invisible, then the PDAC 118 does not have permissions established for those device(s).
In an example, the PDAC 118 can include a user device configuration policy (“user policy”) and a VM device configuration policy (“VM policy”). The user policy can define access permissions (“user access permissions”) to the embedded device(s) 108 for each of the user(s) 114. The VM policy can define access permissions (“VM access permissions”) to the embedded device(s) 108 for each of the VM(s) 112. In an example, the VM access permissions have priority over the user access permissions if so configured (the global access permissions in the global policy 110 have highest priority).
For example, consider an embedded device A. The access permissions in the global policy 110 can be defined such that the hypervisor 104 is allowed to change access to embedded device A, and that embedded device A is enabled at boot time. The access permissions in the PDAC 118 can be defined such that embedded device A is enabled for VM 1, but disabled for user X. While embedded device A is enabled for other user(s) of VM 1, embedded device A will be disabled for user X. The access permissions in the PDAC 118 can be defined such that embedded device A is disabled for VM 2 (since the global policy 110 allowed the change). In an example, no user access permission can allow access to embedded device A in VM 2, since embedded device A is disabled in VM 2 in general (for all users).
In another example, access permissions in the global policy 110 can be defined such that the hypervisor 104 does not permit changes to access of embedded device B, and that embedded device B is disabled. Thus, no access permissions in the PDAC 118 can enable embedded device B for any VM and/or user.
In an example, the configuration component 116 includes a user interface. One or more of the user(s) 114 can have access to the configuration component 116 and employ the user interface to establish the PDAC 118. In an example, the configuration component 116 can be accessible from instances of the VM(s) 112.
The device model component(s) 120 provide an interface between the physical hardware 102 and the VM(s) 112. The device model component(s) 120 can include, for example, virtual BIOS, virtual device models for individual devices, and the like. The device model component(s) 120 establish a virtual hardware definition for each instance of the VM(s) 112 based on the global policy 110 and the PDAC 118. The virtual hardware definition models or otherwise provides access to only those embedded devices enabled by a concatenation of the global policy 110 and the PDAC 118. Thus, the virtual hardware exposed to each of the VM(s) 112 can be customized for each instance of the VM(s) 112.
Accordingly, policy driven configuration can be provided in the domain of the hypervisor 104 that allows for extension of embedded device control into the VMs 112. The embedded device control can be applied to each instance of the VMs 112 through customized virtual hardware definition at VM launch. Thus, the user(s) 114 do not have to restart the physical hardware 102, which would shut down all VM instances, in order to apply policy changes on embedded device access for a specific VM.
FIG. 2 is a flow diagram of a method 200 of virtual device control in a computer system according to an example implementation. The method 200 begins at step 202, where a device configuration policy is obtained from firmware that defines global access permissions to embedded device(s) in the computer system. At step 204, a virtual device configuration policy is obtained that establishes additional access permissions for at least one of a selected user or a selected VM. The virtual device configuration policy defines additional access permissions to the embedded device(s). Step 204 can be repeated for additional selected user(s) and/or selected VMs. At step 206, a virtual hardware definition is established for an instance of the selected VM executing on the computer system based on the global access permissions and the additional access permissions. Step 206 can be repeated for additional VM instances.
FIG. 3 is a block diagram depicting a computer 300 according to an example implementation. The computer 300 includes a processor 302, an IO interface 306, and a memory 308. The computer 300 can also include support circuits 304 and hardware peripheral(s) 310 (e.g., embedded devices). The processor 302 includes any type of microprocessor, microcontroller, microcomputer, or like type computing device known in the art. The support circuits 304 for the processor 302 can include cache, power supplies, clock circuits, data registers, IO circuits, and the like. The IO interface 306 can be directly coupled to the memory 308, or coupled to the memory 308 through the processor 302. The memory 308 can include random access memory, read only memory, cache memory, magnetic read/write memory, or the like or any combination of such memory devices. The hardware peripheral(s) 310 can include various hardware circuits that perform functions on behalf of the processor 302.
The hypervisor 320 can be implemented through execution of machine-readable instructions by the processor 302. The memory 308 can store code 318 that is executed by the processor 302 to implement the hypervisor 320 and its various functions. The memory 308 also stores firmware code 312 having a global policy 314, and a PDAC 316. The global policy 314 includes global access permissions to the hardware peripherals 310 that are applied at boot time. The PDAC 316 includes additional access permissions to the hardware peripherals 310 that are applied to VM instances managed by the hypervisor 320. As described above, the hypervisor 320 establishes virtual hardware definitions for each of the VM instances based on the global policy 314 and the PDAC 316.
The methods described above may be embodied in a computer-readable medium for configuring a computing system to execute the method. The computer readable medium can be distributed across multiple physical devices (e.g., computers). The computer readable media may include, for example and without limitation, any number of the following: magnetic storage media including disk and tape storage media; optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media; holographic memory; nonvolatile memory storage media including semiconductor-based memory units such as FLASH memory, EEPROM, EPROM, ROM; ferromagnetic digital memories; volatile storage media including registers, buffers or caches, main memory, RAM, etc., just to name a few. Other new and various types of computer-readable media may be used to store machine readable code discussed herein.
In the foregoing description, numerous details are set forth to provide an understanding of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these details. While the invention has been disclosed with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover such modifications and variations as fall within the true spirit and scope of the invention.

## Claims

1. A method of virtual device control, comprising:
obtaining a device configuration policy from firmware in a personal computer system, the device configuration policy defining global access permissions to at least one embedded device embedded in the personal computer system, the global access permissions applied at boot time, wherein the embedded device is not a processor or memory;
obtaining a second virtual device configuration policy established for at least one of a user or a virtual machine (VM), the second virtual device configuration policy defining additional access permissions to the at least one embedded device; and
establishing a virtual hardware definition for an instance of the VM executing on the computer system based on the global access permissions and the additional access permissions.

2. The method of claim 1, wherein the second virtual device configuration policy includes a user device configuration policy defining user access permissions to the at least one embedded device for the user, and a VM device configuration policy defining VM access permissions to the at least one embedded device for the VM.

3. The method of claim 2, wherein the VM access permissions take precedence over the user access permissions, and the global access permissions take precedence over the VM access permissions.

4. The method of claim 1, wherein the global access permissions take precedence over the additional access permissions.

5. The method of claim 1, wherein the computer system includes a hypervisor to support a plurality of VMs, including the VM, and a plurality of users, including the user.

6. The method of claim 1, wherein the embedded device is selected from the group consisting of a wireless interface, a network interface, an imaging device, an audio device, a modem, a serial port, a parallel port, a memory reader, a universal serial bus (USB) port, and a FIREWIRE port.

7. A computer system, comprising:
physical hardware including a processor, a firmware, and at least one embedded device, the firmware to store a device configuration policy defining global access permissions to the at least one embedded device applicable at boot time, wherein the at least one embedded device comprises at least one of a peripheral device and a port; and
a hypervisor to execute on the processor, support at least one virtual machine (VM) and at least one user, establish a second virtual device configuration policy that defines additional access permissions to the at least one embedded device based on at least one of user identity and virtual machine identity, and establish a virtual hardware definition for each instance of the at least one VM based on the global access permissions and the additional access permissions.

8. The computer system of claim 7, the second virtual device configuration policy includes a user device configuration policy defining user access permissions to the at least one embedded device, and a VM device configuration policy defining VM access permissions to the at least one embedded device.

9. The computer system of claim 8, wherein the VM access permissions take precedence over the user access permissions, and the global access permissions take precedence over the VM access permissions.

10. The computer system of claim 7, wherein the hypervisor includes at least one component that provides a device model for each of the at least one embedded device, the at least one component to process the global access permissions and the additional access permissions to provide the virtual hardware definition for each instance of the at least one VM.

11. The computer system of claim 7, wherein the hypervisor includes a configuration component to generate the second virtual device configuration policy.

12. computer system of claim 7, wherein the global access permissions allow the hypervisor to change access to a first embedded device, and wherein the global access permissions disable access to a second embedded device.

13. A non-transitory computer readable medium having instructions stored thereon that when executed by a processor cause the processor to perform a method of virtual device control in a computer system, comprising:
obtaining a device configuration policy from firmware in the computer system, the device configuration policy defining global access permissions to at least one embedded device in the computer system applied at boot time;
obtaining a second virtual device configuration policy established for at least one of a user or a virtual machine (VM), the second virtual device configuration policy defining additional access permissions to the at least one embedded device, wherein the additional access permissions permit access to a first embedded device in the computer system and prohibit access to a second embedded device in the computer system; and
establishing a virtual hardware definition for an instance of the VM executing on the computer system based on the global access permissions and the additional access permissions.

14. The computer readable medium of claim 13, wherein the second virtual device configuration policy includes a user device configuration policy defining user access permissions to the at least one embedded device for the user, and a VM device configuration policy defining VM access permissions to the at least one embedded device for the VM.

15. The computer readable medium of claim 14, wherein the VM access permissions take precedence over the user access permissions, and the global access permissions take precedence over the VM access permissions.

16. The computer readable medium of claim 13, wherein the global access permissions take precedence over the additional access permissions.

17. The computer readable medium of claim 13, wherein the computer system includes a hypervisor to support a plurality of VMs, including the VM, and a plurality of users, including the user.

18. The computer readable medium of claim 13, wherein the additional access permissions permit access to a first virtual machine to access the first embedded device and prohibit a second virtual machine from accessing the first embedded device.

19. The computer readable medium of claim 13, wherein the additional access permissions permit access to a first user to access the first embedded device and prohibit a second user from accessing the first embedded device.