summaryrefslogtreecommitdiffstats
path: root/src/include/usr
diff options
context:
space:
mode:
authorGlenn Miles <milesg@ibm.com>2019-02-22 15:57:25 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2019-03-11 17:11:13 -0500
commit8147343269628e7bdab1ab25487e0ada3ace95e6 (patch)
treead7fb4cbddc55dafe6b7ce9fb402bf7eafd9f960 /src/include/usr
parentff62338a569993f34032f02c04cf484a058aa9bd (diff)
downloadtalos-hostboot-8147343269628e7bdab1ab25487e0ada3ace95e6.tar.gz
talos-hostboot-8147343269628e7bdab1ab25487e0ada3ace95e6.zip
Use thread_local for globals that require it
Change-Id: I84294a60c53da2501b7bb1b53fe84d9f9709f8b1 RTC:147599 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/72379 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include/usr')
-rw-r--r--src/include/usr/fapi2/plat_hw_access.H6
-rw-r--r--src/include/usr/fapi2/plat_hwp_invoker.H26
2 files changed, 17 insertions, 15 deletions
diff --git a/src/include/usr/fapi2/plat_hw_access.H b/src/include/usr/fapi2/plat_hw_access.H
index 0d4e56a2b..1ce681f61 100644
--- a/src/include/usr/fapi2/plat_hw_access.H
+++ b/src/include/usr/fapi2/plat_hw_access.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2015,2018 */
+/* Contributors Listed Below - COPYRIGHT 2015,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -278,7 +278,11 @@ void platSetOpMode(const OpModes i_mode);
/// @return the operational mode
OpModes platGetOpMode(void);
+#ifndef PLAT_NO_THREAD_LOCAL_STORAGE
+extern thread_local OpModes opMode;
+#else
extern OpModes opMode;
+#endif
//--------------------------------------------------------------------------
// PIB Error Mask Functions
diff --git a/src/include/usr/fapi2/plat_hwp_invoker.H b/src/include/usr/fapi2/plat_hwp_invoker.H
index 894cc1927..0eace34bc 100644
--- a/src/include/usr/fapi2/plat_hwp_invoker.H
+++ b/src/include/usr/fapi2/plat_hwp_invoker.H
@@ -45,12 +45,10 @@
#include <xscom/piberror.H>
namespace fapi2 {
-//@fixme-RTC:147599-Remove when thread-local storage works right
-///
-/// @brief Lock or unlock the HWP futex
-/// @param[i] i_lock true:lock the mutex, false:unlock
-///
-void hwpLock( bool i_lock );
+/*
+ * @brief Resets all HWP thread_local vars
+ */
+void hwpResetGlobals(void);
}
/**
@@ -68,7 +66,7 @@ void hwpLock( bool i_lock );
#define FAPI_INVOKE_HWP(ERRHNDL, FUNC, _args_...) \
{\
- fapi2::hwpLock(true); \
+ fapi2::hwpResetGlobals(); \
fapi2::ReturnCode invoke_rc; \
FAPI_EXEC_HWP(invoke_rc, FUNC, ##_args_); \
ERRHNDL = fapi2::rcToErrl(invoke_rc);\
@@ -76,7 +74,7 @@ void hwpLock( bool i_lock );
ERRHNDL->collectTrace(FAPI_IMP_TRACE_NAME,256);\
ERRHNDL->collectTrace(FAPI_TRACE_NAME,384);\
}\
- fapi2::hwpLock(false); \
+ fapi2::hwpResetGlobals(); \
}
/**
@@ -95,14 +93,14 @@ void hwpLock( bool i_lock );
#define FAPI_INVOKE_HWP_RC(ERRHNDL, _RC, FUNC, _args_...) \
{\
- fapi2::hwpLock(true); \
+ fapi2::hwpResetGlobals(); \
FAPI_EXEC_HWP(_RC, FUNC, ##_args_); \
ERRHNDL = fapi2::rcToErrl(_RC);\
if( ERRHNDL ) {\
ERRHNDL->collectTrace(FAPI_IMP_TRACE_NAME,256);\
ERRHNDL->collectTrace(FAPI_TRACE_NAME,384);\
}\
- fapi2::hwpLock(false); \
+ fapi2::hwpResetGlobals(); \
}
/**
@@ -117,9 +115,9 @@ void hwpLock( bool i_lock );
*/
#define FAPI_CALL_HWP( RETURN, FUNC, _args_...) \
{\
- fapi2::hwpLock(true); \
+ fapi2::hwpResetGlobals(); \
RETURN = FUNC(_args_); \
- fapi2::hwpLock(false); \
+ fapi2::hwpResetGlobals(); \
}
/**
@@ -133,9 +131,9 @@ void hwpLock( bool i_lock );
*/
#define FAPI_CALL_HWP_NORETURN( FUNC, _args_...) \
{\
- fapi2::hwpLock(true); \
+ fapi2::hwpResetGlobals(); \
FUNC(_args_); \
- fapi2::hwpLock(false); \
+ fapi2::hwpResetGlobals(); \
}
OpenPOWER on IntegriCloud