tree 379e941cd28830ed5cba4d08061b4154ac431960
parent 3bd48fcb7cb70a905096ce2b8b6457d7b3bd6f75
author Stewart Smith <stewart@linux.ibm.com> 1527753978 +1000
committer Stewart Smith <stewart@linux.ibm.com> 1528069941 -0500

hostboot master bump to 3ecd7cf99fb44f88a24daca97874e512181ec8f1

Andrew Geissler (3):
      Add test case for getChildTargetsForCDG
      Update getChildTargetsForCDG to use CEN PORT/DIMM
      Move existing tests to use new helper function

Bill Hoffa (1):
      Set Master Proc Attrs during MPIPL FSP Fail-Over Scenario

Brian Stegmiller (1):
      ATTN: Examine correct proc for handling Centaur Attentions

Caleb Palmer (4):
      PRD: Runtime VCM support for Centaur
      PRD: Fix template in chipMarkCleanup
      PRD: Runtime TPS for Centaur/Cumulus
      PRD: use isValid() check before MemSymbol::getDram()

Christian Geddes (2):
      Clear obus fir mask attrs after restoring obus firmasks
      Save and restore OBUS related firmasks

Dan Crowell (4):
      Fix indirect scoms at runtime under Opal
      Increase default watchdog timeout to 10 minutes
      Defer handling attentions on non-master proc until after SMP is up
      Add some MAGIC instructions to aid Simics optimization

Ilya Smirnov (1):
      Fix range Tags in attribute_types.xml

Jaymes Wilks (1):
      Support TPM PCR Poisoning

Louis Stermole (2):
      Change mss_freq algorithm to deconfigure ports to achieve common DIMM freq
      Add extra DRAM reset after RCD load on Nimbus

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

Marty Gloff (1):
      Clear Block Spec Deconfig Attribute when Gard is removed

Michael Pardeik (1):
      P9C Memory Throttle HWP Updates

Mike Baiocchi (3):
      Add Secureboot Info to FFDC of I2C Errors
      Establish Base Support For Sending Mailbox Messages Across XBUS/ABUS
      Improve FFDC for new Node Comm Device Driver

Prachi Gupta (3):
      Fixup all the voltage rail's ID attribute for both proc and cent
      call mss_volt* hwps with membufs that have same VDDR_ID
      p9c_mss_volt_dimm_count: add a const to the input parameter

Prasad Bg Ranganath (1):
      PM_RESCLK: Clear override bits of CACCR in reset flow

Prem Shanker Jha (1):
      PM: Addressed TODOs in hcode image build HWP.

Stephen Glancy (4):
      Fixes centaur bad bitmap processing
      Enables DDR4 training advanced
      Updates Centaur training to continue on fails for FW
      Fixes Centaur code to use ATTR_BAD_DQ_BITMAP

William A. Kennington III (1):
      ipmiwatchdog: Limit the number of resets

Zane Shelley (14):
      PRD: Simplify templates in memory CE functions
      PRD: Maintenance RCE handling during background scrub for Centaur
      PRD: Maint soft/inter/hard CE handling during background scrub for Centaur
      PRD: Update MemTdCtlr::initialize() for Centaur
      PRD: removed unused P8 code
      PRD: flush CE and RCE tables when a TD procedure is complete
      PRD: cleanup after placing/verifying a chip mark on Centaur
      PRD: standardized VCM nextStep() and analyzePhase()
      PRD: ECC analysis and command handling for DRAM sparing
      PRD: TPS analyzePhase() for Centaur
      PRD: TPS startNextPhase() for Centaur
      PRD: TPS nextStep() for Centaur
      PRD: TPS analyzeEccErrors() for Centaur
      PRD: TPS analyzeCeStats() for Centaur

aravnair-in (1):
      Fix instance path for SMPGROUP target

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