OpenPower Firmware Stack

The OpenPower server platform comprises one or more Power8 processors, the latest of the IBM PowerPC family, and some kind of management controller to power on and monitor the state of the main processor(s). This post provides an overview of the different bits of open source firmware that are used to take the machine from power on all the way through to running your operating system.

Tyan Palmetto Motherboard

The Tyan GN70-BP010 is the first OpenPower machine to ship. Known also by its codename Palmetto, it contains a single Power8 processor and an Aspeed AST2400 ARM System on Chip which we refer to as the Baseboard Management Controller (BMC). The BMC is a typical embedded ARM system: u-boot, Linux kernel and stripped down userspace. This firmware is built by OpenPower Foundation member AMI.

P8 Boot

The BMC and the Power8 share a common memory mapped interface, called the LPC bus. This is the interface over which the Power8 accesses boot firmware, as well as boot time configuration, from a SPI attached PNOR flash, and speaks to the BMC’s IPMI stack over the BT interface.

Hostboot Starting

When it comes to starting the Power8 the BMC wiggles a pin to kick the SBE (Self Boot Engine) into gear. This tiny processor in the Power8 loads the first stage firmware, called Hostboot, from PNOR and configures one of the Power8 threads to execute it from L3 cache. Hostboot is responsible for bringing up the internal buses in the Power8, as well as the rest of the cores, SDRAM memory, and another on-CPU microcontroller called the OCC (On Chip Controller).

P8 Boot Flow

When Hostboot is finished the procedures it loads a payload from the PNOR. This payload is the second stage firmware, known as Skiboot. Skiboot synchronises the timebase between all the CPU threads, brings up the PCIe buses, communicates with the management controller, and provides the runtime OPAL (Open Power Abstraction Layer) interface for the operating system to call into. Skiboot is also responsible for loading the next stage bootloader, which in this case is a Linux kernel and root file system that provide the Petitboot loader environment.

Skiboot Starting

Petitboot Starting

Petitboot is a bootloader that discovers all the disks and network devices in the system, and presents a menu for the user to select which OS to run. Petiboot looks for PXE configuration information, as well as parsing Grub configuration files found on local disks. Petitboot reads configration information from the NVRAM partition on the PNOR, which means it can be configured to boot from a specific network interface, hard drive, or even not boot at all and wait for user input. Once the boot OS has been selected, Petitboot uses the Linux kexec functionality to jump into the host kernel.

Petitboot Menu

City to Bay 2014

On Sunday I was one of 36,000 people who ran in the City to Bay Fun Run. It’s a 12km event, starting at the north edge of the Adelaide CBD, taking us south through the centre of the city, down Anzac Highway, finishing on Jetty Road in Glenelg. A predicted high of 22°C, no winds and clear skies made for great conditions.

City to Bay 2014 Runkeper

This was my fourth go at the City to Bay since taking up running in 2011. I didn’t get much of an opportunity to train this time, as last week I cycled in the 120km Amy’s Gran Fondo, and the fortnight before that I spent a week in the Victorian Alps back-country skiing. As I was busy (recovering from) these events I only had two training runs the past month; a 12km two weeks before hand, and 7km two days before to make sure my knee had recovered from the bike race.

Joel running down Jetty Road in the 2014 City to Bay

As it turns out the cross-training did wonders. I didn’t believe the 4:25 min/km splits that RunKeeper was reading out to me, but the legs were more than happy to move along at that pace. I got to the bay in 52:42, and the splits were correct – I managed to maintain a consistent pace the entire way. The exception was the last 200m, where I threw my legs as far as they would go and managed to get 13th in the Crazed Sprint for the Line segment on Strava, with a 2:13 km/h split.

I improved by 4:38 from last year, and importantly, bet Greg by 20 seconds! It’s going to be hard to back that up next year.

The Saunders Stampede

On Sunday I competed in my first Rogaining event, The Saunders Stampede 6 hour Bush Roganie held at Sanderson by the SA Rogaining Association. I competed with Greg and Mark in a team of three; Mark had done one before, but Greg and I were newbies.

The Hash Hut

We had about 30 minutes to study our map, solve the travelling salesman problem and get pumped. Our planned route took us to 28 controls, doing a clockwise circuit across the map. It had been raining all week, but although the skies were cloudy the rain stayed away which provided ideal conditions to stay cool without being uncomfortable.

When heading downhill we jogged, and kept a steady pace uphill. Greg’s cycling meant that hill-climbing legs were no match for the mountains. Mark and I could only look on in awe as he ran up the 25% inclines. While GPSs are not allowed for navigation, we did have RunKeeper tracking our progress. Over the 6 hours we covered 28km. Surprisingly, we were moving for only 5 of the 6 hours. We had two small breaks for food, but each time we paused to check the map really added up.

Route showing the elevation profile

The counter point to saying we spent too much time looking at the map was control 63. As you can see on the map, we were walking along a fence – in this case a one meter high drystone wall. The expectation was that the control would be on the fence-line at some point, however, we arrived at the left-turn in the fence near control 71 and realised we had missed it. No turning back, as there was no way any of us wanted to re-climb the 25% incline again!

The course map marked up with the controls we visited

In hindsight, we should have left more time to clean up the controls on the flat. We spent a lot of energy descending from control 90 and then climbing back up the hill to get control 70 at the top of the course, when we could have headed back down towards the flat and cleaned up 80, 33, 30, 23, 37. By the time we had gotten down the hill, Mark and I were struggling to keep the pace up.

Mark and Joel

In a previous event the winning score was around 1200, so the goal was to get over 1000. After we crossed the finish line we expected to come somewhere between 32nd and 17th, so we were very happy with 11th of 99 finishers and a score of 1120 having visited 23 controls. The winners got 1530 of a possible 1670 points, meaning they visited all but one or two of the 35 controls.

The countryside was very nice to look at, with some great views of the plain and the rolling green hills. Despite the sore legs on Monday, and Tuesday, I really enjoyed it and plan to compete in another one.