IP Library Granted Patent US 10,684,976
Granted Patent B1
US 10,684,976 · App. 16/029,774 · Granted Jun 16, 2020

Automatic bus resource adjustment in a multiple root bridge computing system

Inventors: Naresh Kollu (Duluth, GA); Harikrishna Doppalapudi (Norcross, GA)
Assignee: American Megatrends International, LLC
G06F13/4027G06F13/4022G06F13/4221G06F2213/0024
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,684,976
App. No.
16/029,774
Granted
Jun 16, 2020
Kind
B1
Abstract

A firmware enumerates the buses of root bridges in the computing system. If an OOR condition occurs during enumeration of the buses, the firmware determines the number of required buses for each root bridge causing an OOR condition. The number of required buses for bridge devices connected to each root bridge causing an OOR condition can be identified using the same set of bus numbers. Once the firmware has determined the number of buses required by each root bridge, including those not causing an OOR condition, the firmware reallocates the number of available buses between the root bridges such that each root bridge is allocated a number of the available buses greater than or equal to the number of required buses. The firmware stores data identifying the allocation and restarts the computing device. Upon rebooting, the computing system utilizes the new allocation of bus numbers to eliminate the OOR condition.

Claims (61)

1. A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a processor of a computing device, cause the processor to:

enumerate buses of a plurality of root bridges; and

responsive to determining that at least one out-of-resource condition occurred during the enumeration of the buses of the plurality of root bridges,

determine a number of required buses for each root bridge causing an out-of-resource condition during enumeration of the buses of the plurality of root bridges, and

reallocate a number of available buses between the plurality of root bridges such that each root bridge is allocated a number of the available buses greater than or equal to the number of required buses, wherein the number of required buses for a first root bridge of the plurality of root bridges causing an out-of-resource condition is determined by:

enumerating bridge devices coupled to the first root bridge;

programming primary, secondary, and subordinate bus numbers for a first bridge device coupled to the first root bridge using a plurality of bus numbers to determine the number of required buses for the first bridge device;

storing data identifying the number of required buses for the first bridge device; and

clearing the primary, secondary, and subordinate bus numbers for the first bridge device.

2. The non-transitory computer-readable storage medium of claim 1 , wherein the number of required buses for a first root bridge of the plurality of root bridges causing an out-of-resource condition is further determined by:

programming primary, secondary, and subordinate bus numbers for a second bridge device coupled to the first root bridge using the plurality of bus numbers to determine the number of required buses for the second bridge device;

storing data identifying the number of required buses for the second bridge device; and

clearing the primary, secondary, and subordinate bus numbers for the second bridge device.

3. The non-transitory computer-readable storage medium of claim 1 , having further computer-executable instructions stored thereupon to restart the computing device following the reallocating of the number of available buses between the plurality of root bridges.

4. The non-transitory computer-readable storage medium of claim 1 , wherein an equal number of the available buses are allocated to each of the plurality of root bridges during startup of the computing device.

5. The non-transitory computer-readable storage medium of claim 1 , wherein the computing device comprises a single processor, wherein the plurality of root bridges are coupled to the single processor, and wherein one of the plurality of root bridges generates an out-of-resource condition during the enumeration of the buses.

6. The non-transitory computer-readable storage medium of claim 1 , wherein the computing device comprises a single processor, wherein the plurality of root bridges are coupled to the single processor, and wherein two or more of the plurality of root bridges generate an out-of-resource condition during the enumeration of the buses.

7. The non-transitory computer-readable storage medium of claim 1 , wherein the computing device comprises a first processor and a second processor, wherein the first processor is coupled to a first portion of the plurality of root bridges, wherein the second processor is coupled to a second portion of the plurality of root bridges, wherein at least one of the root bridges coupled to the first processor generates an out-of-resource condition during the enumeration of the buses, and wherein at least one of the root bridges coupled to the second processor generates an out-of-resource condition during the enumeration of the buses.

8. The non-transitory computer-readable storage medium of claim 1 , wherein the computing device comprises a first processor, wherein the first processor is coupled to a portion of the plurality of root bridges on a first segment and a portion of the plurality of root bridges on a second segment, and wherein at least one of the root bridges on the first segment generates an out-of-resource condition during the enumeration of the buses.

9. A computing system, comprising:

at least one central processing unit (CPU);

a first root bridge;

a second root bridge; and

a memory device storing instructions which, when executed by the at least one CPU, will cause the computing system to

enumerate the buses of the first root bridge;

determine whether an out-of-resource condition occurred during enumeration of buses of the first root bridge;

if an out-of-resource condition occurred during enumeration of buses of the first root bridge, determine a total number of buses required by the first root bridge;

