tree c7d76c25d3f99ef76d6d8d14c3e7bcd04b8a85b3
parent 363ff58ddf5cb0c2a677fc4b9a698e05ac38369f
author Stewart Smith <stewart@linux.ibm.com> 1529302041 +1000
committer Stewart Smith <stewart@linux.ibm.com> 1529302078 +1000

hostboot master bump to 67ae5190164c9b7644a9db9a3ed5d71a4b563cad

Andrew Geissler (3):
      Use last l3 cache object for SIMICS trace
      Look for any parent on deconfigure
      Make HUID values node-relative

Ankit Dhingra (1):
      Add support for TOD osc switch interrupt

Ben Gass (3):
      Update p9n_23 engd with n23_e9108_3_tp105_ec408_soa_sc_u138_01 data
      Correct Safe mode freqency to UltraTurbo compare error message.
      Shorten A-link timers for sim. Add polling for A-link training.

Benjamin Weisenbeck (6):
      PRD: XBUS spare deployed should be predictive in mnfg
      PRD: Support for handling core unit checkstop
      PRD: Callout both PCI clocks by position for double clock failure
      PRD: Cleanup RC handling in PLL code
      PRD: Fix core checkstop masking
      PRD: Add missing centaur PLL CheckErrorType plugin

Bill Hoffa (4):
      Set attribute PROC_MASTER_TYPE during MPIPL
      Add 2nd query to hbRelease script finding commits in release-fips920
      Force hbRelease to search 'master' branch
      Multinode MPIPL INTRP Initialization Changes

Brian Bakke (2):
      Fixes to node IPC messaging to handle non-zero base addresses
      Itep16 substep order does not match documentation

Brian Stegmiller (1):
      PRD: DMI Lane Repair

CHRISTINA L. GRAVES (1):
      p9_fab_iovalid fix to clear action0/1 bits corresponding w/ link being enabled

Caleb Palmer (3):
      PRD: Fix template in applyRasPolicies
      Fix Bad Dq Centaur Translation
      Temp remove bad bit translation until attr enabled for Fleetwood

Chris Steffen (3):
      DMI I/O Checkin
      I/O Metadata Cleanup
      SW431549 DMI Read Erepair

Christian Geddes (4):
      Refactor re-init of targeting data during MPIPL/HBRT startup
      Link PLID for failing SBE recovery in PRD path w/ other related logs
      Fix bugs in core checkstop escalation manipulation during HB
      Deprecate legacy ATTR_MBA_PORT/ATTR_MBA_DIMM

Dan Crowell (7):
      Write Hostboot HRMOR into core scratch reg 1
      Always deconfigure the parent of any deconfigured DIMM
      Add RESOURCE_RECOVERED event for all Targets
      Add clock callout enums for specific clock sources
      Fix for multinode HBRT use of VPD
      Remove EXTERNAL_VRM_STEPDELAY
      Debug improvements for exceptions and OOM hangs

Daniel Howe (1):
      dd1.1+ DL training procedure updates

Elizabeth Liner (1):
      Re-enabling test cases that were turned off during bringup

Greg Still (1):
      PM: clear Hcode error injection bit upon PM complex reset

Ilya Smirnov (2):
      Secure Boot: Set trusted boot enabled in HDAT considering all nodes
      Add Locking of Abus Sec Mailboxes

Jaymes Wilks (1):
      Create attributes for intended PHYP ATTN areas

Jenny Huynh (1):
      Changing NXCQFIR(34) RNG control logic error to checkstop

Joe McGill (15):
      p9_sbe_common -- mark TP LFIR bits 18:20 recoverable
      support IO reconfig loop for OBUS DL link training failures
      p9_sbe_scominit -- unmask TP LFIR bit 37 for Cumulus
      p9_sbe_common -- mark TP LFIR bit 37 as recoverable
      FBC Level 1 procedures
      L2 HWPs -- p9_smp_link_layer and p9_fab_iovalid
      L2 - Fabric updates for multi-chip support
      p9_fab_iovalid -- invoke link validation subroutine
      L3 update -- p9_fab_iovalid
      IO, FBC updates to enable ABUS for Fleetwood
      shift XBUS FIR programming inits for secure boot
      p9_fab_iovalid -- secure ABUS mailboxes after iovalid is asserted
      support IO reconfig loop for OBUS DL link training failures
      p9_fab_iovalid -- remove code setting ABUS security lock
      shift OBUS FIR programming inits for secure boot

