summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c
diff options
context:
space:
mode:
authorRahul Batra <rbatra@us.ibm.com>2018-04-13 14:07:27 -0500
committerhostboot <hostboot@us.ibm.com>2018-04-26 12:18:15 -0500
commit81a813f48222a440db09a500be91ca8704e5b899 (patch)
tree51e66646994787172f361769f216b4751b0ff78b /import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c
parent1a22ed2d89ee46392d1122af3955c3f507a99e7c (diff)
downloadtalos-hcode-81a813f48222a440db09a500be91ca8704e5b899.tar.gz
talos-hcode-81a813f48222a440db09a500be91ca8704e5b899.zip
PM: Fixes for Livelock Scenarios
-Fixes DPLL Ownership issues during Pstate Start -Fixes WOF Enablement and Quad/Core Active Update(STOP11/5) livelock scenario -Fixes PM Complex Suspend and Quad/Core Active Update(STOP11/5) livelock scenario -Fixes VDM Droop Suspend STOP entries livelock scenario Key_Cronus_Test=PM_REGRESS Change-Id: I14a0dece4c74bc04618f7d1f3838dbe273bace94 CQ: SW425778 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57191 Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Cronus HW CI <cronushw-ci+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com> Reviewed-by: YUE DU <daviddu@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Diffstat (limited to 'import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c')
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c
index cf8bd2f4..09ba46b9 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c
+++ b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c
@@ -87,14 +87,16 @@ p9_cme_stop_pcwu_handler(void)
out32(CME_LCL_EIMR_OR, BITS32(12, 10));
g_eimr_override |= BITS64(12, 10);
+ G_cme_stop_record.exit_ongoing = 1;
wrteei(1);
// The actual exit sequence
p9_cme_stop_exit();
+ G_cme_stop_record.exit_ongoing = 0;
}
// in case abort, complete pending entry first
- if (!G_cme_stop_record.entry_pending)
+ if (!G_cme_stop_record.entry_ongoing)
{
// re-evaluate stop entry & exit enables
p9_cme_stop_eval_eimr_override();
@@ -199,14 +201,16 @@ p9_cme_stop_spwu_handler(void)
out32(CME_LCL_EIMR_OR, BITS32(12, 10));
g_eimr_override |= BITS64(12, 10);
+ G_cme_stop_record.exit_ongoing = 1;
wrteei(1);
// The actual exit sequence
p9_cme_stop_exit();
+ G_cme_stop_record.exit_ongoing = 0;
}
// in case abort, complete pending entry first
- if (!G_cme_stop_record.entry_pending)
+ if (!G_cme_stop_record.entry_ongoing)
{
// re-evaluate stop entry & exit enables
p9_cme_stop_eval_eimr_override();
@@ -223,13 +227,16 @@ p9_cme_stop_rgwu_handler(void)
out32(CME_LCL_EIMR_OR, BITS32(12, 10));
g_eimr_override |= BITS64(12, 10);
+ G_cme_stop_record.exit_ongoing = 1;
wrteei(1);
// The actual exit sequence
p9_cme_stop_exit();
+ G_cme_stop_record.exit_ongoing = 0;
+
// in case abort, complete pending entry first
- if (!G_cme_stop_record.entry_pending)
+ if (!G_cme_stop_record.entry_ongoing)
{
// re-evaluate stop entry & exit enables
p9_cme_stop_eval_eimr_override();
@@ -247,14 +254,14 @@ p9_cme_stop_enter_handler(void)
// Abort Protection
out32(CME_LCL_EIMR_OR, BITS32(12, 10));
g_eimr_override |= BITS64(12, 10);
- G_cme_stop_record.entry_pending = 1;
+ G_cme_stop_record.entry_ongoing = 1;
wrteei(1);
// The actual entry sequence
p9_cme_stop_entry();
// Restore Abort Protection
- G_cme_stop_record.entry_pending = 0;
+ G_cme_stop_record.entry_ongoing = 0;
// re-evaluate stop entry & exit enables
p9_cme_stop_eval_eimr_override();
OpenPOWER on IntegriCloud