skiboot-5.1.0

skiboot-5.1.0 was released on August 17th, 2015.

skiboot-5.1.0 is the first stable release of 5.1.0 following two beta releases. This new stable release replaces skiboot-5.0 as the current stable skiboot release (5.0 was released April 14th 2015).

Skiboot 5.1.0 contains all fixes from skiboot-5.0 stable branch up to skiboot-5.0.5 and everything from 5.1.0-beta1 and 5.1.0-beta2.

Over skiboot-5.1.0-beta2, we have the following changes:

  • opal_prd now supports multiple socket systems

  • fix compiler warnings in gard and libflash

Below are the changes introduced in previous skiboot-5.1.0 releases over the previous stable release, skiboot-5.0:

New features

  • Add Naples chip (CPU, PHB, LPC serial interrupts) support

  • Added qemu platform

  • improvements to FSI error handling

  • improvements in chip TOD failover (some only on FSP systems)

  • Set Relative Priority Register (RPR) to recommended value

    • this affects thread priority in SMT modes

  • greatly reduce memory consumption by CPU stacks for non-present CPUs

    • Previously we would reserve enough memory for max PIR for each CPU type.

    • This fix frees up 77MB of RAM on a typical P8 system.

  • increased OPAL API documentation

  • Asynchronous preloading of resources from FSP/flash

    • improves boot time on some systems

  • Basic Garrison platform support

  • Add Mambo platform (P8 Functional Simulator, systemsim)

    • includes fake NVRAM, RTC

  • Support building with GCOV, increasing memory for skiboot binary to 2MB

    • includes boot code coverage testing

  • Increased skiboot HEAP size.

    • We are not aware of any system where you would run out, but on large systems it was getting closer than we liked.

  • add boot_tests.sh for helping automate boot testing on FSP and BMC machines

  • Versioning of pflash and gard utilities to help Linux (or other OS) distributions with packaging.

  • OCC throttle status messages to host

  • CAPP timebase sync (“ibm,capp-timebase-sync” in DT to indicate CAPP timebase was synced by OPAL)

  • opal-api: Add OPAL call to handle abnormal reboots.

OPAL_CEC_REBOOT2 currently supports two reboot types:

  1. normal reboot, that will behave similar to that of opal_cec_reboot() call

  2. platform error reboot.

Long term, this is designed to replace OPAL_CEC_REBOOT.

New features for FSP based machines

  • in-band IPMI support

  • ethernet adaptor location codes

  • add DIMM frequency information to device tree

  • improvements in FSP error log code paths

  • fix some boot time memory leaks

    • harmless to end user

New features for AMI BMC based machines

  • PCIe power workaround for K80

  • Added support for Macronix 128Mbit flash chips

  • Initial PRD support for Firestone platform

  • improved reliability when BMC reboots

The following bugs have been fixed

  • Increase PHB3 timeout for electrical links coming up to 2 seconds.

    • fixes issues with some Mellanox cards

  • Hang in opal_reinit_cpus() that could prevent kdump from functioning

  • PHB3: fix crash in phb3_init

  • PHB3: fix crash with fenced PHB in phb3_init_hw()

  • Fix bugs in hw/bt.c (interface for IPMI on BMC machines) that could possibly lead to a crash (dereferencing invalid address, deadlock)

  • ipmi/sel: fix use-after-free

  • Bug fixes in EEH handling

    • opal_pci_next_error() cleared OPAL_EVENT_PCI_ERROR unconditionally, possibly leading to missed errors.

  • external/opal-prd: Only map each PRD range once

    • could eventually lead to failing to map PRD ranges

  • On skiboot crash, don’t try to print symbol when we didn’t find one

    • makes backtrace prettier

  • On skiboot crash, dump hssr0 and hsrr1 registers correctly.

  • Better support old and biarch compilers

    • test “new” compiler flags before using them

    • Specify -mabi=elfv1 if supported (which means it’s needed)

  • fix boot-coverage-report makefile target

  • ipmi: Fix the opal_ipmi_recv() call to handle the error path

  • Could make kernel a sad panda when in continues with other IPMI commands

  • IPMI: truncate SELs at 2kb

    • it’s the limit of the astbmc. We think.

  • IPMI/SEL/PEL:

    • As per PEL spec, we should log events with severity >= 0x22 and “service action flag” is “on”. But in our case, all logs OPAL originagted logs are makred as report externally. We now only report logs with severity >= 0x22

  • IPMI: fixes to eSEL logging

  • hw/phb3: Change reserved PE to 255

    • Currently, we have reserved PE#0 to which all RIDs are mapped prior to PE assignment request from kernel. The last M64 BAR is configured to have shared mode. So we have to cut off the first M64 segment, which corresponds to reserved PE#0 in kernel. If the first BAR (for example PF’s IOV BAR) requires huge alignment in kernel, we have to waste huge M64 space to accommodate the alignment. If we have reserved PE#256, the waste of M64 space will be avoided.

FSP-specific bugs fixed

  • (also fixed in skiboot-5.0.2) Fix race in firenze_get_slot_info() leading to assert() with many PCI cards

    With many PCI cards, we’d hit a race where calls to firenze_add_pcidev_to_fsp_inventory would step on each other leading to memory corruption and finally an assert() in the allocator being hit during boot.

  • PCIe power workaround for K80 cards

  • /ibm,opal/led renamed to /ibm,opal/leds in Device Tree

    • compatible change as no FSP based systems shipped with skiboot-5.0

