Patent ID: 7536539

Claim:
A computer implemented method in a data processing system for discovering hardware nodes having a hierarchical organization, through a deferred hardware discovery process operational in a user space, a kernel or both, the computer implemented method comprising: identifying and discovering only a minimum subset of hardware nodes in a file or by their connection to an input/output bridge, wherein the minimum subset of hardware nodes is a least selection of known hardware nodes necessary for an operating system to load and take control of the data processing system including at least one of the input/output bridge, a small computer system interface adapter, a hard disc drive, and a network adapter, and wherein the operating system supports parallel threads; responsive to discovering only the minimum subset of hardware nodes, suspending further discovery of undiscovered hardware nodes until creation of an operational user space environment in the operating system; initializing the minimum subset of the hardware nodes in the data processing system prior to loading the operating system; responsive to loading the operating system, creating the operational user space environment and conducting the further discovery of the undiscovered hardware nodes; generating, an initial thread for each known hardware node to form a set of initial threads, wherein the set of initial threads searches for the undiscovered hardware nodes only on a level below the each known hardware nodes, and wherein the set of initial threads allows for parallel discovery and initiation of hardware components connected to the undiscovered hardware nodes; responsive to discovery of each of the undiscovered hardware nodes, initializing, assigning resources to, and establishing addressing for the each of the undiscovered hardware nodes; creating an additional thread for the each of the undiscovered hardware nodes discovered to form a set of threads, wherein each thread in the set of threads searches for additional undiscovered hardware nodes only on a level below the each of the undiscovered hardware nodes, wherein the set of threads allows for parallel discovery and initiation of hardware components connected to the additional undiscovered hardware nodes; responsive to locating all application required hardware connected to the undiscovered hardware nodes and to the additional undiscovered hardware nodes, starting the application; and responsive to failing to locate all application required hardware, indicating an error.