IP Library Granted Patent US 9,262,363
Granted Patent B2
US 9,262,363 · App. 13/690,018 · Granted Feb 16, 2016

PCI and PCI express virtual hot plug systems and methods

Inventors: Gang Luo (Ottawa, CA); Azam Syed (Ottawa, CA); Randy Hilderman (Nepean, CA)
Assignee: Ciena Corporation
G06F13/4081
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 9,262,363
App. No.
13/690,018
Granted
Feb 16, 2016
Kind
B2
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 (55)

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; and

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 and configuring devices in the PCI/PCIe device while the PCI/PCIe device is coupled to the Root Complex and before the PCI/PCIe device is electrically usable.

2. 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.

3. 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.

4. 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.

5. 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.

6. 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.

7. 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.

8. 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.

9. 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.

10. 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.

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 and configuring devices in the PCI/PCIe device while the PCI/PCIe device is coupled to the Root Complex and before the PCI/PCIe device is electrically usable.

12. 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.

13. 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.

14. 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.

15. 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.

16. 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.

17. 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.

18. 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.

19. 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.

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;

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;

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; and

wherein the virtual hot plug controller is configured to configure devices in the PCI/PCIe device while the PCI/PCIe device is coupled to the Root Complex and before the PCI/PCIe device is electrically usable.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2023
From: BANK OF AMERICA, N.A.
To: CIENA CORPORATION
Reel/Frame 065630/0232 →
PATENT SECURITY AGREEMENT Recorded Nov 8, 2019
From: CIENA CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 050969/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 30, 2019
From: DEUTSCHE BANK AG NEW YORK BRANCH
To: CIENA CORPORATION
Reel/Frame 050938/0389 →
PATENT SECURITY AGREEMENT Recorded Jul 16, 2014
From: CIENA CORPORATION
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 033347/0260 →
SECURITY INTEREST Recorded Jul 15, 2014
From: CIENA CORPORATION
To: DEUTSCHE BANK AG NEW YORK BRANCH
Reel/Frame 033329/0417 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2012
From: LUO, GANG; SYED, AZAM; HILDERMAN, RANDY
To: CIENA CORPORATION
Reel/Frame 029380/0394 →
Continuity (1)
Related Publication 20140156898A1 · Jun 5, 2014