IP Library Granted Patent US 10,534,732
Granted Patent B2
US 10,534,732 · App. 14/754,569 · Granted Jan 14, 2020

Exposing memory-mapped IO devices to drivers by emulating PCI bus and PCI device configuration space

Inventors: Andrei Warkentin (Wakefield, MA); Harvey Tuch (Cambridge, MA); Alexander Fainkichen (Southborough, MA)
Assignee: VMware, Inc.
G06F13/1694G06F13/4282
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 10,534,732
App. No.
14/754,569
Granted
Jan 14, 2020
Kind
B2
Abstract

Devices are emulated as PCI devices so that existing PCI drivers can be used for the devices. This is accomplished by creating a shim PCI device with a emulated PCI configuration space, accessed via a emulated PCI Extended Configuration Access Mechanism (ECAM) space which is emulated by accesses to trapped unbacked memory addresses. When system software accesses the PCI ECAM space to probe for PCI configuration data or program base address registers of the PCI ECAM space, an exception is raised and the exception is handled by a secure monitor that is executing at a higher privilege level than the system software. The secure monitor in handling the exception emulates the PCI configuration space access of the emulated PCI device corresponding to the ECAM address accessed, such that system software may discover the device and bind and appropriately configure a PCI driver to it with the right IRQ and memory base ranges.

Claims (31)

1. In a computer system having system software that executes at a first privilege level and a secure monitor that executes at a second privilege level,

a method of binding a driver to a device, comprising:

while a CPU in the computer system executes system software at the first privilege level, accessing a memory address associated with a configuration space of the device for configuration data including a device identifier, wherein the memory address is not backed by any hardware in the computer system and accessing the memory address causes an exception, the exception invoking an exception vector having an address to which the CPU branches;

responsive to the exception vector, branching into the secure monitor executing at the second privilege level, the secure monitor returning the configuration data including the device identifier to the system software, wherein the second privilege level is higher than the first privilege level, and wherein the CPU provides modes of operation and the first and second privilege levels correspond to the modes provided by the CPU;

identifying a driver suitable for the device using the device identifier; and

binding the driver to the device.

2. The method of claim 1 , further comprising:

upon power-up of the computer system,

loading system configuration tables which describe a segment and an associated data structure that includes the configuration space of the device.

3. The method of claim 2 , wherein the system configuration tables further describe a mapping of interrupts on the segment to global system interrupt vectors.

4. The method of claim 2 , wherein the system configuration tables describe first and second segments and associated first and second data structures, the first data structure including a configuration space of a first device, that is referenced with a memory address within a first range of memory addresses, and the second data structure including a configuration space of a second device, that is referenced with a memory address within a second range of memory addresses that does not overlap with the first range of memory addresses.

5. The method of claim 2 , wherein the segment is emulated and not backed by any hardware in the computer system.

6. The method of claim 1 , wherein the configuration data comprises PCI device configuration data and the secure monitor returns additional PCI device configuration data.

7. A non-transitory computer readable medium comprising instructions to be executed in a computer system at a first privilege level, to cause the computer system to carry out a method of binding a driver to a device, said method comprising:

while a CPU in the computer system executes system software the first privilege level, accessing a memory address associated with a configuration space of the device for configuration data including a device identifier, wherein the memory address is not backed by any hardware in the computer system and accessing the memory address causes an exception, the exception invoking an exception vector having an address to which the CPU branches;

responsive to the exception vector, branching into a secure monitor executing at the second privilege level, the secure monitor returning the configuration data including the device identifier to the system software, wherein the second privilege level is higher than the first privilege level, and wherein the CPU provides modes of operation and the privilege levels at which the system software and the secure monitor execute correspond to the modes provided by the CPU;

identifying a driver suitable for the device using the device identifier; and

binding the driver to the device.

8. The non-transitory computer readable medium of claim 7 , wherein the memory address associated with the configuration space of the device is described in system configuration tables that are loaded into memory of the computer system upon power-up of the computer system.

9. The non-transitory computer readable medium of claim 7 , wherein the configuration data comprises PCI device configuration data and the secure monitor returns additional PCI device configuration data.

10. A computer system having a processing unit and system memory into which system software that executes a first privilege level and a secure monitor that executes at a second privilege level, have been loaded,

wherein the processing unit executes the system software to bind a driver to a device by carrying out the steps of:

while executing system software at the first privilege level, accessing a memory address associated with a configuration space of the device for configuration data including a device identifier, wherein the memory address is not backed by any hardware in the computer system and accessing the memory address causes an exception, the exception invoking an exception vector having an address to which the processing unit branches;

responsive to the exception vector, branching into the secure monitor executing at the second privilege level, the secure monitor returning the configuration data including the device identifier to the system software, wherein the second privilege level is higher than the first privilege level, and wherein the processing unit in the computer system provides modes of operation and the privilege levels at which the system software and the secure monitor execute correspond to the modes provided by the processing unit;

identifying a driver suitable for the device using the device identifier; and

binding the driver to the device.

11. The computer system of claim 10 , wherein the processing unit, upon power-up of the computer system, loads system configuration tables which describe a segment and an associated data structure that includes a configuration space of the device.

12. The computer system of claim 11 , wherein the system configuration tables further describe a mapping of interrupts on the segment to global system interrupt vectors.

13. The computer system of claim 11 ,

wherein the system configuration tables describe first and second segments and associated first and second data structures, the first data structure including a configuration space of a first device, that is referenced with a memory address within a first range of memory addresses, and the second data structure including a configuration space of a second device, that is referenced with a memory addresses within a second range of memory addresses that does not overlap with the first range of memory addresses.

14. The computer system of claim 11 , wherein the segment is emulated and not backed by any hardware in the computer system.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2015
From: WARKENTIN, ANDREI; TUCH, HARVEY; FAINKICHEN, ALEXANDER
To: VMWARE, INC.
Reel/Frame 036616/0514 →
Continuity (1)
Related Publication 20160378696A1 · Dec 29, 2016