diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2017-04-27 09:32:02 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-05-25 09:45:36 -0400 |
commit | e0a1b4a4f6d9bd7927fddcc508d24f9218dfbb13 (patch) | |
tree | 2a88a7b68a8ed3b3dc7f3a54a8bf3bec9b411b45 /src/include/usr/util | |
parent | c578a6cdfbbc2b77c988548b81df6e1d9f202582 (diff) | |
download | talos-hostboot-e0a1b4a4f6d9bd7927fddcc508d24f9218dfbb13.tar.gz talos-hostboot-e0a1b4a4f6d9bd7927fddcc508d24f9218dfbb13.zip |
Add support for remembering deconfigs without GUARD
Currently on reconfig reboots only parts that are GUARDed
are remembered and reapplied.
- Add suport for a semi persisent PNOR partition,
HB_VOLATILE which Hostboot uses to keep track of the reconfig
reboots vs power off
- Add a new GUARD type specifically for reconfig loops
- Add RECALL_DECONFIG_ON_RECONFIG config flag to control
what gets added to GUARD partition
- During boot will add/clear guard records on deconfig based
on config flags and semi persisent state.
Change-Id: Iec636058cde8095c0c4216d1f95ae4fda554395e
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39780
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Stephen M. Cprek <smcprek@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include/usr/util')
-rw-r--r-- | src/include/usr/util/utilsemipersist.H | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/include/usr/util/utilsemipersist.H b/src/include/usr/util/utilsemipersist.H new file mode 100644 index 000000000..82943825e --- /dev/null +++ b/src/include/usr/util/utilsemipersist.H @@ -0,0 +1,83 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/usr/util/utilsemipersist.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2012,2017 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +#ifndef UTILSEMIPERSIST_H +#define UTILSEMIPERSIST_H + +/** + * @file utilsemipersist.H + * + * @brief Utilies to access the semi persistent memory + * + * + */ + +/*****************************************************************************/ +// I n c l u d e s +/*****************************************************************************/ + +// Utility Includes + +/*****************************************************************************/ +// Forwards +/*****************************************************************************/ + +//*****************************************************************************/ +// C o n s t a n t s +/*****************************************************************************/ +namespace Util +{ + enum + { + PERSIST_MAGIC = 0x48425f56, // HB_V + }; + + struct semiPersistData_t + { + uint32_t magic; //HB_V + uint32_t reboot_cnt; // Number of reboots with valid data + semiPersistData_t(): magic(0), reboot_cnt(0) {}; + } PACKED; + + /** + * @brief This function writes data structure to the HB semi persistent + * region. Data is flushed to storage once this call returns + * @param[in] i_data Structure to write + * + * @return none + */ + void writeSemiPersistData(const semiPersistData_t i_data); + + /** + * @brief This function reads data structure from the HB semi persistent + * region. If the region cannot be found it will return 0s for all data. + * User must check magic header to know if data is valid + * @param[in] o_data Structure to read + * + * @return none + */ + void readSemiPersistData(semiPersistData_t & o_data); +}; + +#endif //UTILMEM_H |