# US 2014/0156898 A1 · Pci and pci express virtual hot plug systems and methods

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0156898 A1
- Document ID: US20140156898A1
- Status: Published application
- Kind: A1
- Application number: 13/690,018
- Filed: 2012-11-30
- Published: 2014-06-05
- Earliest claimed: 2012-11-30
- Assignees: Ciena Corporation
- Inventors: Gang Luo; Azam Syed; Randy Hilderman
- Web page: https://patentgrep.com/patent/US20140156898A1

## CPC

- G06F 13/4081: {Live connection to bus, e.g. hot-plugging (current or voltage limitation during live insertion H02H9/004)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Virtual hot plug systems and methods are described for Peripheral Component Interconnect (PCI), PCI Express (PCIe), and variants thereof. Specifically, the virtual hot plug systems and methods enable PCI related devices to support a hot plug configuration with such devices lacking hot plug controller hardware. The virtual hot plug systems and methods include intelligent polling logic for discovering the new PCI/PCIe devices with proper logic to access the hardware and avoid hanging or locking up the operating system.

## Claims

### Claim 1

A virtual hot plug system, comprising:
a Root Complex configured to be communicatively coupled to a Peripheral Component Interconnect (PCI) or PCI express (PCIe) device comprising virtual hot plug enabling hardware thereon without corresponding hot plug controller hardware on the PCI/PCIe device;
a virtual hot plug controller communicatively coupled to the Root Complex, wherein the virtual hot plug controller is configured to:
intelligently poll the Root Complex to discover the PCI/PCIe device while avoiding hanging or locking up an operating system; and
perform a virtual hot plug of the PCI/PCIe device configuring a PCI/PCIe subsystem in the operating system.

### Claim 2 (depends on 1)

The virtual hot plug system of claim 1, further comprising:
a virtual hot plug enabling hardware monitor detecting a configuration of the virtual hot plug enabling hardware and communicating to the virtual hot plug controller.

### Claim 3 (depends on 2)

The virtual hot plug system of claim 2, wherein the virtual hot plug enabling hardware monitor is configured to notify the virtual hot plug controller of electrical readiness of the PCI/PCIe device.

### Claim 4 (depends on 1)

The virtual hot plug system of claim 1, further comprising:
a Root Complex monitor communicatively coupled to the virtual hot plug controller and the Root Complex, wherein the Root Complex monitor is configured to check hardware readiness of the Root Complex for the PCI/PCIe device responsive to the virtual hot plug controller.

### Claim 5 (depends on 1)

The virtual hot plug system of claim 1, further comprising:
an initialization data handler communicatively coupled to the virtual hot plug controller and the operating system, wherein, upon detection of readiness of the Root Complex, the virtual hot plug controller modifies initialization data in the PCI/PCIe subsystem via the initialization data handler.

### Claim 6 (depends on 1)

The virtual hot plug system of claim 1, further comprising:
a hot plug rescan utility in the PCI/PCIe subsystem communicatively coupled to the virtual hot plug controller, wherein the virtual hot plug controller to discover the PCI/PCIe device subsequent to detection of readiness of the Root Complex and modification of initialization data in the PCI/PCIe subsystem.

### Claim 7 (depends on 1)

The virtual hot plug system of claim 1, further comprising:
a virtual hot plug enabling hardware monitor detecting a configuration of the virtual hot plug enabling hardware and communicating to the virtual hot plug controller;
a Root Complex monitor communicatively coupled to the virtual hot plug controller and the Root Complex, wherein the Root Complex monitor is configured to check hardware readiness of the Root Complex for the PCI/PCIe device responsive to the virtual hot plug controller;
an initialization data handler communicatively coupled to the virtual hot plug controller and the operating system, wherein, upon the detection of readiness of the Root Complex, the virtual hot plug controller modifies initialization data in the PCI/PCIe subsystem via the initialization data handler; and
a hot plug rescan utility in the PCI/PCIe subsystem communicatively coupled to the virtual hot plug controller, wherein the virtual hot plug controller to discover the PCI/PCIe device subsequent to the detection of readiness of the Root Complex and the modification of initialization data in the PCI/PCIe subsystem.

### Claim 8 (depends on 7)

The virtual hot plug system of claim 7, wherein the virtual hot plug controller, the virtual hot plug enabling hardware monitor, the Root Complex monitor, and the initialization data handler are implemented in a loadable Kernel module.

### Claim 9 (depends on 7)

The virtual hot plug system of claim 7, wherein the virtual hot plug controller, the virtual hot plug enabling hardware monitor, the Root Complex monitor, and the initialization data handler are implemented in a loadable Kernel module in Linux reusing at least one applicable hot plug function included in Linux.

### Claim 10 (depends on 7)

The virtual hot plug system of claim 7, wherein the PCI/PCIe device, upon being connected in the virtual hot plug system, without a clock configuration and reset handling thereby being unable to use hot plug or cold plug.

### Claim 11

A virtual hot plug method, comprising:
physically connecting a Peripheral Component Interconnect (PCI) or PCI express (PCIe) device to a system, wherein the PCI/PCIe device comprises virtual hot plug enabling hardware thereon without corresponding hot plug controller hardware on the PCI/PCIe device;
intelligently polling a Root Complex to discover the PCI/PCIe device while avoiding hanging or locking up an operating system; and
performing a virtual hot plug of the PCI/PCIe device with a virtual hot plug controller configuring a PCI/PCIe subsystem in the operating system.

### Claim 12 (depends on 11)

The virtual hot plug method of claim 11, further comprising:
detecting a configuration of the virtual hot plug enabling hardware and communicating to the virtual hot plug controller, wherein the configuration comprises electrical readiness of the PCI/PCIe device.

### Claim 13 (depends on 11)

The virtual hot plug method of claim 11, further comprising:
checking hardware readiness of the Root Complex for the PCI/PCIe device responsive to the virtual hot plug controller.

### Claim 14 (depends on 11)

The virtual hot plug method of claim 11, further comprising:
upon detection of readiness of the Root Complex, modifying initialization data in the PCI/PCIe subsystem via a initialization data handler.

### Claim 15 (depends on 11)

The virtual hot plug method of claim 11, further comprising:
discovering the PCI/PCIe device subsequent to detection of readiness of the Root Complex and modification of initialization data in the PCI/PCIe subsystem.

### Claim 16 (depends on 11)

The virtual hot plug method of claim 11, further comprising:
detecting a configuration of the virtual hot plug enabling hardware and communicating to the virtual hot plug controller, wherein the configuration comprises electrical readiness of the PCI/PCIe device;
checking hardware readiness of the Root Complex for the PCI/PCIe device responsive to the virtual hot plug controller;
upon the detection of readiness of the Root Complex, modifying initialization data in the PCI/PCIe subsystem via a initialization data handler; and
discovering the PCI/PCIe device subsequent to the detection of readiness of the Root Complex and the modification of initialization data in the PCI/PCIe subsystem.

### Claim 17 (depends on 16)

The virtual hot plug method of claim 16, wherein the virtual hot plug controller, the virtual hot plug enabling hardware monitor, the Root Complex monitor, and the initialization data handler are implemented in a loadable Kernel module.

### Claim 18 (depends on 16)

The virtual hot plug method of claim 16, wherein the virtual hot plug controller, the virtual hot plug enabling hardware monitor, the Root Complex monitor, and the initialization data handler are implemented in a loadable Kernel module in Linux reusing at least one applicable hot plug function included in Linux.

### Claim 19 (depends on 16)

The virtual hot plug method of claim 16, wherein the PCI/PCIe device, upon being connected in the virtual hot plug system, without a clock configuration and reset handling thereby being unable to use hot plug or cold plug.

### Claim 20

A system, comprising:
a Peripheral Component Interconnect (PCI) or PCI express (PCIe) device comprising virtual hot plug enabling hardware thereon without corresponding hot plug controller hardware on the PCI/PCIe device;
a Root Complex configured to be communicatively coupled to the PCI/PCIe device; and
a processor executing:
an operating system comprising a PCI/PCIe subsystem comprising initialization data and a hot plug rescan utility;
a virtual hot plug controller;
a virtual hot plug enabling hardware monitor; and
a Root Complex monitor; and
an initialization data handler;
wherein the virtual hot plug enabling hardware monitor is configured to detect a presence and electrical readiness of the PCI/PCIe device;
wherein the Root Complex monitor is configured to detect readiness of the Root Complex; and
wherein the virtual hot plug controller is configured to modify the initialization data via the initialization data handler responsive to readiness of the PCI/PCIe device and the Root Complex and to direct the PCI/PCIe subsystem to execute the hot plug rescan utility.
