diff options
author | Rahul Batra <rbatra@us.ibm.com> | 2018-04-13 14:07:27 -0500 |
---|---|---|
committer | hostboot <hostboot@us.ibm.com> | 2018-04-26 12:18:15 -0500 |
commit | 81a813f48222a440db09a500be91ca8704e5b899 (patch) | |
tree | 51e66646994787172f361769f216b4751b0ff78b /import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c | |
parent | 1a22ed2d89ee46392d1122af3955c3f507a99e7c (diff) | |
download | talos-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.c | 17 |
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(); |