tree eed248d030dd026640f2ea68186662b90cd840fd
parent 9672b630594e75188f8cb433522186fdefbff7b6
author Stewart Smith <stewart@linux.ibm.com> 1551415691 +1100
committer Stewart Smith <stewart@linux.ibm.com> 1551415691 +1100

Bump hostboot stable version to latest hostboot

This is nominally to get the HBRT fix.

Abhishek Agarwal (1):
      L1 Rev istep 0.(6-8,11,13,14),1.1,2.(1-13,15,18-20,22,26,27,30,32,34) V2

Adam Hale (1):
      Memory Controller Axone initfiles - initial

Alvin Wang (9):
      Update setup_fw_boot_config() to read out actual values from attributes
      Update setup_fw_boot_config() to read out actual values from attributes
      Added p9a_omi_train procedure
      Adds p9a_omi_train procedure(START)
      Adds exp_draminit_mc
      Update setup_fw_boot_config() to read out actual values from attributes
      Adds empty files for exp_draminit_mc and p9a_omi_train
      Adds exp_draminit_mc
      Reinstates exp_draminit_mc with change_addr_mux_sel fix

Andre Marin (16):
      Add empty explorer "check_for_ready" procedure files
      Implement exp_check_for_ready
      Add DDIMM module functions into SPD facade
      Add L1 procedures for p9a and makefiles
      Rename exp procedures files to match FW doc
      Add empty generic memory effective attr xml for HB to mirror
      Port-over generic SPD attributes that shouldn't change per controller
      Add empty HWPs, UTs, and makefiles needed for Axone
      Add L1 procedures for p9a and makefiles
      Add empty p9a unit test and axone_pre_data_engine files for HB mirroring
      Add empty HWPs, UTs, and makefiles needed for Axone
      Add L1 procedures for p9a and makefiles
      Generalize set fields in pre_data_init
      Add empty pos, c_str files to split dimm specialization
      Add empty bulk_pwr and utils_to_throttle header files for HB mirror
      Port-over generic SPD attributes that shouldn't change per controller

Anusha Reddy Rangareddygari (2):
      FAPI_INF entering and exiting message updates
      Update hardware procedure metadata

Anuwat Saetow (1):
      Added initial copy of generic_memory_si_attributes.xml

Ben Gass (5):
      Update p9a.omi_init.scom.initfile
      Explorer registers and fields generated from dev
      Adds initfile for Explorer
      Adds initfile for Explorer
      Back out p9a_10 engd that breaks the initcompiler.

Bill Hoffa (1):
      HBBL LPC Error Checking

CHRISTINA L. GRAVES (6):
      Adding in LPC functional reset to sbe_lpc_init
      Adding in configurations for PNOR/LPC communication
      Fixing order of setting clock muxes & functional reset & removing sim only scoms
      p9_sbe_lpc_init fix with GPIO reset
      Adding in LPC and OPB timeout values
      Do the real LPC reset for DD2

Caleb Palmer (9):
      PRD: Adjust row repair capture data size
      PRD: PlatServices support for NVDIMM persistency lost msg
      Update Bad Bits and Row Repair for new MSS attrs
      Revert "PRD: Initial NVDIMM Support"
      PRD: Add MCFIR to capture group for mem mirror FFDC
      PRD: Explorer rule and makefile updates
      PRD: MPIPL Make sure PRD is initialized in startScrub
      PRD: NVDIMM isolation redesign
      PRD: Adjust dram repairs capture data max size

Chris Cain (1):
      HTMGT: Change OCC logs to info while recovery is still being attempted

Chris Steffen (2):
      P9 Xbus/DMI CM Workaround
      P9 Obus MNFG Errors Attribute Fix