General improvements

  • Preliminary Centaur i2c support

    • lays framework for supporting Centaur i2c

  • don’t run pollers on non-boot CPUs in time_wait

  • improvements to opal-prd, pflash, libflash

    • including new blocklevel interface in libflash

  • many minor fixes to issues found by static analysis

  • improvements in FSP error log code paths

  • code cleanup in memory allocator

  • Don’t expose individual nvram partitions in the device tree, just the whole flash device.

  • build improvements for building on ppc64el host

  • improvements in cpu_relax() for idle threads, needed for GCOV on large machines.

  • Optimized memset() for POWER8, greatly reducing number of instructions executed for boot, which helps boot time in simulators.

  • Major improvements in hello_world kernel

    • Bloat of huge 17 instruction test case reduced to 10.

  • Disable bust_locks for general calls of abort()

    • Should enable better error messages during abort() when other users of LPC bus exist (e.g. flash)

  • unified version numbers for bundled utilities

  • external/boot_test/boot_test.sh

    • better usable for automated boot testing

Contributors

Since skiboot-5.0, we’ve had the following changesets:

Processed 372 csets from 27 developers 2 employers found A total of 15868 lines added, 3359 removed (delta 12509)

Developers with the most changesets

Developer

Changesets

Stewart Smith

117 (31.5%)

Jeremy Kerr

37 (9.9%)

Cyril Bur

33 (8.9%)

Vasant Hegde

32 (8.6%)

Benjamin Herrenschmidt

32 (8.6%)

Kamalesh Babulal

22 (5.9%)

Joel Stanley

12 (3.2%)

Mahesh Salgaonkar

12 (3.2%)

Alistair Popple

12 (3.2%)

Neelesh Gupta

9 (2.4%)

Gavin Shan

8 (2.2%)

Cédric Le Goater

8 (2.2%)

Ananth N Mavinakayanahalli

8 (2.2%)

Vipin K Parashar

6 (1.6%)

Michael Neuling

6 (1.6%)

Samuel Mendoza-Jonas

3 (0.8%)

Frederic Bonnard

3 (0.8%)

Andrew Donnellan

2 (0.5%)

Vaidyanathan Srinivasan

2 (0.5%)

Philippe Bergheaud

1 (0.3%)

Shilpasri G Bhat

1 (0.3%)

Daniel Axtens

1 (0.3%)

Hari Bathini

1 (0.3%)

Michael Ellerman

1 (0.3%)

Andrei Warkentin

1 (0.3%)

Dan Horák

1 (0.3%)

Anton Blanchard

1 (0.3%)

Developers with the most changed lines

Stewart Smith

4499 (27.3%)

Benjamin Herrenschmidt

3782 (22.9%)

Jeremy Kerr

1887 (11.4%)

Cyril Bur

1654 (10.0%)

Vasant Hegde

959 (5.8%)

Mahesh Salgaonkar

886 (5.4%)

Neelesh Gupta

473 (2.9%)

Samuel Mendoza-Jonas

387 (2.3%)

Vipin K Parashar

332 (2.0%)

Philippe Bergheaud

171 (1.0%)

Shilpasri G Bhat

165 (1.0%)

Alistair Popple

151 (0.9%)

Joel Stanley

105 (0.6%)

Cédric Le Goater

89 (0.5%)

Gavin Shan

83 (0.5%)

Frederic Bonnard

76 (0.5%)

Kamalesh Babulal

65 (0.4%)

Michael Neuling

46 (0.3%)

Daniel Axtens

31 (0.2%)

Andrew Donnellan

22 (0.1%)

Ananth N Mavinakayanahalli

20 (0.1%)

Anton Blanchard

3 (0.0%)

Vaidyanathan Srinivasan

2 (0.0%)

Hari Bathini

2 (0.0%)

Michael Ellerman

1 (0.0%)

Andrei Warkentin

1 (0.0%)

Dan Horák

1 (0.0%)

Developers with the most lines removed

Michael Neuling

24 (0.7%)

Hari Bathini

1 (0.0%)

Developers with the most signoffs (total 253)

Stewart Smith

249 (98.4%)

Mahesh Salgaonkar

4 (1.6%)

Developers with the most reviews (total 24)

Vasant Hegde

9 (37.5%)

Joel Stanley

3 (12.5%)

Gavin Shan

2 (8.3%)

Kamalesh Babulal

2 (8.3%)

Samuel Mendoza-Jonas

2 (8.3%)

Alistair Popple

2 (8.3%)

Stewart Smith

1 (4.2%)

Andrei Warkentin

1 (4.2%)

Preeti U Murthy

1 (4.2%)

Ananth N Mavinakayanahalli

1 (4.2%)

Developers with the most test credits (total 1)

Chad Larson

1 (100.0%)

Developers who gave the most tested-by credits (total 1)

Gavin Shan

1 (100.0%)

Developers with the most report credits (total 4)

Benjamin Herrenschmidt

2 (50.0%)

Chad Larson

1 (25.0%)

Andrei Warkentin

1 (25.0%)

Developers who gave the most report credits (total 4)

Stewart Smith

3 (75.0%)

Gavin Shan

1 (25.0%)

Top changeset contributors by employer

IBM

369 (99.2%)

(Unknown)

3 (0.8%)

Top lines changed by employer

IBM

16497 (100.0%)

(Unknown)

3 (0.0%)

Employers with the most signoffs (total 253)

IBM

253 (100.0%)

Employers with the most hackers (total 27)

IBM

24 (88.9%)

(Unknown)

3 (11.1%)