1. A method for initializing a data processing system comprising functional hardware elements and a system management controller for controlling said functional hardware elements, the method comprising: defining sequences of initialization steps for selected hardware elements of said functional hardware elements, wherein each sequence of initialization steps is defined for a single selected hardware element of said selected hardware elements; determining dependencies among said initialization steps; generating a control flow table representing said sequences of initialization steps and said dependencies; generating a system configuration database representing a list of all active functional hardware elements in said data processing system; during an initialization phase of said data processing system, executing on said system management controller the steps: analyzing said control flow table and said system configuration database; based on said analyzing said control flow table and said system configuration database, assigning said sequences of initialization steps to said selected hardware elements; and generating and executing a parallel thread of execution for each of said assigned sequences of initialization steps, wherein said sequences of initialization steps are executed in parallel; and wherein, said dependencies between said initialization steps are represented by trigger and wait steps that are inserted in said sequences of initialization steps, and a first parallel thread of execution signals a second parallel thread of execution that a dependency is resolved when performing a trigger step, and wherein said second parallel thread of execution stops its execution when performing a wait step until receiving a signal from said first thread of parallel execution.