System and method for supporting task oriented devices in a client hosted virtualization system
A client hosted virtualization system includes a task oriented device, a processor, and non-volatile memory with BIOS code and virtualization manager code. The virtualization manager initializes the client hosted virtualization system, authenticates a virtual machine image, launches the virtual machine based on the image, receives a transaction targeted to the task oriented device, prioritizes the transaction, sends the transaction to the task oriented device, receives a response from the task oriented device, and sends the response to the virtual machine. The client hosted virtualization system is configurable to execute the BIOS or the virtualization manager.
1. A client hosted virtualization system (CHVS) comprising:
a task oriented device;
a processor operable to execute code; and
a non-volatile memory including first code to implement a basic input/output system to initialize the CHVS, and second code to implement a virtualization manager operable to:
initialize the CHVS;
authenticate a first virtual machine image associated with a first virtual machine;
launch the first virtual machine on the CHVS based on the first virtual machine image;
receive a first transaction from the first virtual machine, a target of the first transaction being the task oriented device;
prioritize the first transaction;
send the first transaction to the task oriented device; and
receive a first response to the first transaction from the task oriented device; and
send the first response to the first virtual machine;
wherein the processor is operable to:
determine if the first code is selected;
execute the first code in response to determining that the first code is selected; and
execute the second code in response to determining that the first code is not selected.
2. The CHVS of claim 1 , further comprising a mass storage device, and wherein the first virtual machine image:
is stored on the mass storage device; and
includes an operating system and an application.
3. The CHVS of claim 1 , wherein the virtualization manager is further operable to prioritize the first transaction into a first queue associated with the first virtual machine.
4. The CHVS of claim 1 , wherein the task oriented device includes a general purpose encryption engine, and the first transaction includes a public key infrastructure key.
5. The CHVS of claim 1 , wherein the task oriented device includes a deep packet inspection engine.
6. The CHVS of claim 3 , wherein the virtualization manager is further operable to:
authenticate a second virtual machine image associated with a second virtual machine;
launch the second virtual machine on the CHVS based on the second virtual machine image;
receive a second transaction from the second virtual machine, a target of the second transaction being the task oriented device;
prioritize the second transaction;
send the second transaction to the task oriented device;
receive a second response to the second transaction from the task oriented device; and
send the second response to the second virtual machine.
7. The CHVS of claim 6 , wherein the virtualization manager is further operable to:
prioritize the second transaction into a second queue associated with the second virtual machine;
determine that the first transaction has a higher priority than the second transaction; and
send the first transaction to the task oriented device before sending the second transaction to the task oriented device.
8. The CHVS of claim 7 , wherein the virtualization manager is further operable to:
assign a first task identifier to the first transaction; and
determine that the first response includes the first task identifier;
wherein sending the first response to the first virtual machine is in response to determining that the first response includes the first task identifier.
9. A method of providing a client hosted virtualization system (CHVS) comprising:
storing first code in a non-volatile memory of the CHVS to implement a basic input/output system to initialize the CHVS;
storing second code in the non-volatile memory, the second code being operable to:
initialize the CHVS;
authenticate a first virtual machine image associated with a first virtual machine;
launch the first virtual machine on the CHVS based on the first virtual machine image;
receive a first transaction from the first virtual machine, a target of the first transaction being a task oriented device of the CHVS;
prioritize the first transaction;
send the first transaction to the task oriented device;
receive a first response to the first transaction from the task oriented device; and
send the first response to the first virtual machine;
determining if the first code is selected;
in response to determining that the first code is selected, executing the first code; and
in response to determining that the first code is not selected, executing the second code.
10. The method of claim 9 , wherein the first virtual machine image includes an operating system and an application.
11. The method of claim 9 , wherein in prioritizing the first transaction, the second code is further operable to place the first transaction into a first queue associated with the first virtual machine.
12. The method of claim 9 , wherein the task oriented device includes a general purpose encryption engine, and the first transaction includes a public key infrastructure key.
13. The method of claim 9 , wherein the task oriented device includes a deep packet inspection engine.
14. The method of claim 11 , the second code being further operable to:
authenticate a second virtual machine image associated with a second virtual machine;
launch the second virtual machine on the CHVS based on the second virtual machine image;
receive a second transaction from the second virtual machine, a target of the second transaction being the task oriented device;
prioritize the second transaction;
send the second transaction to the task oriented device;
receive a second response to the second transaction from the task oriented device; and
send the second response to the second virtual machine.
15. The method of claim 14 , the second code being further operable to:
prioritize the second transaction includes placing the second transaction into a second queue associated with the second virtual machine;
determine that the first transaction has a higher priority than the second transaction; and
send the first transaction to the task oriented device before sending the second transaction to the task oriented device.
16. The method of claim 15 , the second code being further operable to:
assign a first task identifier to the first transaction; and
determine that the first response includes the first task identifier;
wherein sending the first response to the first virtual machine is in response to determining that the first response includes the first task identifier.
17. Machine-executable code for an information handling system (IHS), wherein the machine-executable code is embedded within a non-transitory medium and includes instructions for carrying out a method, the method comprising:
storing first code in a non-volatile memory of the IHS to implement a basic input/output system to initialize the IHS;
storing second code in the non-volatile memory, the second code being operable to:
initialize the IHS;
authenticate a first virtual machine image associated with a first virtual machine;
the first virtual machine image including a first operating system and a first application;
launch the first virtual machine on the IHS based on the first virtual machine image;
receive a first transaction from the first virtual machine, a target of the first transaction being a task oriented device of the IHS;
prioritize the first transaction;
place the first transaction into a first queue associated with the first virtual machine;
send the first transaction to the task oriented device;
receive a first response to the first transaction from the task oriented device; and
send the first response to the first virtual machine;
determining if the first code is selected;
in response to determining that the first code is selected, executing the first code; and
in response to determining that the first code is not selected, executing the second code.
18. The machine-executable code of claim 17 , the second code being further operable to:
authenticate a second virtual machine image associated with a second virtual machine;
launch the second virtual machine on the IHS based on the second virtual machine image;
receive a second transaction from the second virtual machine, a target of the second transaction being the task oriented device;
prioritize the second transaction;
send the second transaction to the task oriented device;
receive a second response to the second transaction from the task oriented device; and
send the second response to the second virtual machine.
19. The machine-executable code of claim 18 , the second code being further operable to:
place the second transaction into a second queue associated with the second virtual machine;
determine that the first transaction has a higher priority than the second transaction; and
send the first transaction to the task oriented device before sending the second transaction to the task oriented device.
20. The machine-executable code of claim 19 , the second code being further operable to:
assign a first task identifier to the first transaction; and
determine that the first response includes the first task identifier;
wherein sending the first response to the first virtual machine is in response to determining that the first response includes the first task identifier.