diff options
Diffstat (limited to 'src/sbefw')
-rw-r--r-- | src/sbefw/core/sbecmdprocessor.C | 7 | ||||
-rw-r--r-- | src/sbefw/core/sbemain.C | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/sbefw/core/sbecmdprocessor.C b/src/sbefw/core/sbecmdprocessor.C index c0cf0353..2d4e77b0 100644 --- a/src/sbefw/core/sbecmdprocessor.C +++ b/src/sbefw/core/sbecmdprocessor.C @@ -455,6 +455,11 @@ void sbeAsyncCommandProcessor_routine(void *arg) ReturnCode rc = FAPI2_RC_SUCCESS; Target<TARGET_TYPE_PROC_CHIP > proc = plat_getChipTarget(); + + // Run the procedure atomically + PkMachineContext ctx; + pk_critical_section_enter(&ctx); + SBE_EXEC_HWP(rc, p9_sbe_io_eol_toggle, proc) if (rc != FAPI2_RC_SUCCESS) { @@ -463,6 +468,8 @@ void sbeAsyncCommandProcessor_routine(void *arg) captureAsyncFFDC(SBE_PRI_GENERIC_EXECUTION_FAILURE, SBE_SEC_PERIODIC_IO_TOGGLE_FAILED); } + + pk_critical_section_exit(&ctx); } while(1); #endif // PERIODIC_IO_TOGGLE_SUPPORTED #undef SBE_FUNC diff --git a/src/sbefw/core/sbemain.C b/src/sbefw/core/sbemain.C index 327c3339..9bcc53e0 100644 --- a/src/sbefw/core/sbemain.C +++ b/src/sbefw/core/sbemain.C @@ -226,7 +226,7 @@ int sbeInitThreads(void) (void *)0, (PkAddress)sbeSyncCommandProcessor_stack, SBE_THREAD_SYNC_CMD_PROC_STACK_SIZE, - THREAD_PRIORITY_7); + THREAD_PRIORITY_6); if (l_rc) { break; @@ -238,7 +238,7 @@ int sbeInitThreads(void) (void *)0, (PkAddress)sbeAsyncCommandProcessor_stack, SBE_THREAD_ASYNC_CMD_PROC_STACK_SIZE, - THREAD_PRIORITY_6); + THREAD_PRIORITY_7); if (l_rc) { break; |