enumerate the buses of the second root bridge;

determine whether an out-of-resource condition occurred during enumeration of buses of the second root bridge;

if an out-of-resource condition occurred during enumeration of buses of the second root bridge, determine a total number of buses required by the second root bridge; and

if an out-of-resource condition occurred during enumeration of buses for the first root bridge or the second root bridge,

reallocate a number of available buses between the first root bridge and the second root bridge such that

a number of the available buses allocated to the first root bridge is greater than or equal to the total number of buses required by the first root bridge and such that

a number of the available buses allocated to the second root bridge is greater than or equal to the total number of buses required by the second root bridge, wherein determining the total number of buses required by the first root bridge comprises:

enumerating bridge devices coupled to the first root bridge;

programming primary, secondary, and subordinate bus numbers for a first bridge device coupled to the first root bridge using a plurality of bus numbers to determine the number of buses required by the first bridge device;

storing data identifying the number of buses required by the first bridge device; and

clearing the primary, secondary, and subordinate bus numbers for the first bridge device.

10. The computing system of claim 9 , wherein determining the total number of buses required by the first root bridge further comprises:

programming primary, secondary, and subordinate bus numbers for a second bridge coupled to the first root bridge using the plurality of bus numbers to determine the number of buses required by the second bridge device;

storing data identifying the number of buses required by the second bridge device; and

clearing the primary, secondary, and subordinate bus numbers for the second bridge device.

11. The computing system of claim 9 , wherein the memory device stores further instructions to restart the computing device following the reallocating of the number of available buses between the first root bridge and the second root bridge.

12. The computing system of claim 9 , wherein an equal number of the available buses are allocated to each of the plurality of root bridges during startup of the computing system.

13. The computing system of claim 9 , wherein the first root bridge and the second root bridge are coupled to a single CPU.

14. The computing system of claim 9 , wherein the first root bridge and the second root bridge are coupled to different CPUs.

15. The computing system of claim 9 , wherein the first root bridge is assigned to a first segment and the second root bridge is assigned to a second segment.

16. A computer-implemented method, comprising:

enumerating buses of a plurality of root bridges of a computing system; and

responsive to determining that at least one out-of-resource condition occurred during the enumeration of the buses of the plurality of root bridges,

determining a number of required buses for each root bridge causing an out-of-resource condition during enumeration of the buses of the plurality of root bridges, and

reallocating a number of available buses between the plurality of root bridges of the computing system such that each root bridge is allocated a number of the available buses greater than or equal to the number of required buses, wherein the number of required buses for a first root bridge of the plurality of root bridges causing an out-of-resource condition is determined by:

enumerating bridge devices coupled to the first root bridge;

programming primary, secondary, and subordinate bus numbers for a first bridge device coupled to the first root bridge using a plurality of bus numbers to determine the number of required buses for the first bridge device;

storing data identifying the number of required buses for the first bridge device; and

clearing the primary, secondary, and subordinate bus numbers for the bridge devices coupled to the first bridge device.

17. The computer-implemented method of claim 16 , wherein the number of required buses for the first root bridge of the plurality of root bridges causing an out-of-resource condition is further determined by:

programming primary, secondary, and subordinate bus numbers for a second bridge device coupled to the first root bridge using the plurality of bus numbers to determine the number of required buses for the second bridge device;

storing data identifying the number of required buses for the second bridge device; and

clearing the primary, secondary, and subordinate bus numbers for the second bridge device.

18. The computer-implemented method of claim 16 , wherein an equal number of the available buses are allocated to each of the plurality of root bridges during startup of the computing device.

Assignments (5)
PATENT SECURITY AGREEMENT Recorded Oct 23, 2024
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: BAIN CAPITAL CREDIT, LP, AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 069229/0834 →
RELEASE OF SECURITY INTEREST Recorded Oct 17, 2024
From: MIDCAP FINANCIAL TRUST
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 069205/0795 →
SECURITY INTEREST Recorded May 6, 2019
From: AMERICAN MEGATRENDS INTERNATIONAL, LLC
To: MIDCAP FINANCIAL TRUST, AS COLLATERAL AGENT
Reel/Frame 049087/0266 →
ENTITY CONVERSION Recorded Apr 15, 2019
From: AMERICAN MEGATRENDS, INC.
To: AMERICAN MEGATRENDS INTERNATIONAL, LLC
Reel/Frame 049091/0973 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2018
From: KOLLU, NARESH; DOPPALAPUDI, HARIKRISHNA
To: AMERICAN MEGATRENDS, INC.
Reel/Frame 046291/0574 →