Louis Stermole (3):
      Change MBSFIR[27] to be a conditional channel fail on Cumulus
      Restore ATTR_CEN_SCHMOO_MULTIPLE_SETUP_CALL after shmoos to fix masking errors
      Add bad bit setting to p9c training advanced

Marty Gloff (1):
      Fix for SBE_P9_XIP_CUSTOMIZE_UNSUCCESSFUL during ipl with one EX

Matt Derksen (4):
      Fix function name of p9c_query_channel_failure
      Reenable getMemBufRawCardType calling.
      DRAM sparing support functions
      Additional DRAM sparing support functions

Mike Baiocchi (1):
      Add Mutex and Error Recovery for Node Communications

Nick Bofferding (8):
      Secure Boot: Purge SW signature cache for multinode binaries
      Secure Boot: Disable x-bus node communication
      Fix memory leaks associated with various msg_sendrecv calls
      Memory Management: Fix coalesce to track holes in the page management
      Secure Boot: Defer init of Centaur SCOM cache register definitions
      Secure Boot: Enabled final Secure Boot settings for Zeppelin
      Secure Boot: Disable cache of 2010800 Centaur register
      Remove p9_fab_iovalid.C in order to re-mirror it

Prachi Gupta (4):
      add a call to mss_volt_dimm_count hwp
      Add support for missing memory behind master proc
      missing memory: istep 7 and 14 changes
      getMBvpdAttr: Updates for DDR3 support

Prasad Bg Ranganath (2):
      PPB: Bug fix in computing IAC Vdn value
      PM:Remove deprecated attributes

Richard J. Knight (3):
      Add HX keyword attribute for PCIe bifurcation support
      Fix SRC BC8A1A20 - RUNTIME::RC_INVALID_RHB_INSTANCE
      Fix for SW432203: fails istep at istep host_runtime_setup

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

Roland Veloz (1):
      Add support for getting SBE Capabilites; extract SBE Version, Commit ID and Tags

Ryan Black (1):
      Change npu ATSD timeout to disabled

Santosh Balasubramanian (1):
      Secure Boot: Centaur Security: Initial sensitive register list

Soma BhanuTej (1):
      Adding p9c 1.3 support.

Stephen Glancy (4):
      Fix MBS mask FIR for Obus recovery
      Fixes CKE levels during RCD initialization
      Fixes IPL UE callout code
      Removes erroneous FAPI ERR print

Sumit Kumar (1):
      eRepair: Fixed lanes handling of target types

Swathi Madhuri Bhattiprolu (1):
      Implement the VPD backend for these attributes

Thi Tran (1):
      Fix unbalance FCO distribution between procs

Venkatesh Sainath (1):
      Fleetwood 2N specific targeting binary generation

William G. Hoffa (1):
      Revert "Force hbRelease to search 'master' branch"

Yue Du (1):
      STOP: Handle Quad Special Wakeup Done while pm_reset

Zane Shelley (23):
      PRD: refined handleChnlFail() for Centaur
      PRD: FFDC registers for channel failure attentions
      PRD: updates from latest RAS XML
      PRD: removed old P8 memory system system code
      PRD: typo in runtime DRAM sparing signature
      PRD: create MarkStore::applyRasPolicies()
      PRD: remove NX unit checkstop support
      PRD: removed runtime deconfig for channel failure
      PRD: removed depricated ErrDataService::handleUnitCS()
      PRD: removed depricated unit dump support
      PRD: removed depricated rt deconfig and unit dump interfaces
      PRD: removed erroneous trace in getMemBufRawCardType()
      PRD: fixed erroneous trace in PlatConfigurator::build()
      PRD: removed redundant ECC capture data
      PRD: remove empty TD controller data
      PRD: fixed parser bugs in TD_CTLR_DATA
      PRD: set Cumulus command list timeout to match Nimbus
      PRD: add CE table traces for MNFG mode thresholds
      PRD: enable FSP channel fail isolation on processor side of bus
      PRD: use correct symbol when writing MBA markstore
      PRD: MNFG spare DRAM deploy needs to deploy on both MBA ports
      PRD: Do not abort on UE during MBA TPS
      PRD: Set 'too many bus errors' in DMIFIR to UNIT_CS

aravnair-in (3):
      Comment why we add INSTANCE_PATH specifically for SMPGROUP
      Set DECONFIG_GARDABLE for  SMPGROUP target
      Deconfig by association rule for SMPGROUP targets

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