Browse Prior Art Database

Method To Prevent Multiple Processors After Taking Exceptions To Enter Open Firmware In A Symmetrical Multiprocessor (SMP) machine

IP.com Disclosure Number: IPCOM000014638D
Original Publication Date: 2001-Jul-21
Included in the Prior Art Database: 2003-Jun-20
Document File: 2 page(s) / 46K

Publishing Venue

IBM

Abstract

Method To Prevent Multiple Processors After Taking Exceptions To Enter Open Firmware In A Symmetrical Multiprocessor (SMP) machine Disclosed is a method to prevent multiple processors after taking system exceptions to simultaneously run the system's open firmware in a symmetrical multiprocessor (SMP) machine. In the SMP machine, a master processor is selected to boot up the machine. The other slave processors are in a waiting loop to be dispatched to the loaded operating system when the operating system gets control. During the boot process, the master processor instantiates two copies of the system open firmware. The first copy is served as a debugger for the second copy of the open firmware. The second copy is responsible to load and give control to the operating system.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 52% of the total text.

Page 1 of 2

Method To Prevent Multiple Processors After Taking Exceptions To Enter Open

Firmware In A Symmetrical Multiprocessor (SMP) machine

Disclosed is a method to prevent multiple processors after taking system exceptions to simultaneously run the system's open firmware in a symmetrical multiprocessor (SMP) machine.

In the SMP machine, a master processor is selected to boot up the machine. The other slave processors are in a waiting loop to be dispatched to the loaded operating system when the operating system gets control. During the boot process, the master processor instantiates two copies of the system open firmware. The first copy is served as a debugger for the second copy of the open firmware. The second copy is responsible to load and give control to the operating system.

Some interrupt vectors are used by the second copy of the open firmware for its normal operation. The remaining interrupt vectors are directed to the open firmware debugger,
i.e. the first copy. Since the open firmware code is not designed to be executed by multiple processors concurrently, if two or more processors get different interrupts and simultaneously execute the same copy of open firmware, the machine will crash.

To prevent a system crash, all interrupt vectors have to be serialized. Associated with each open firmware copy is a context buffer area in memory to be used for saving registers upon an interrupt occurs. The disclosed method is to provide a software semaphore lock for the context buffer. If any processor takes an interrupt, the first level interrupt handler (FLIH) at the interrupt vector will need to acquire this lock in order to use the context buffer. Once the lock is obtained through software atomic instructions to write the processor's ID to the semaphore, the processor can then saves the registers to the context buffer and enters the open firmware copy which currently owns the interrupt vectors taken by that processor. This processor can subsequently take the same interrupt or other interrupts owned by the same open firmware copy that it is executing. If other processors take interrupts owned by the same open firmware copy, they will find that the context buffer is currently being locked. They will have to wait until the lock is freed so that they can then attempt to acquire the lock. Therefore, the open firmware copy is protected and run by only one proces...