US 7,613,847 B2
Partially virtualizing an I/O device for use by virtual machines
Todd J. Kjos, Cupertino, Calif. (US); Jonathan K. Ross, Bellevue, Wash. (US); and Christophe De Dinechin, Sophia-Antipolis (France)
Assigned to Hewlett-Packard Development Company, L.P., Houston, Tex. (US)
Filed on May 16, 2006, as Appl. No. 11/435,831.
Prior Publication US 2008/0005297 A1, Jan. 03, 2008
Int. Cl. G06F 13/28 (2006.01); G06F 21/00 (2006.01)
U.S. Cl. 710—22  [711/6] 12 Claims
OG exemplary drawing
 
1. A computer system comprising:
a physical computer;
a virtual machine monitor executable on the physical computer and configured to create an emulation of at least one guest operating system adapted to control the physical computer, the virtual machine monitor comprising:
a Peripheral Communication Interconnect (PCI) configuration emulator that calls a function registered by a corresponding device emulator to manage configuration space accesses or forwards a configuration space access to a PCI configuration driver for unregistered or selectively non-emulated functions;
a direct input/output (I/O) emulator that manages direct I/O functionality in the virtual machine monitor; and
an input/output discovery emulator that determines whether an I/O device exists at an address corresponding to a guest access at a physical address that does not correspond to memory by sending a message to a virtual I/O map driver in the host; and
a host executable on the physical computer that manages physical resources coupled to the physical computer on behalf of the virtual machine monitor and the at least one guest operating system, the host adapted to virtualize a Peripheral Component Interconnect (PCI) configuration address space whereby the at least one guest operating system controls PCI input/output (I/O) devices directly and in absence of I/O emulation for memory-mapped I/O registers and I/O port registers, and emulates accesses to configuration space.