sun microsystems Systems Architecture Committee _________________________________________________________________ Subject: Power PC Booting Submitted by: Steven Z. File: psarc/1994/302/opinion.ms Date: 09/07/94 Committee: Mark K., Steve C., Bruce D., Robert H., Yousef K., Joseph Kowal- ski, Terrence M. 1. Summary It is expected that many Power PC platforms will have Open Boot Prom support. The current reference platform (XXX XXX- XXXXXXX), however, does not yet support OBP. Moreover, it is expected that there will be other Power PC platforms that will not have OBP. This project proposes a standard frame- work for the booting and auto-configuration of non-OBP plat- forms. The crux of this proposal is that the interface to platform specific I/O and configuration functions will be that defined by IEEE P1275 - whether or not the machine actually has OBP PROMs. The main body of the proposal[3] is a description of how platforms without Open Firmware can pro- vide the required IEEE P1275 services. 2. Decision & Precedence Information The project is accepted, and can be included in a minor release. 3. Opinion ___________________________________________________________________ | Interfaces Exported | |_____________________________________|________________|__________| |Interface | Classification| Comments| |_____________________________________|________________|__________| |IEEE P1275[1] | standard | | |Power PC binding to Open Firmware[2]| standard | | |DOS FAT 12 file system | standard | | |Extensible Linking Format | standard | | |bootstrap location/format | public | | |sample CIF implementation | uncommitted | | |_____________________________________|________________|__________| psarc/1994/302 Copyright 1994 Sun Microsystems, Inc. - 2 - ___________________________________________________________________ | Interfaces Exported | |_____________________________________|________________|__________| |Interface | Classification| Comments| |_____________________________________|________________|__________| |_____________________________________|________________|__________| To load a Solaris kernel into memory, the bootstrap may need to be able to do I/O to several devices (the specific list is platform dependent, but the obvious candidates are key- board, display, CD, network, disk and diskette). On systems with Open Firmware, these I/O services are provided accord- ing to a standard interface. On systems without Open Firmware, auxiliary (platform specific) drivers must be sup- plied to provide these services. The manner in which these drivers are supplied and the interface they provide to the Solaris bootstrap is a fundamental question to be answered for any non-OBP platform or architecture. Other projects (e.g. Solaris/x86) chose an interface that paralleled that provided by the standard ROMs on those machines. This project proposes that the interface to those services should be the same one specified by the Open Firmware standard. This makes it much easier to use exist- ing bootstrap code (which is already implemented to that interface). This leaves, however, the problem of how to implement that interface on a particular platform. This project proposes a general form for that implementa- tion, but very few actual interfaces. 1. A platform specific Client InterFace module (CIF) must be supplied. The CIF module includes device drivers for all of the boot devices, and code to handle the identification/autoconfiguration of those devices. These functions may be implemented in terms of ROM ser- vices available on the platform, but that is a platform-specific implementation detail. 2. Upon booting, a platform specific mechanism finds and loads the CIF module into memory. 3. The CIF module constructs a device information tree (for at least the boot devices). 4. The CIF module locates and loads the standard Solaris bootstrap (an ELF file in a standard place) into memory and transfers control to it. 5. The Solaris bootstrap accesses configuration informa- tion and I/O services through the P1275 client inter- faces. psarc/1994/302 Copyright 1994 Sun Microsystems, Inc. - 3 - 6. Later after Solaris has been installed, a platform specific script will be run in order to turn the system disk into a bootable device. The project proposes to provide the XXXXXXXXXX code as a sample CIF implementation for OEMs who need to do CIF imple- mentations for new platforms. It is expected that implemen- tations will be heavily based on this sample code, but the platform developers are free to use, modify or discard this code in any way they deem appropriate. The sample code will contain numerous interfaces, but most of them are completely internal to the sample and carry no commitment level. The only external interfaces to the CIF are the IEEE P1275 stan- dard and the location and format of the Solaris bootstrap. 4. Minority Opinion(s) 5. Advisory Information The committee found this to be an elegant solution to a recurring problem, and recommends that the same solution be employed in future ports to non-OBP platforms. 6. Appendices 6.1. Appendix A: Technical Changes Required 6.2. Appendix B: Technical Changes Advised 6.3. Appendix C: Reference Material 1. IEEE P1275/D12 Standard for Boot Firmware, Core Requirements and Practices. 2. PowerPC Supplement to IEEE 1275-1994 Standard for Boot (Initialization, Configuration) Firmware, Core Practices and Requirements. 3. PSARC/1994/302/materials/bootconf.ps psarc/1994/302 Copyright 1994 Sun Microsystems, Inc.