The Open Firmware Process begins as the startup firmware builds the device tree for built-in I/O devices and then searches expansion areas for other devices. The firmware polls the computer's PCI buses, interrogating addresses where devices might be found. Each time it finds a device with an Open Firmware expansion ROM, it copies the FCode from that ROM into system RAM and executes it, using the system's FCode loader. As it runs, the FCode program enters the properties of the device it represents into the current device tree node established by the Open Firmware program and stored in system RAM.
An important set of device tree properties include Open Firmware drivers for PCI devices. Run-time drivers, which are stored as properties of the device node in the device tree, may be required for the startup process and for each operating system that may be launched. Other properties include operating characteristics of video cards and information used to install interrupt handlers.
Open Firmware queries PCI cards that contain no FCode and creates basic node entries for them in the device tree. These nodes contain only the properties that can be generated by accessing a card's standard PCI configuration registers. Open Firmware creates reg and assigned-addresses properties, making the card accessible to operating-system code (although not to Open Firmware). These properties provide the card's unit address and permit address space allocation based on the card's PCI base register support. PCI properties are discussed in Standard Properties.