Christian Geddes (21):
      Unset CONFIG_FILE env var if in standalone environment
      Make sure FIRDATA is filled in axone pnor, remove UVBWLIST section
      Update simics to latest build for Axone simics bringup
      Update OBUS PLL Bucket attribute getter with Axone EC levels
      Add call to p9a_ocmb_enable to istep 10.4
      Skip NPU scominit until ARTMISS register gets updated
      Fix issues w/ axone updates to simics scripts
      Disable Sync Test
      Add EEPROM caching device op
      Update i2c driver for OCMB chip
      Fix tags in exp_omi_train attribute xml
      Add expscom test cases
      Add call to exp_check_for_ready to istep 10.4
      Add new P9A hwp error xml path to fapi2 file generation makefile
      Set simics xml to match simics model for OCMB port numbering
      Update istep_mss modules makefile to generate mss accessors
      Add new path in EEPROM device op to allow reading from new EECACHE
      Update simics build and pull in Axone binary to pnor generation
      Use shell command to look up CEC_TYPE
      Add omi setup/training calls to istep 12
      Update simics build to include p9a_omi_train_check fixes

Corey Swenson (2):
      Use virtual address buffer to read mvpd rings
      Remove call to retrieve data from a previous runtime crash

Dan Crowell (11):
      Move libconsole into base image
      Add missing implied include to populate_hbruntime.H
      Add more agressive memory allocation calls
      Add a couple useful traces to the PNOR build script
      Use proper top-level include for fapi2 target
      Handle partial-bad MCS logic correctly
      Statically allocate work pages for PNOR Resource Provider
      Add ATTR_ENABLED_OBUS_BRICKS
      Adjust makefile directives for expscomtest
      Modify PNOR load order in SBE update to avoid OOM condition
      Method to execute testcases early in the boot

Daniel M. Crowell (1):
      Revert "Enhance RAS for case where boot firmware image is too big to load"

Dean Sanner (1):
      Find cpu struct directly in doorbell interrupt handler

Evan Lojewski (2):
      Add additional 2133 and 1866 ps values for spd parsing.
      Update to allow DDR4-SORDIMM modules to be used [3].

Greg Still (1):
      PM: fix cable pull issue in clearing clock sync upon PM Complex Reset

Ilya Smirnov (4):
      Secureboot: Enhanced Multinode Comm: Slave Node
      Secureboot: Enhanced Multinode Comm: Master Node
      Secureboot: Enhanced Multinode Comm: Quote Size Fix
      Secureboot: Enhanced Multinode Comm: Add size of quote & signature to slv quote

Jennifer A. Stofer (3):
      Revert "lpc_init: Correct LPC host controller timeout value"
      Revert "Adds exp_draminit_mc"
      Revert "Adds exp_draminit_mc"

Jenny Huynh (4):
      HW477626 Dangerous Elk - Reapply for all CDD12+ risk levels
      Axone core initfile update to match Nimbus DD23
      Adjust PVR Version for Axone
      Secure memory allocation and setup

Joachim Fenkes (9):
      p9_sbe_lpc_init: Fix LPC bus LRESET for DD2
      p9_sbe_lpc_init: Fix timeout setup
      p9_sbe_lpc_init: Add final check for errors
      p9_sbe_lpc_init: Improve reset
      lpc_init: Correct LPC host controller timeout value
      p9_sbe_lpc_init: Skip final error check for Fleetwood GA1
      FAPI2: Multicast API 1/2: Platform-breaking changes
      FAPI2: Multicast API 2/2: Introduce the actual multicast functions
      p9_sbe_npll_setup: Enable spread spectrum before starting PLL

Joe McGill (3):
      p9_query_mssinfo -- adjust total memory reporting
      p9_query_mssinfo -- fill mirror_policy regardless of platform mirror support
      allow option to enforce mirroring of all system memory

Li Meng (5):
      Adds some BCW safe delay for LRDIMM
      Adds workaround for LRDIMM to clear FIRs
      Adds new algorithm for DWL
      Adds RAS features to LRDIMM MRD_FINE and use fine_recorder class
      Fixes LRDIMM training issue

