PCI Boot Sequence
To better explain the concepts and mechanisms for finding, initializing, and replacing PCI drivers, below is a short description of the PCI boot sequence. The boot sequence applies to machines built prior to the introduction of the NewWorld architecture in the iMac and later Power Macintosh G3 computers. The boot sequence is similar for all Macintosh computers, however the steps are not identical. For information about the steps in the NewWorld boot sequence, see
Introduction to the NewWorld Architecture
and
Startup Sequence in the NewWorld Architecture.
-
Hardware is reset.
-
Open Firmware creates the device tree. This device tree is composed of all the devices found by the Open Firmware code, including all properties associated with those devices.
-
The Name Registry device tree is created by copying the Macintosh-relevant nodes and properties from the Open Firmware device tree.
-
The Code Fragment Manager and the interrupt tree are initialized.
-
Device properties that are persistent across system startups and are located in NVRAM are restored to their proper location in the Name Registry device tree.
-
The Name Registry device tree is searched for PCI expansion ROM device drivers associated with device nodes.
-
PCI expansion ROM device drivers required for booting are loaded and initialized.
-
If a PCI ROM device driver is marked as
kDriverIsLoadedUponDiscovery, the driver is installed in the Device Manager unit table.
-
If a PCI ROM device driver is marked as
kDriverIsOpenedUponLoad, the driver is initialized and opened, and the
driver-ref
property is created for the driver's device node.
-
The Display Manager is initialized.
-
The ATA Manager is initialized.
-
The SCSI Manager is initialized.
-
The File Manager and Resource Manager are initialized.
-
Device properties that are persistent across system startups and located in the Preferences folder in the System Folder are restored to their proper location in the Name Registry device tree.
Device drivers under family expert control are processed next. The following steps load disk-based experts and disk-based drivers:
-
Scan the Extensions folder for drivers (file type
'ndrv'
), updating the Registry with new versions of drivers as appropriate. For each driver added or updated in the tree, a driver description property is added or updated as well.
-
For each driver that is replaced, and already open, use the driver replacement mechanism.
-
Run
'INIT'
resources for virtual devices. Virtual devices are discussed in
Real and Virtual Devices.
-
Scan the Extensions folder for experts; load, initialize, and run each expert.
-
Run experts to scan the registry, using the driver description property associated with each node to determine which families the devices belong to.
-
Load and initialize appropriate devices based on family characteristics.
At that point all devices in use by the system and family subsystems are initialized. Uninitialized and unopened devices or services that may be used by client applications are located, initialized, and opened at the time that a client makes a request for the devices or services.
Note
Native device drivers are ordered to switch from low-power to high-power mode when their devices are opened.
© 1999 Apple Computer, Inc. (Last Updated 26 March 99)