tree 14a079504275dc539d5c3d078dd35ff5b884fc29
parent 6cf7a1c65e461cdaa0c51ce34097974c0df58325
author Stewart Smith <stewart@linux.ibm.com> 1529981115 +1000
committer Stewart Smith <stewart@linux.ibm.com> 1529981115 +1000

hostboot master bump to cfa7304f5d6a12f59805477e7498635c67578dd6

Amit Tendolkar (2):
      SW419349: Handle override of deconfig by Error vs FCO reasons by association
      Adapt p9_sbe_check_master_stop15 for bad path on non-SBE platforms for fleetwood

Andrew Geissler (2):
      Ensure hwas state reflects resource recovery actions
      Ensure memory HUID's are node-relative

Ben Gass (1):
      Updating p9.core.scan.initfile settings for p9n 2.3

Bill Hoffa (3):
      Corrected data type to size for var in retrieveRepairDataMemBuf()
      Enable DMI Erepair
      Add kernel debug trace to Invalid IPC Message Errors

Caleb Palmer (2):
      Adjust Bad Dq Translation for CDIMMs
      PRD: Dont report error log for backlog count underflow FIR

Chris Steffen (1):
      Updating Channel Fail Mask

Christian Geddes (2):
      Update PEER_TARGET values to be NULL on MPIPL if needed
      Remove deprecated VCS_I2C_RAIL attribute from hb code

Dan Crowell (3):
      Update MAGIC instruction for Simics
      Force ATTR_PROC_EFF_FABRIC_CHIP_ID to correct values
      Update some defaults for AVSBUS attributes

Elizabeth Liner (1):
      Adding Chiplet Num testcases for MC, MI and DMI in cumulus

Greg Still (2):
      PM: Clear error injection bits before special wake-up in PM complex reset
      PM: Fix double biases value into safe mode frequency

Ilya Smirnov (2):
      Secure Boot: Support API to fence off all node processors' secure mailboxes
      New Global For Console Daemon

Jaymes Wilks (1):
      HRMOR relative addressing for PHyp SP ATTN area dump

Joe McGill (4):
      use putscomUnderMask API to update FBC DL control register
      shift OBUS FIR programming inits for secure boot
      correctly propogate bad return code from p9_adu_coherent_status_check
      p9_throttle_sync -- clear refresh sync type after issuing IPL sync

Louis Stermole (1):
      Fix p9c_generic_shmoo unit test to work with corrected bad bits attr

Marty Gloff (1):
      HBRT attrrp depends on node zero being present

Michael Pardeik (2):
      P9N/P9C util to throttle HWP updates for min util and safemode
      centaur mba initfile update for refresh reset interval

Mike Baiocchi (3):
      Update bbuild to b0608a_1823.920 and CUMULUS/Jenkins Fix
      Add procedure for istep 18's Node Communication ABUS Exchange
      Add TPM Calls to Node Communication ABUS Exchange Procedure

Nick Bofferding (2):
      Secure Boot: Centaur Security: Fix handling of 9 Centaur registers
      Secure Boot: Set FIR mask bits for inactive OBUS links during host coalesce

Nick Klazynski (1):
      Add RL0/RL1 support for CDD1.2

Prachi Gupta (1):
      Added in a sleep after we winkle in istep 18 to avoid race conditions

Prem Shanker Jha (1):
      STOP API: API conditionally supports 255 SCOM restore entries for each quad.

Rick Ward (1):
      Centaur Channel Checkstop (runtime)

Roland Veloz (1):
      Create a utility to add/remove entries from a link list within a given buffer

Sakethan R Kotta (2):
      untrusted SBE reserved memory region to Rsvd Mem Trace Buf Section
      HBRT Reserved Mem Trace Buffer implementation.

Stephen Glancy (2):
      Updates training advanced workarounds to run after a failure
      Updates the training advanced algorithm

Thi Tran (1):
      Fix data storage exception when PRD runs in istep 12.

Zane Shelley (9):
      PRD: MBA command resume not incrementing address
      PRD: shift UCS and HA chiplet masks to match chiplet FIRs
      PRD: fix bug that bypasses TPS ban support
      PRD: remove unused TD queue parameters
      PRD: All TPS bans on MCA target should cause fetch CE masking
      PRD: reduce number of ways TPS can be banned
      PRD: Ban TPS if UE found during VCM, DSD, or TPS procedures
      PRD: abort TPS if chip mark placed during procedure
      PRD: fixed the per-symbol threshold in MBA TPS

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