Release Notes for OpenPower Firmware v2.0.8
===========================================

op-build v2.0.8 was released on Monday August 6th, 2018 and replaces op-build v2.0.7 as the current stable release in
the 2.0.x series.

It is recommended that v2.0.8 be used over any previous v2.0.x version on POWER9 systems due to the bug fixes contained
within.

Updated Packages
----------------

+--------------------+-------------------------+------------------------------+----------------------------------------+
| Package            | Old Version             | New Version                  | Platforms                              |
+====================+=========================+==============================+========================================+
| hcode              | hw072318a.op920         | hw080418a.op920              | zaius, p9dsu, witherspoon, romulus     |
+--------------------+-------------------------+------------------------------+----------------------------------------+
| hostboot           | 58b3d491a4354           | d0332131ea0c0                | zaius, p9dsu, witherspoon, romulus     |
+--------------------+-------------------------+------------------------------+----------------------------------------+
| hostboot-binaries  | hw072318a.op920         | hw080418a.op920              | firestone, garrison, zaius, p9dsu,     |
|                    |                         |                              | palmetto, vesnin, witherspoon,         |
|                    |                         |                              | habanero, barreleye, romulus           |
+--------------------+-------------------------+------------------------------+----------------------------------------+

Package: hcode
--------------

`Repository <https://github.com/open-power/hcode>`__

Patches
~~~~~~~

Commits
~~~~~~~

Yue Du (1):

-  `fa7d3943af91 <https://github.com/open-power/hcode/commit/fa7d3943af91>`__ STOP: Fix incorrect solution in 61385

hostboot (3):

-  `7903b32b3d7e <https://github.com/open-power/hcode/commit/7903b32b3d7e>`__ Release tag information updated for
   hw080118a.op920
-  `b7536dec8c2a <https://github.com/open-power/hcode/commit/b7536dec8c2a>`__ Release tag information updated for
   hw080318a.op920
-  `9b0cff5c99d7 <https://github.com/open-power/hcode/commit/9b0cff5c99d7>`__ Release tag information updated for
   hw080418a.op920

Package: hostboot
-----------------

`Repository <https://github.com/open-power/hostboot>`__

.. _patches-1:

Patches
~~~~~~~

.. _commits-1:

Commits
~~~~~~~

Andres Lugo-Reyes (1):

-  `52d75b98b6b4 <https://github.com/open-power/hostboot/commit/52d75b98b6b4>`__ HTMGT: WOF Reset Disable Flag

Greg Still (1):

-  `716483393aec <https://github.com/open-power/hostboot/commit/716483393aec>`__ PM: Move PBAFIR checkstops to
   recoverable attentions

Nick Bofferding (1):

-  `af6f77c1aab7 <https://github.com/open-power/hostboot/commit/af6f77c1aab7>`__ i2c: Don’t wait for SDA to go high
   before sending slave stop command

Nick Klazynski (1):

-  `efb7cc5f4a17 <https://github.com/open-power/hostboot/commit/efb7cc5f4a17>`__ Clockgate disable workaround for
   HW452921

Prem Shanker Jha (1):

-  `c5efa55e3247 <https://github.com/open-power/hostboot/commit/c5efa55e3247>`__ STOP_Recovery: Added hwp changes to
   support error log parser.

Raja Das (1):

-  `5de34dd6c24d <https://github.com/open-power/hostboot/commit/5de34dd6c24d>`__ Inverted logic of hasClock bit in Clock
   Status register

Rick Ward (1):

-  `25d11acf0292 <https://github.com/open-power/hostboot/commit/25d11acf0292>`__ Host went to kernel panic after
   gard’ing PEC0/PHB0 (PCIFIR CS)

Yue Du (1):

-  `a83a93a35943 <https://github.com/open-power/hostboot/commit/a83a93a35943>`__ PM: Prevent Core-L2 Quiesce from
   removing PM_EXIT upon SPWU

Zane Shelley (2):

-  `14ae5a21b925 <https://github.com/open-power/hostboot/commit/14ae5a21b925>`__ PRD: Disable reading/writing lane
   repair VPD
-  `bd04abf36c3f <https://github.com/open-power/hostboot/commit/bd04abf36c3f>`__ PRD: change threshold for L3FIR[28] LRU
   parity error

nagurram-in (1):

-  `d0332131ea0c <https://github.com/open-power/hostboot/commit/d0332131ea0c>`__ attribute ECID value updation in hdat
   pcrd structure
