aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/release-notes/skiboot-5.8.rst709
1 files changed, 709 insertions, 0 deletions
diff --git a/doc/release-notes/skiboot-5.8.rst b/doc/release-notes/skiboot-5.8.rst
new file mode 100644
index 0000000..1165046
--- /dev/null
+++ b/doc/release-notes/skiboot-5.8.rst
@@ -0,0 +1,709 @@
+.. _skiboot-5.8:
+
+skiboot-5.8
+===========
+
+skiboot v5.8 was released on Tuesday August 31st 2017. It is the first
+release of skiboot 5.8, which becomes the new stable release.
+It follows the 5.7 release, first released 25th July 2017.
+
+skiboot v5.8 contains all bug fixes as of :ref:`skiboot-5.4.6`
+and :ref:`skiboot-5.1.20` (the currently maintained stable releases). We
+do not currently expect to do any 5.7.x stable releases.
+
+For how the skiboot stable releases work, see :ref:`stable-rules` for details.
+
+Over :ref:`skiboot-5.7`, we have the following changes:
+
+New Features
+------------
+- sensors: occ: Add support to clear sensor groups
+
+ Adds a generic API to clear sensor groups. OCC inband sensor groups
+ such as CSM, Profiler and Job Scheduler can be cleared using this API.
+ It will clear the min/max of all sensors belonging to OCC sensor
+ groups.
+
+- sensors: occ: Add CSM_{min/max} sensors
+
+ HWMON's lowest/highest attribute is used by CSM agent, so map min/max
+ device-tree properties "sensor-data-min" and "sensor-data-max" to
+ the min/max of CSM.
+
+- sensors: occ: Add support for OCC inband sensors
+
+ Add support to parse and export OCC inband sensors which are copied
+ by OCC to main memory in P9. Each OCC writes three buffers which
+ includes one names buffer for sensor meta data and two buffers for
+ sensor readings. While OCC writes to one buffer the sensor values
+ can be read from the other buffer. The sensors are updated every
+ 100ms.
+
+ This patch adds power, temperature, current and voltage sensors to
+ ``/ibm,opal/sensors`` device-tree node which can be exported by the
+ ibmpowernv-hwmon driver in Linux.
+
+- psr: occ: Add support to change power-shifting-ratio
+
+ Add support to set the CPU-GPU power shifting ratio which is used by
+ the OCC power capping algorithm. PSR value of 100 takes all power away
+ from CPU first and a PSR value of 0 caps GPU first.
+
+- powercap: occ: Add a generic powercap framework
+
+ This patch adds a generic powercap framework and exports OCC powercap
+ sensors using which system powercap can be set inband through OPAL-OCC
+ command-response interface.
+- phb4: Enable PCI peer-to-peer
+
+ P9 supports PCI peer-to-peer: a PCI device can write directly to the
+ mmio space of another PCI device. It completely by-passes the CPU.
+
+ It requires some configuration on the PHBs involved:
+
+ 1. on the initiating side, the address for the read/write operation is
+ in the mmio space of the target, i.e. well outside the range normally
+ allowed. So we disable range-checking on the TVT entry in bypass mode.
+
+ 2. on the target side, we need to explicitly enable p2p by setting a
+ bit in a configuration register. It has the side-effect of reserving
+ an outbound (as seen from the CPU) store queue for p2p. Therefore we
+ only enable p2p on the PHBs using it, as we don't want to waste the
+ resource if we don't have to.
+
+ P9 supports p2p mmio writes. Reads are currently only supported if the
+ two devices are under the same PHB but that is expected to change in
+ the future, and it raises questions about intermediate switches
+ configuration, so we report an error for the time being.
+
+ The patch adds a new OPAL call to allow the OS to declare a p2p
+ (initiator, target) pair.
+
+- NX 842 and GZIP support on POWER9
+
+
+POWER9 DD2
+----------
+
+Further support for POWER9 DD2 revision chips. Notable changes include:
+
+- xscom: Grab P9 DD2 revision level
+- vas: Set mmio enable bits in DD2
+
+ POWER9 DD2 added some new "enable" bits that must be set for VAS to
+ work. These bits were unused in DD1.
+- hdat: Add POWER9 DD2.0 specific pa_features
+
+ Same as the default but with TM off.
+
+POWER9
+------
+
+Since :ref:`skiboot-5.8-rc1`:
+
+- hw/npu2.c: Add ibm,nvlink-speed device-tree property
+
+ NVLink2 links can support multiple different speeds. However the device driver
+ has no way of determining which speed was programmed so pass it down as a device
+ tree property.
+- hw/npu2-hw-procedures.c: Update PHY_RESET procedure
+
+ Newer versions of Hostboot will have various clocks powered down by default
+ to save power. Therefore we need to power them up before accessing the OBUS
+ PHY.
+- p8-i2c: Fix random data corruption (POWER9 specific)
+ While waiting for the OCC to signal that it has finished using the I2C
+ master we put the master into the, poorly named, occache_dis state.
+ While in this state the transaction hasn't been started, but
+ p8_i2c_check_status() will only skip it's checks when the master is in
+ the idle state. Any action that checks that cranks the I2C state machine
+ (interrupt, poll, etc) will call p8_i2c_check_status() and since the
+ master is not idle, it will check the status register, see the
+ transaction complete flag set and complete the i2c request without
+ actually doing anything.
+
+ If the transaction was a I2C read, the resulting output will be a
+ zeroed data buffer.
+
+- hw/p8-i2c: Fix OCC locking (POWER9 specific)
+
+ There's a few issues with the Host<->OCC I2C bus handshaking. First up,
+ skiboot is currently examining the wrong bit when checking if the OCC
+ is currently using the bus. Secondly, when we need to wait for the OCC
+ to release the bus we are scheduling a recovery timer to run zero
+ timebase ticks after the current moment so the recovery timeout handler
+ will run immediately after the bus was requested, which will in turn
+ re-schedule itself, etc, etc. There's also a race between the OCC
+ interrupt and the recovery handler which can result in an assertion
+ failure in the recovery thread. All of this is bad.
+
+ This patch addresses all these issues and sets the recovery timeout to
+ 10ms.
+- vas: export chip-id to vas platform device
+ This is needed so VAS in the kernel can perform cpu to vas id mapping.
+- slw: Modify the power9 stop0_lite latency & residency
+
+ Currently skiboot exposes the exit-latency for stop0_lite as 200ns and
+ the target-residency to be 2us.
+
+ However, the kernel cpu-idle infrastructure rounds up the latency to
+ microseconds and lists the stop0_lite latency as 0us, putting it on
+ par with snooze state. As a result, when the predicted latency is
+ small (< 1us), cpuidle will select stop0_lite instead of snooze. The
+ difference between these states is that snooze doesn't require an
+ interrupt to exit from the state, but stop0_lite does. And the value
+ 200ns doesn't include the interrupt latency.
+
+ This shows up in the context_switch2 benchmark
+ (http://ozlabs.org/~anton/junkcode/context_switch2.c) where the number
+ of context switches per second with the stop0_lite disabled is found
+ to be roughly 30% more than with stop0_lite enabled.
+ This can be correlated with the number of times cpuidle enters
+ stop0_lite compared to snooze.
+
+ Hence, bump up the exit latency of stop0_lite to 1us. Since the target
+ residency is chosen to be 10 times the exit latency, set the target
+ residency to 10us.
+
+ With these values, we see a 50% improvement in the number of context
+ switches.
+
+Since :ref:`skiboot-5.7`:
+
+- Base NPU2 support on POWER9 DD2
+- hdata/i2c: Work around broken I2C array version
+
+ Work around a bug in the I2C devices array that shows the
+ array version as being v2 when only the v1 data is populated.
+- Recognize the 2s2u zz platform
+
+ OPAL currently doesn't know about the 2s2u zz. It recognizes such a
+ box as a generic BMC machine and fails to boot. Add the 2s2u as a
+ supported platform.
+
+ There will subsequently be a 2s2u-L system which may have a different
+ compatible property, which will need to be handled later.
+- hdata/spira: POWER9 NX isn't software compatible with P7/P8 NX, don't claim so
+- NX: Add P9 NX support for gzip compression engine
+
+ Power 9 introduces NX gzip compression engine. This patch adds gzip
+ compression support in NX. Virtual Accelerator Switch (VAS) is used to
+ access NX gzip engine and the channel configuration will be done with
+ the receive FIFO. So RxFIFO address, logical partition ID (lpid),
+ process ID (pid) and thread ID (tid) are used to configure RxFIFO.
+ P9 NX supports high and normal priority FIFOS. Skiboot configures User
+ Mode Access Control (UMAC) noitify match register with these values and
+ also enables other registers to enable / disable the engine.
+
+ Creates the following device-tree entries to provide RxFIFO address,
+ RxFIFO size, Fifo priority, lpid, pid and tid values so that kernel
+ can drive P9 NX gzip engine.
+
+ The following nodes are located under an xscom node: ::
+ /xscom@<xscom_addr>/nx@<nx_addr>
+
+ /ibm,gzip-high-fifo : High priority gzip RxFIFO
+ /ibm,gzip-normal-fifo : Normal priority gzip RxFIFO
+
+ Each RxFIFO node contain:s
+
+ ``compatible``
+ ``ibm,p9-nx-gzip``
+ ``priority``
+ High or Normal
+ ``rx-fifo-address``
+ RxFIFO address
+ ``rx-fifo-size``
+ RxFIFO size
+ ``lpid``
+ 0xfff (1's for 12 bits in UMAC notify match register)
+ ``pid``
+ gzip coprocessor type
+ ``tid``
+ counter for gzip
+
+- NX: Add P9 NX support for 842 compression engine
+
+ This patch adds changes needed for 842 compression engine on power 9.
+ Virtual Accelerator Switch (VAS) is used to access NX 842 engine on P9
+ and the channel setup will be done with receive FIFO. So RxFIFO
+ address, logical partition ID (lpid), process ID (pid) and thread ID
+ (tid) are used for this setup. p9 NX supports high and normal priority
+ FIFOs. skiboot is not involved to process data with 842 engine, but
+ configures User Mode Access Control (UMAC) noitify match register with
+ these values and export them to kernel with device-tree entries.
+
+ Also configure registers to setup and enable / disable the engine with
+ the appropriate registers. Creates the following device-tree entries to
+ provide RxFIFO address, RxFIFO size, Fifo priority, lpid, pid and tid
+ values so that kernel can drive P9 NX 842 engine.
+
+ The following nodes are located under an xscom node:
+ ``/xscom@<xscom_addr>/nx@<nx_addr>``
+
+ ``/ibm,842-high-fifo``
+ High priority 842 RxFIFO
+ ``/ibm,842-normal-fifo``
+ Normal priority 842 RxFIFO
+
+ Each RxFIFO node contains:
+
+ ``compatible``
+ ibm,p9-nx-842
+ ``priority``
+ High or Normal
+ ``rx-fifo-address``
+ RxFIFO address
+ ``rx-fifo-size``
+ RXFIFO size
+ ``lpid``
+ 0xfff (1's for 12 bits set in UMAC notify match register)
+ ``pid``
+ 842 coprocessor type
+ ``tid``
+ Counter for 842
+- vas: Create MMIO device tree node
+
+ Create a device tree node for VAS and add properties that Linux
+ will need to configure/use VAS.
+- opal: Extract sw checkstop fir address from HDAT.
+
+ Extract sw checkstop fir address info from HDAT and populate device tree
+ node ibm,sw-checkstop-fir.
+
+ This patch is required for OPAL_CEC_REBOOT2 OPAL call to work as expected
+ on p9.
+
+ With this patch a device property 'ibm,sw-checkstop-fir' is now properly
+ populated: ::
+
+ # lsprop ibm,sw-checkstop-fir
+ ibm,sw-checkstop-fir
+ 05012000 0000001f
+
+PHB4
+----
+- hdat: Fix PCIe GEN4 lane-eq setting for DD2
+
+ For PCIe GEN4, DD2 uses only 1 byte per PCIe lane for the lane-eq
+ settings (DD1 uses 2 bytes)
+- pci: Wait for CRS and switch link when restoring bus numbers
+
+ When a complete reset occurs, after the PHB recovers it propagates a
+ reset down the wire to every device. At the same time, skiboot talks to
+ every device in order to restore the state of devices to what they were
+ before the reset.
+
+ In some situations, such as devices that recovered slowly and/or were
+ behind a switch, skiboot attempted to access config space of the device
+ before the link was up and the device could respond.
+
+ Fix this by retrying CRS until the device responds correctly, and for
+ devices behind a switch, making sure the switch has its link up first.
+- pci: Track whether a PCI device is a virtual function
+
+ This can be checked from config space, but we will need to know this when
+ restoring the PCI topology, and it is not always safe to access config
+ space during this period.
+- phb4: Enhanced PCIe training tracing
+
+ This add more details to the PCI training tracing (aka Rick Mata
+ mode). It enables the PCIe Link Training and Status State
+ Machine (LTSSM) tracing and details on speed and link width.
+
+ Output now looks like this when enabled (via nvram): ::
+
+ [ 1.096995141,3] PHB#0000[0:0]: TRACE:0x0000001101000000 0ms GEN1:x16:detect
+ [ 1.102849137,3] PHB#0000[0:0]: TRACE:0x0000102101000000 11ms presence GEN1:x16:polling
+ [ 1.104341838,3] PHB#0000[0:0]: TRACE:0x0000182101000000 14ms training GEN1:x16:polling
+ [ 1.104357444,3] PHB#0000[0:0]: TRACE:0x00001c5101000000 14ms training GEN1:x16:recovery
+ [ 1.104580394,3] PHB#0000[0:0]: TRACE:0x00001c5103000000 14ms training GEN3:x16:recovery
+ [ 1.123259359,3] PHB#0000[0:0]: TRACE:0x00001c5104000000 51ms training GEN4:x16:recovery
+ [ 1.141737656,3] PHB#0000[0:0]: TRACE:0x0000144104000000 87ms presence GEN4:x16:L0
+ [ 1.141752318,3] PHB#0000[0:0]: TRACE:0x0000154904000000 87ms trained GEN4:x16:L0
+ [ 1.141757964,3] PHB#0000[0:0]: TRACE: Link trained.
+ [ 1.096834019,3] PHB#0001[0:1]: TRACE:0x0000001101000000 0ms GEN1:x16:detect
+ [ 1.105578525,3] PHB#0001[0:1]: TRACE:0x0000102101000000 17ms presence GEN1:x16:polling
+ [ 1.112763075,3] PHB#0001[0:1]: TRACE:0x0000183101000000 31ms training GEN1:x16:config
+ [ 1.112778956,3] PHB#0001[0:1]: TRACE:0x00001c5081000000 31ms training GEN1:x08:recovery
+ [ 1.113002083,3] PHB#0001[0:1]: TRACE:0x00001c5083000000 31ms training GEN3:x08:recovery
+ [ 1.114833873,3] PHB#0001[0:1]: TRACE:0x0000144083000000 35ms presence GEN3:x08:L0
+ [ 1.114848832,3] PHB#0001[0:1]: TRACE:0x0000154883000000 35ms trained GEN3:x08:L0
+ [ 1.114854650,3] PHB#0001[0:1]: TRACE: Link trained.
+
+- phb4: Fix reading wrong size registers in EEH dump
+
+ These registers are supposed to be 16bit, and it makes part of the
+ register dump misleading.
+- phb4: Ignore slot state if performing complete reset
+
+ If a PHB is being completely reset, its state is about to be blown away
+ anyway, so if it's not in an appropriate state, creset it regardless.
+- phb4: Prepare for link down when creset called from kernel
+
+ phb4_creset() is typically called by functions that prepare the link
+ to go down. In cases where creset() is called directly by the kernel,
+ this isn't the case and it can cause issues. Prepare for link down in
+ creset, just like we do in freset and hreset.
+- phb4: Skip attempting to fix PHBs broken on boot
+
+ If a PHB is marked broken it didn't work on boot, and if it didn't work
+ on boot then there's no point trying to recover it later
+- phb4: Fix duplicate in EEH register dump
+- phb4: Be more conservative on link presence timeout
+
+ In this patch we tuned our link timing to be more agressive:
+ ``cf960e2884 phb4: Improve reset and link training timing``
+
+ Cards should take only 32ms but unfortunately we've seen some take
+ up to 440ms. Hence bump our timer up to 1000ms.
+
+ This can hurt boot times on systems where slots indicate a hotplug
+ status but no electrical link is present (which we've seen). Since we
+ have to wait 1 second between PERST and touching config space anyway,
+ it shouldn't hurt too much.
+- phb4: Assert PERST before PHB reset
+
+ Currently we don't assert PERST before issuing a PHB reset. This means
+ any link issues while resetting the PHB will be logged as errors.
+
+ This asserts PERST before we start resetting the PHB to avoid this.
+- Revert "phb4: Read PERST signal rather than assuming it's asserted"
+
+ This reverts commit b42ff2b904165addf32e77679cebb94a08086966
+
+ The original patch assumes that PERST has been asserted well before (>
+ 250ms) we hit here (ie. during hostboot).
+
+ In a subesquent patch this will no longer be the case as we need to
+ assert PERST during PHB reset, which may only be a few milliseconds
+ before we hit this code.
+
+ Hence revert this patch. Go back to the software mechanism using
+ skip_perst to determine if PERST should be asserted or not. This
+ allows us to keep the speed optimisation on boot.
+- phb4: Set REGB error enables based on link state
+
+ Currently we always set these enables when initing the PHB. If the
+ link is already down, we shouldn't set them as it may cause spurious
+ errors.
+
+ This changes the code to only sets them if the link is up.
+- phb4: Mark PHB as fenced on creset
+
+ If we have to inject an error to trigger recover, we end up not
+ marking the PHB as fenced in the PHB struct. This fixes that.
+- phb4: Clear errors before deasserting reset
+
+ During reset we may have logged some errors (eg. due to the link going
+ down).
+
+ Hence before we deassert PERST or Hot Reset, we need to clear these
+ errors. This ensures that once link training starts, only new errors
+ are logged.
+- phb4: Disable device config space access when fenced
+
+ On DD2 you can't access device config space when fenced, so just
+ disable access whenever we are fenced.
+- phb4: Dump devctl and devstat registers
+
+ Dump devctl and devstat registers. These would have been useful when
+ debugging the MPS issue.
+- phb4: Only clear some PHB config space registers on errors
+
+ Currently on error we clear the entire PHB config space. This is a
+ problem as the PCIe Maximum Payload Size (MPS) negotiation may have
+ already occurred. Clearing MPS in the PHB back to a default of 128
+ bytes will result an error for a device which already has a larger MPS
+ configured.
+
+ This will manifest itself as error due to a malformed TLP packet. ie.
+ ``phbPblErrorStatus bit 41 = "Malformed TLP error"``
+
+ This has been seen after kexec on with some adapters.
+
+ This fixes the problem by only clearing a subset of registers on a phb
+ error.
+
+Utilities
+---------
+- external/xscom-utils: Add ``--list-bits``
+
+ When using getscom/putscom it's helpful to know what bits are set in the
+ register. This patch adds an option to print out which bits are set
+ along with the value that was read/written to the register. Note that
+ this output indicates which bits are set using the IBM bit ordering
+ since that's what the XSCOM documentation uses.
+
+
+opal-prd
+--------
+
+- opal-prd: Do not pass pnor file while starting daemon.
+
+ This change to the included systemd init file means opal-prd can
+ start and run on IBM FSP based systems.
+
+ We do not have pnor support on all the system. Also we have logic to
+ autodetect PNOR. Hence do not pass ``--pnor`` by default.
+
+- opal-prd: Disable pnor access interface on FSP system
+
+ On FSP system host does not have access to PNOR. Hence disable PNOR
+ access interfaces.
+
+OPAL Sensors
+------------
+- sensor-groups : occ: Add 'ops' DT property
+
+ Add new device-tree property 'ops' to define different operations
+ supported on each sensor-group.
+
+- OCC: Map OCC sensor to a chip-id
+
+ Parse device tree to get chip-id for OCC sensor.
+
+- HDAT: Add chip-id property to ipmi sensors
+
+ Presently we do not have a way to map sensor to chip id. Hence we are
+ always passing chip id 0 for occ_reset request (see occ_sensor_id_to_chip()).
+
+ This patch adds chip-id property to sensors (whenever its available) so that
+ we can map occ sensor to chip-id and pass valid chip-id to occ_reset request.
+
+- xive: Check for valid PIR index when decoding
+
+ This fixes an unlikely but possible assert() fail on kdump.
+
+- sensors: occ: Skip the deconfigured core sensors
+
+ This patch skips the deconfigured cores from the core sensors while
+ parsing the sensor names in the main memory as these sensor values are
+ not updated by OCC.
+
+IBM FSP systems
+---------------
+Since :ref:`skiboot-5.8-rc1`:
+
+- mktime: fix off-by-one error calling days_in_month
+
+ From auditing all the mktime() users, there seems to be only a *very*
+ small window around new years day where we could possibly return
+ incorrect data to the OS, and even then, there would have to be FSP
+ reset/reload on FSP machines. I don't *think* there's an opportunity
+ on other machines.
+
+Tests
+-----
+Since :ref:`skiboot-5.8-rc1`:
+
+- travis: Debian Stretch must pass
+- test kernels: link with -N
+- core/test/run-msg: don't depend on unittest mem layout
+
+Since :ref:`skiboot-5.7`:
+
+- hdata_to_dt: use a realistic PVR and chip revision
+
+- nx: PR_INFO that NX RNG and Crypto not yet supported on POWER9
+
+- external/pflash: Add tests
+- external/pflash: Reinstate the progress bars
+
+ Recent work did some optimising which unfortunately removed some of the
+ progress bars in pflash.
+
+ It turns out that there's only one thing people prefer to correctly
+ programmed flash chips, it is the ability to watch little equals
+ characters go across their screens for potentially minutes.
+- external/pflash: Correct erase alignment checks
+
+ pflash should check the alignment of addresses and sizes when asked to
+ erase. There are two possibilities:
+
+ 1. The user has specified sizes manually in which case pflash should
+ be as flexible as possible, blocklevel_smart_erase() permits this. To
+ prevent possible mistakes pflash will require --force to perform a
+ manual erase of unaligned sizes.
+ 2. The user used -P to specify a partition, partitions aren't
+ necessarily erase granule aligned anymore, blocklevel_smart_erase() can
+ handle. In this it doesn't make sense to warn/error about misalignment
+ since the misalignment is inherent to the FFS partition and not really
+ user input.
+
+- external/pflash: Check the result of strtoul
+
+ Also add 0x in front of --info output to avoid a copy and paste mistake.
+
+- libflash/file: Break up MTD erase ioctl() calls
+
+ Unfortunately not all drivers are created equal and several drivers on
+ which pflash relies block in the kernel for quite some time and ignore
+ signals.
+
+ This is really only a problem if pflash is to perform large erases. So
+ don't, perform these ops in small chunks.
+
+ An in kernel fix is possible in most cases but it takes time and systems
+ will be running older drivers for quite some time. Since sector erases
+ aren't significantly slower than whole chip erases there isn't much of a
+ performance penalty to breaking up the erase ioctl()s.
+
+General
+-------
+
+Since :ref:`skiboot-5.8-rc1`:
+
+- gcov: support GCC 7.1+
+- Tests build and pass on Debian
+ A few things related to the Debian toolchain.
+
+Since :ref:`skiboot-5.7`:
+
+- opal-msg: Increase the max-async completion count by max chips possible
+
+- occ: Add support for OPAL-OCC command/response interface
+
+ This patch adds support for a shared memory based command/response
+ interface between OCC and OPAL. In HOMER, there is an OPAL command
+ buffer and an OCC response buffer which is used to send inband
+ commands to OCC.
+
+- HDAT/device-tree: only add lid-type on pre-POWER9 systems
+
+ Largely a relic of back when we had multiple entry points into OPAL depending
+ on which mechanism on an FSP we were using to get loaded, this isn't needed
+ on modern P9 as we only have one entry point (we don't do the PHYP LID hack).
+
+Contributors
+------------
+
+- Processed 156 csets from 17 developers
+- 1 employers found
+- A total of 6888 lines added, 1089 removed (delta 5799)
+
+Developers with the most changesets
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+========================== === =======
+Developer # %
+========================== === =======
+Cyril Bur 35 (22.4%)
+Stewart Smith 32 (20.5%)
+Michael Neuling 23 (14.7%)
+Sukadev Bhattiprolu 11 (7.1%)
+Reza Arbab 10 (6.4%)
+Russell Currey 9 (5.8%)
+Shilpasri G Bhat 9 (5.8%)
+Oliver O'Halloran 5 (3.2%)
+Haren Myneni 5 (3.2%)
+Alistair Popple 4 (2.6%)
+Vasant Hegde 4 (2.6%)
+Nicholas Piggin 3 (1.9%)
+Andrew Donnellan 2 (1.3%)
+Gautham R. Shenoy 1 (0.6%)
+Mahesh Salgaonkar 1 (0.6%)
+Ananth N Mavinakayanahalli 1 (0.6%)
+Frederic Barrat 1 (0.6%)
+========================== === =======
+
+Developers with the most changed lines
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+========================== ==== =======
+Developer # %
+========================== ==== =======
+Shilpasri G Bhat 1935 (27.9%)
+Cyril Bur 1868 (26.9%)
+Stewart Smith 866 (12.5%)
+Sukadev Bhattiprolu 663 (9.5%)
+Haren Myneni 584 (8.4%)
+Michael Neuling 384 (5.5%)
+Frederic Barrat 168 (2.4%)
+Reza Arbab 98 (1.4%)
+Oliver O'Halloran 98 (1.4%)
+Vasant Hegde 93 (1.3%)
+Alistair Popple 77 (1.1%)
+Russell Currey 60 (0.9%)
+Mahesh Salgaonkar 28 (0.4%)
+Andrew Donnellan 11 (0.2%)
+Gautham R. Shenoy 6 (0.1%)
+Nicholas Piggin 4 (0.1%)
+Ananth N Mavinakayanahalli 1 (0.0%)
+========================== ==== =======
+
+Developers with the most signoffs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+========================== === =======
+Developer # %
+========================== === =======
+Stewart Smith 124 (97.6%)
+Benjamin Herrenschmidt 2 (1.6%)
+Vaidyanathan Srinivasan 1 (0.8%)
+Total 127 (100%)
+========================== === =======
+
+Developers with the most reviews
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+=========================== == =======
+Developer # %
+=========================== == =======
+Samuel Mendoza-Jonas 19 (52.8%)
+Andrew Donnellan 11 (30.6%)
+Vasant Hegde 2 (5.6%)
+Cédric Le Goater 1 (2.8%)
+Russell Currey 1 (2.8%)
+Reza Arbab 1 (2.8%)
+Cyril Bur 1 (2.8%)
+Total 36 (100%)
+=========================== == =======
+
+Developers with the most test credits
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+=========================== == =======
+Developer # %
+=========================== == =======
+Vasant Hegde 1 (50.0%)
+Hari Bathini 1 (50.0%)
+=========================== == =======
+
+
+Developers who gave the most tested-by credits
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+=========================== == =======
+Developer # %
+=========================== == =======
+Russell Currey 1 (50.0%)
+Mahesh Salgaonkar 1 (50.0%)
+=========================== == =======
+
+Developers with the most report credits
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+=========================== == =======
+Developer # %
+=========================== == =======
+Anton Blanchard 1 (16.7%)
+Mark Linimon 1 (16.7%)
+Pavaman Subramaniyam 1 (16.7%)
+Pridhiviraj Paidipeddi 1 (16.7%)
+Rob Lippert 1 (16.7%)
+Michael Neuling 1 (16.7%)
+=========================== == =======
+
+Developers who gave the most report credits
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+=========================== == =======
+Developer # %
+=========================== == =======
+Stewart Smith 2 (33.3%)
+Michael Neuling 1 (16.7%)
+Andrew Donnellan 1 (16.7%)
+Cyril Bur 1 (16.7%)
+Gautham R. Shenoy 1 (16.7%)
+=========================== == =======