IP Library › Granted Patent US 10,824,581
Granted Patent B2
US 10,824,581 · App. 15/634,396 · Granted Nov 3, 2020

Peripheral component interconnect express (PCIe) device enumeration via a PCIe switch

Inventors: Berck Nash (Divide, CO); Randall Hess (Colorado Springs, CO); Michael Walker (Colorado Springs, CO); James Michael Reiser (Colorado Springs, CO)
Assignee: Western Digital Technologies, Inc.
G06F13/4282G06F13/4022G06F13/4295G06F2213/0026
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,824,581
App. No.
15/634,396
Granted
Nov 3, 2020
Kind
B2
Abstract

Described herein are enhancements for managing multi-host Peripheral Component Interconnect Express (PCIe) switching. In one implementation, a PCIe switch coupled to a host processing system and PCIe slots may receive enumeration requests from the host processing system to identify available PCIe devices. In response to the enumeration requests, the PCIe switch may transfer responses to the host processing system indicating device identifier information for PCIe devices associated with the PCIe slots even if one or more of the PCIe devices is not currently installed.

Claims (61)

1. A Peripheral Component Interconnect Express (PCIe) switch configured to be communicatively coupled to a host processing system and to a plurality of PCIe slots, the PCIe switch comprising:

one or more non-transitory computer-readable storage media;

a processing system operatively coupled with the one or more computer-readable storage media; and

program instructions stored on the one or more computer-readable storage media that, when read and executed by the processing system, direct the processing system to at least:

receive at least one PCIe enumeration request from the host processing system to identify available PCIe devices,

in response to the at least one PCIe enumeration request, transfer one or more responses to the host processing system indicating device identifier information for a plurality of PCIe devices corresponding to the plurality of PCIe slots, wherein:

at least one PCIe device of the plurality of PCIe devices is not installed in an unoccupied PCIe slot of the plurality of PCIe slots, and

the device identifier information includes device identifier information for the at least one PCIe device expected to be installed in the unoccupied PCIe slot, to enable the host processing system to allocate addressing resources for the at least one PCIe device that is not yet installed in the unoccupied PCIe slot.

2. The PCIe switch of claim 1 , wherein the device identifier information comprises a vendor identifier and a device identifier for the at least one PCIe device.

3. The PCIe switch of claim 1 , wherein the one or more responses further indicate whether the at least one PCIe device is currently installed in any PCIe slot of the plurality of PCIe slots.

4. The PCIe switch of claim 1 , wherein the program instructions further direct the processing system to:

receive a write command from the host processing system directed at a target PCIe device of the plurality of PCIe devices, wherein the write command provides configuration data for the target PCIe device;

cache the write command;

identify whether the target PCIe device is installed in a PCIe slot of the plurality of PCIe slots; and

responsive to the target PCIe device being installed in a PCIe slot, forward the write command to the target PCIe device.

5. The PCIe switch of claim 4 , wherein the program instructions further direct the processing system to:

responsive to the target PCIe device not being installed in a PCIe slot, identify an installation of the target PCIe device in an available PCIe slot of the plurality of PCIe slots; and

in response to the installation, forward the write command to the installed target PCIe device.

6. The PCIe switch of claim 4 , wherein the write command comprises memory address allocation for the host processing system.

7. The PCIe switch of claim 1 , wherein the plurality of PCIe devices comprises a data storage device.

8. The PCIe switch of claim 1 , wherein the plurality of PCIe devices comprises a graphics processing unit.

9. A computing system comprising:

a plurality of Peripheral Component Interconnect Express (PCIe) slots; and

a PCIe switch communicatively coupled to the plurality of PCIe slots via PCIe lanes, the PCIe switch configured to:

receive at least one PCIe enumeration request from a host processing system to identify available PCIe devices;

in response to the at least one PCIe enumeration request, transfer one or more responses to the host processing system indicating device identifier information for a plurality of PCIe devices corresponding to the plurality of PCIe slots, wherein:

at least one PCIe device of the plurality of PCIe devices is not installed in an unoccupied PCIe slot of the plurality of PCIe slots, and

