diff options
author | aalugore <aalugore@us.ibm.com> | 2015-08-24 13:42:24 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-09-18 19:31:11 -0500 |
commit | b672d269a8b235d0e4b4555d39192194af1bd55a (patch) | |
tree | 20e3c01961df4cf4d71a1f590a5b4861f6e3f60a /src/include/util | |
parent | 66569e88a40376b4881bef6c23df411380c8f367 (diff) | |
download | talos-hostboot-b672d269a8b235d0e4b4555d39192194af1bd55a.tar.gz talos-hostboot-b672d269a8b235d0e4b4555d39192194af1bd55a.zip |
Function to set Nest Frequency based off DIMM memory capability
-Needed for 32x32GB DIMM support
-Finds max capable frequency of system and all present DIMMs
and deconfigures any DIMM that cannot run at desired frequency
-If necessary, Sets Nest Freq and triggers SBE update
Change-Id: I9bba92f55f1b67ff4a15d79113f19d39272ec72d
RTC:122884
Depends-on:I1dca7196cd02a2704a238665b73b522c9e103936
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/17829
Tested-by: Jenkins Server
Tested-by: Jenkins OP Build CI
Tested-by: FSP CI Jenkins
Tested-by: Jenkins OP HW
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/util')
-rw-r--r-- | src/include/util/algorithm.H | 18 | ||||
-rw-r--r-- | src/include/util/align.H | 17 |
2 files changed, 20 insertions, 15 deletions
diff --git a/src/include/util/algorithm.H b/src/include/util/algorithm.H index 54baa029d..dac0f47c9 100644 --- a/src/include/util/algorithm.H +++ b/src/include/util/algorithm.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2015 */ +/* [+] 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. */ @@ -52,6 +54,20 @@ namespace Util static const T value = (a > b) ? a : b; }; + /** + * @brief - utility function that determines if a given number is + * power of 2. + * + * @param[in] i_num - given number. + * + * @return bool - True if the number is a power of 2, False otherwise. + */ + template <typename T> + bool isPow2(T i_num) + { + return (!(i_num & (i_num-1))); + } + }; }; #endif diff --git a/src/include/util/align.H b/src/include/util/align.H index e0132b2b7..10a836972 100644 --- a/src/include/util/align.H +++ b/src/include/util/align.H @@ -51,18 +51,7 @@ #define ALIGN_MEGABYTE(u) (ALIGN_X(u,MEGABYTE)) #define ALIGN_MEGABYTE_DOWN(u) (ALIGN_DOWN_X(u,MEGABYTE)) -// Returns a number that is aligned to the next highest power of 2 number of -// pages for the given buffer. -#define ALIGN_TO_NEXT_POWER_OF_TWO_PAGES(b) ({\ - unsigned int v = ALIGN_PAGE(b)/PAGE_SIZE;\ - v--;\ - v |= v >> 1;\ - v |= v >> 2;\ - v |= v >> 4;\ - v |= v >> 8;\ - v |= v >> 16;\ - v++;\ - v * PAGE_SIZE;\ - }) - +// Return a number rounded to the next power of two. +#define ALIGN_POW2(u) ((u&(u-1)) ? 1 << (64 - __builtin_clzl(u)) : u) +#define ALIGN_POW2_DOWN(u) (u ? 1 << (63 - __builtin_clzl(u)) : 0) #endif |