summaryrefslogtreecommitdiffstats
path: root/src/include/util
diff options
context:
space:
mode:
authoraalugore <aalugore@us.ibm.com>2015-08-24 13:42:24 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-09-18 19:31:11 -0500
commitb672d269a8b235d0e4b4555d39192194af1bd55a (patch)
tree20e3c01961df4cf4d71a1f590a5b4861f6e3f60a /src/include/util
parent66569e88a40376b4881bef6c23df411380c8f367 (diff)
downloadtalos-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.H18
-rw-r--r--src/include/util/align.H17
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
OpenPOWER on IntegriCloud