the device identifier information includes device identifier information for the at least one PCIe device expected to be installed in the unoccupied PCIe slot, to enable the host processing system to allocate addressing resources for the at least one PCIe device that is not yet installed in the unoccupied PCIe slot; and

in response to the at least one PCIe device being installed in the previously unoccupied PCIe slot, providing an indication to the host processing system that the at least one PCIe device has been made available.

10. The computing system of claim 9 , wherein the device identifier information comprises a vendor identifier and a device identifier for the at least one PCIe device.

11. The computing system of claim 9 , wherein the one or more responses further indicate whether the at least one PCIe device is currently installed in any PCIe slot of the plurality of PCIe slots.

12. The computing system of claim 9 , wherein the PCIe switch is further configured to:

receive a write command from the host processing system directed at a target PCIe device of the plurality of PCIe devices, wherein the write command provides configuration data for the target PCIe device;

cache the write command;

identify whether the target PCIe device is installed in a PCIe slot of the plurality of PCIe slots; and

responsive to the target PCIe device being installed in a PCIe slot, forward the write command to the target PCIe device.

13. The computing system of claim 12 , wherein the PCIe switch is further configured to:

responsive to the target PCIe device not being installed in a PCIe slot, identify an installation of the target PCIe device in an available PCIe slot of the plurality of PCIe slots; and

in response to the installation, forward the write command to the installed target PCIe device.

14. The computing system of claim 12 , wherein the write command comprises memory address allocation for the host processing system.

15. The computing system of claim 9 , wherein the plurality of PCIe devices comprises a data storage device.

16. The computing system of claim 9 , wherein the plurality of PCIe devices comprises a graphics processing unit.

17. A computing system comprising:

a host processing system;

a plurality of Peripheral Component Interconnect Express (PCIe) slots; and

a PCIe switch communicatively coupled to the plurality of PCIe slots and to the host processing system via PCIe lanes, the PCIe switch configured to:

receive at least one PCIe enumeration request from the host processing system to identify available PCIe devices; and

in response to the at least one PCIe enumeration request, transfer one or more responses to the host processing system indicating device identifier information for a plurality of PCIe devices corresponding to the plurality of PCIe slots, wherein:

at least one PCIe device of the plurality of PCIe devices is not installed in an unoccupied PCIe slot of the plurality of PCIe slots, and

the device identifier information includes device identifier information for the at least one PCIe device expected to be installed in the unoccupied PCIe slot, to enable the host processing system to allocate addressing resources for the at least one PCIe device that is not yet installed in the unoccupied PCIe slot; and

the host processing system is configured to allocate addressing resources for the at least one PCIe device that is not yet installed in the unoccupied PCIe slot.

18. The computing system of claim 17 , wherein the plurality of PCIe devices comprises a data storage device.

19. The computing system of claim 17 , wherein the plurality of PCIe devices comprises a graphics processing unit.

20. The computing system of claim 17 , wherein the PCIe switch is further configured to:

receive a write command from the host processing system directed at a target PCIe device of the plurality of PCIe devices, wherein the write command provides configuration data for the target PCIe device;

cache the write command;

identify whether the target PCIe device is installed in a PCIe slot of the plurality of PCIe slots; and

responsive to the target PCIe device being installed in a PCIe slot, forward the write command to the target PCIe device.

21. A Peripheral Component Interconnect Express (PCIe) switch configured to be communicatively coupled to a host processing system and to a plurality of PCIe slots, the PCIe switch comprising:

means for receiving at least one PCIe enumeration request from the host processing system to identify available PCIe devices; and

means for, in response to the at least one PCIe enumeration request, enabling the host processing system to allocate addressing resources for at least one PCIe device of the plurality of PCIe devices that is not yet installed in an unoccupied PCIe slot by transferring one or more responses to the host processing system indicating device identifier information for a plurality of PCIe devices corresponding to the plurality of PCIe slots, including device identifier information for the at least one PCIe device not installed in the unoccupied PCIe slot.

Assignments (5)
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2017
From: HESS, RANDALL; NASH, BERCK; REISER, JAMES E.; WALKER, MICHAEL
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 042827/0905 →
Continuity (1)
Related Publication 20180373669A1 · Dec 27, 2018
Cited By (1)
US 12,547,229