Louis Stermole (15):
      Add generic attribute accessor script and makefiles
      Add p9a_mss_volt procedure
      Add ATTR_MSS_MEM_MVPD_FWMS to generic xml and fix accessor
      Fix 1-rank row repair case in p9c draminit_training and draminit_mc
      Convert mss explorer and axone code to use attr accessors
      Add generic attribute accessor script and makefiles
      Add new MSS attributes for Axone
      Add ATTR_MSS_MEM_MVPD_FWMS to generic xml and fix accessor
      Convert mss explorer and axone code to use attr accessors
      Add p9a_mss_volt procedure
      Add new MSS attributes for Axone
      Convert mss explorer and axone code to use attr accessors
      Add p9a_mss_volt procedure
      Add generic attribute accessor script and makefiles
      Add new MSS attributes for Axone

Matt Derksen (4):
      Manually garded targets incorrectly being resource recovered
      Explorer_inband support: add response data buffer to getRSP
      OpenPOWER support for native and compatibility mode for DD2.3
      Framework for NVDIMM update

Matt Raybuck (3):
      Updates to processMrw.pl to fix erroneous chiplet ids
      Correct invalid HUID and chiplet id values for NPU targets
      Better logging for Partial Good Issues (2/2)

Matthew Raybuck (1):
      Move watchdog timer to prevent timeout

Mike Baiocchi (2):
      Add Node Communications Transfer Protocol
      Secureboot: Enable New Multinode Trustedboot Transfer

Nick Bofferding (3):
      Support tool that can package UCD* flash images into a binary
      Support reading UCD flash update LIDs
      Enhance RAS for case where boot firmware image is too big to load

Prasad Bg Ranganath (4):
      PPB:New attribute ATTR_PMCR_MOST_RECENT_MODE for PMCR request
      HB:Cme fir attribute reset fix
      PM HWP: Fix bug in stop clock procedure that effects mpipl
      HWP:Cache stop clocks complete fix

Prem Shanker Jha (3):
      VDM(Part 1): Introduced new members in CME and CPMR image headers
      SMF: Populates unsecure HOMER with SC2 instruction.
      PM HWP: Fixed error path bug pertaining to query STOP state.

Pretty Mariam Jacob (1):
      Added Alink changes in attributes and initfiles

Raja Das (1):
      Axone pibmem repair logic

Roland Veloz (2):
      Create FAPI mapping function for DDIM SPD data
      Added the HWP error XML file for the DDIM SPD data mapping function

Sampa Misra (1):
      fix VINI RT HW LX keyword for Phyp

Soma BhanuTej (1):
      Update p9a_10 engd - spy name changes

Stephen Glancy (10):
      Adds blank files for EFD API
      Fixes LRDIMM NTTM mode read timing for HW bug
      Adds blank Explorer MMIO setup files
      Adds explorer OMI training code
      Updates MCA write and read timings
      Adds p9a chip directory structure
      Adds blank files for explorer training handler
      Adds the explorer training response structure
      Adds blank files for generic bad bits code
      Adds DDIMM EFD decoder API

Sunil.Kumar (1):
      Level 2 Procedure - p9_sbe_lpc_init

Thi Tran (1):
      Change ATTR_MRW_ENHANCED_GROUPING_NO_MIRRORING name

Tsung Yeung (5):
      NVDIMM SBE Support to Trigger CSAVE - xip_customize
      Disable NVDIMM Trigger Before Draminit and Deassert DDR_RESETn During MPIPL
      Adjust STR enter sequence to enable immediate entry
      Disable maint address mode before rcd_load during NVDIMM post-restore
      Enable mss_scrub on MPIPL if NVDIMM is configured

duchen (1):
      Update FAPI2 functions to handle new template parms for multicast support

shlimeng (1):
      Add new algorithm for MREP and error log

spashabk-in (2):
      Introducing lpc utils source file
      Move lpc_rw to a source file

xiaozq (1):
      p9_query_mssinfo for single chip mss information query.

Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
