Bus Resource Adjustment in Multiple Root Bridge Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Modern computer systems with multiple root bridges often face bus out-of-resource (OOR) conditions due to limited pre-allocated bus numbers, leading to non-deterministic behavior as some bridge devices cannot be assigned resources.
Innovation Solution
Implementing automatic bus resource adjustment firmware that reallocates bus numbers between root bridges, determining the required number of buses for each bridge through depth-first traversal and storing this data for reallocation, ensuring each root bridge receives the necessary resources.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If bus numbers are pre-allocated equally to each root bridge during system startup, then the allocation process is simple and deterministic, but bus out-of-resource conditions occur when the actual number of buses exceeds the pre-allocated amount
Solution Approach 1:
The firmware performs a preliminary enumeration of all bridges coupled to each root bridge during system startup, determining the actual number of buses required before finalizing the allocation. This preliminary action allows the system to allocate bus numbers based on actual needs rather than fixed pre-assignment, preventing OOR conditions while maintaining deterministic behavior.
2Quantity of substance
If the total number of bus numbers is increased beyond 256, then more bridge devices can be supported, but the PCI bus architecture standard limitation and system complexity increase
Solution Approach 1:
The system implements dynamic bus number allocation where the firmware adjusts the number of bus numbers allocated to each root bridge based on the actual number of bridges detected during enumeration. This dynamic approach allows the system to efficiently utilize the existing 256 bus number limit without requiring an increase in the total number of available bus numbers, while also avoiding the complexity of managing a larger bus number space.
3Productivity
If bus numbers are allocated without verifying the actual number of bridges, then the allocation process is fast, but non-deterministic behavior occurs when OOR conditions arise
Solution Approach 1:
The firmware implements a feedback mechanism where the actual number of bridges coupled to each root bridge is enumerated and used to adjust the bus number allocation. This feedback loop ensures that the allocation process is both accurate and deterministic, as the system adapts the allocation based on real system conditions rather than fixed assumptions, while maintaining efficient initialization through automated enumeration.
Data Source
AI summary
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.


