HPlogo HP-UX MultiProcessing: White Paper > Chapter 1 MultiProcessing

Monarch Selection during Multiprocessor Startup

» 

Technical documentation

Complete book in PDF

 » Table of Contents

When the system is powered on, after the CPU-level selftests complete, the processor-dependent code (PDC) selects a monarch processor.

As sovereign, the monarch is responsible for all the initial system loader activity; it is the only processor allowed to launch (boot) and enter into the operating system.

The selection of the monarch processor is based on the physical slot location and boot ID. Typically, the processor with the lowest hardware path address (hpa) becomes monarch, although each system has its own arbitration scheme. Later in the initialization process, only the monarch processor walks the bus to determine what other processors are configured and then launches them one at a time to create a multi-processor system.

Figure 1-2 “PDC code selects monarch processor” shows the module layout of a system with four processors, all attached to a central bus. The processor with the highest BOOT_ID value is selected; however as shown, processor BOOT_ID is set to a default value of two by the factory. If more than one processor has the same high BOOT_ID, the processor with the lowest slot number on the bus is selected to be Monarch. In this case, the PDC code is likely to select the processor in slot 0 as the monarch.

Figure 1-2 PDC code selects monarch processor

[PDC code selects monarch processor]

Monarch selection can be altered by several criteria:

  • The PDC routine PDC_CONFIG can configure and deconfigure a given processor based on self-test results. If the processor does not complete self-test, PDC_CONFIG removes it from consideration as potential monarch.

  • A user can select a monarch processor using the Boot Console Handler (BCH) code's user interface.

  • The Monarch processor takes charge and initializes the bus by sending a CMD.RESET.ST call to each module, thereby excluding the remaining processors.

Once the controlling processor is selected, it invokes its own processor dependent code (PDC) to perform the following:

  • Initialize all other I/O modules.

  • Set up and initialize physical memory for Page 0 of physical memory.

  • Load the contents from the PDC ROM to Page 0.

  • Use the Boot Console Handler (BCH) to select and initialize the console and boot device.

When the monarch processor is selected, the remaining ("serf") processors go into the "rendezvous code" where all interrupts are cleared. The serf processors wait for a rendezvous interrupt, which happens after the monarch is done with its boot time initialization. If the monarch fails, the serfs can usurp its power (deconfigure the monarch) and force a system reboot, whereupon the arbitration process is repeated and a new monarch selected.