tree bfacc0f741153cec5bdae79a005efce2470bba7e
parent 2cb332888c1d321b5537190d0cfe926185445c9d
author Stewart Smith <stewart@linux.ibm.com> 1527061465 -0500
committer Stewart Smith <stewart@linux.ibm.com> 1527061465 -0500

hostboot bump to a3cf4f273a3ee1a2f91091f653eec7f4e8623c77

Adam Hale (1):
      Added RMW Thresh10 Spec Disable to initfiles

Andre Marin (1):
      Add additional comparison function objects into functional header

Andres Lugo-Reyes (1):
      Fix off-by-one error when counting WOF reset counts

Ben Gass (1):
      Set TRAIN_TIME to 0 for simulation.

Benjamin Weisenbeck (1):
      PRD: Add post analysis function for Centaur PLL

Brian Bakke (1):
      Fixes to node IPC messaging to handling non-zero base addresses

Brian Stegmiller (1):
      PRD: Update TD_CTLR_DATA with port information

Caleb Palmer (6):
      Rename MBA_PORT and MBA_DIMM attrs
      PRD: Update getDimmDqAttr for Centaur
      PRD: UE callout rank if no dimm callout
      PRD: getConnectedChild proc to membuf bug fix
      PRD: Adjust proc to membuf getConnectedChild
      PRD: Resume maint cmd support for MBA

Christian Geddes (3):
      Deconfig record can't get added to vitalAttn elog on FSP
      Create HWP to save/restore OBUS fir masks
      Slave SBE scratch regs must be up to date before continueMPIPL called

Claus Michael Olsen (1):
      Update to p9_xip_tool to handle stand-alone DDCO ring files.

Dan Crowell (5):
      Force hb dump on VFS crashes
      FFDC enhancements for core activate fails
      Removing attributes that got added back in a bad merge
      Centaur DD1.3 Bucket Support
      Add SMP_CABLE to PartCallout list

Daniel Howe (1):
      Updates to pb_cfg_follow_scope_rate_jump_level and pb_cfg_np_cmd_jump_cmd_rate

Daniel M. Crowell (1):
      Revert "Set HB Dump Flag in TI Data on any TI with SRC"

Elizabeth Liner (1):
      Set up core checkstop escalation using HWP

Ilya Smirnov (4):
      Check if Console Library is Loaded Before Printing to Console
      New Attribute For Unusable TPMs
      Add Proc # to TPM's Affinity Path
      Marked Failed TPMs Unusable For Alignment Check

Jaymes Wilks (2):
      New API to Retrieve Random Number from the TPM
      Remove workarounds for multinode HDAT support

Jim Yuan (1):
      Fix FRU board mfg date and time.

Joe McGill (2):
      enable spreading via SS PLL for Fleetwood platform
      p9_spr_name_map -- change mnemonic for SPR 511 to SMFCTRL

John Rell (1):
      jgr18042600 Changed rx_recal_abort_dl_mask=0 for cumulus HW446964

Louis Stermole (2):
      WR_LVL Termination Fix (Qoff) for p9c, DDR4 only
      Fix p9c mss_ccs_fail_type function to return valid RC when it fails

Luke Mulkey (1):
      P9C Memory Throttle Updates (new HWPs and new ISDIMM Power Curve support)

Marty Gloff (2):
      Set HB Dump Flag in TI Data on any TI with SRC
      Improve resource recovery path to handle memory plugging rules

Matt Derksen (2):
      Checks for channel failure in memory.
      Update addExtMemMruData for Cumulus

Matthew Hickman (1):
      Added p9_mss_memdiag for cronus ipl and modified scrub for step 16

Meng Li (1):
      Get SN from BMC and update into PVPD EEPROM

Mike Baiocchi (3):
      Remove System Level TCE Attributes
      Add option to masterProcChipTargetHandle() to return functional chip
      Skip Diagnostic Mode for I2C Resets over FSI In All Cases

Nick Bofferding (2):
      Secure Boot: Inform FSP of key transition progress
      Secure Boot: Remove cMFSI fencing TODO

Nick Klazynski (3):
      HW447585, HW447589, HW439303, Fix CDD1.2 security setting
      Enable full ERAT for NDD2.2+ and CDD1.1+
      Disable 2-for-1 on NDD2.2- and CDD1.2-

Prachi Gupta (2):
      DECONFIG_GARDABLE: add no_export tag, don't want MRW to override
      wrap_test: set MFG_WRAP_TEST_LINKS_SET on the destination target

Prasad Bg Ranganath (2):
      SBE:PUTRING: Add callout support for checkword mismatch failure
      PM reset: Fix disable resclk procedure

Prem Shanker Jha (1):
      SplWkup: Fixed issue in FFDC collection in case of special wakeup timeout.

Richard J. Knight (2):
      Add centaur dynamic VDDR code to hostboot
      Add fix for HDAT Fail in Hostboot istep 21: BC8A1A20

Rick Ward (1):
      RTC189294 - Centaur Channel Checkstop (Runtime)

Sameer Veer (1):
      Include release track info in list-of-commits email

Soma BhanuTej (1):
      Adding p9c DD13 support

Stephen Glancy (2):
      Adds cumulus unit test support
      Adds MRW support for x4/x8 DIMM configurations

Sumit Kumar (2):
      Erepair HWP - Include target type DMI
      Add check for copyright date if its begin-end years same

Swathi Madhuri Bhattiprolu (2):
      Disable memory mirroring in simics temporarily
      Verify frequency attributes across nodes to match with that of master node

Thi Tran (1):
      Double frequency of coalescing memory fragmentation

William A. Kennington III (3):
      istepdispatcher: When trying to set the watchdog, clear DONT_STOP
      istepdispatcher: Reset the watchog to enable it
      istep21: Keep the watchdog running into the host payload

Zane Shelley (13):
      PRD: fix address registers for fetch ECC errors
      PRD: move MBA maint HWPs to PRD library
      PRD: enable startScrub() support for Centaur
      PRD: remove unused P8 memory domain files
      PRD: remove unused P8 memory data bundle files
      PRD: callout connented L4 bug
      PRD: refined cleanupChnlAttns() for Centaur
      PRD: add getConnectedChild() support from proc to membuf
      PRD: refined cleanupChnlFail() for Centaur
      PRD: Callout MBA LOW with no gard on RCD parity errors
      PRD: Remove ForceRead() from MemAddr utils
      PRD: scrub resume counter for MBA runtime scrub commands
      PRD: support to determine if BG scrub can resume after stop-on-error

nagurram-in (2):
      HDAT: Fix to pass mcbist target for mem bus frequency API
      HDAT: New attribute LOCATION_CODE support for fru target

spashabk-in (1):
      Remove clear(step 3) of reset vectors

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