summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c
diff options
context:
space:
mode:
authorYue Du <daviddu@us.ibm.com>2017-06-05 11:34:08 -0500
committerJoshua Hunsberger <jahunsbe@us.ibm.com>2017-10-23 17:45:44 -0500
commit0902407cbc9738cef553dfa1dad04465e7aa4374 (patch)
tree54897c31f3eed9b439438cd803b1f7497da55b0e /import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c
parentd57f2dcda5d972658a2b93d4a6923c262a60e8ed (diff)
downloadtalos-hcode-0902407cbc9738cef553dfa1dad04465e7aa4374.tar.gz
talos-hcode-0902407cbc9738cef553dfa1dad04465e7aa4374.zip
STOP: Fix pc_wakeup with Powermixer
Change-Id: Ib4f8c85787c41640ed58d701775f6ce663f8f3cf Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41384 Reviewed-by: Brian T. Vanderpool <vanderp@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Juan R. Medina <jrmedina@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@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.c6
1 files changed, 4 insertions, 2 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 87692bf2..e20fe42f 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
@@ -43,6 +43,8 @@ p9_cme_stop_pcwu_handler(void* arg, PkIrqId irq)
PK_TRACE_INF("PCWU Handler Trigger %d Level %d", irq, core);
+ core &= ~(G_cme_stop_record.core_running);
+
for (core_mask = 2; core_mask; core_mask--)
{
if (core & core_mask)
@@ -61,7 +63,7 @@ p9_cme_stop_pcwu_handler(void* arg, PkIrqId irq)
}
// block pc for stop8,11 or stop5 as pig sent
- g_eimr_override |= (core_mask << SHIFT32(13));
+ g_eimr_override |= (IRQ_VEC_PCWU_C0 >> (core_mask & 1));
G_cme_stop_record.core_blockpc |= core_mask;
core = core - core_mask;
}
@@ -209,7 +211,7 @@ p9_cme_stop_db2_handler(void* arg, PkIrqId irq)
// unmask pc interrupt pending to wakeup that is still pending
core &= (~(G_cme_stop_record.core_running));
- g_eimr_override &= ~(core << SHIFT32(13));
+ g_eimr_override &= ~(((uint64_t)core) << SHIFT64(13));
G_cme_stop_record.core_blockpc &= ~core;
pk_irq_vec_restore(&ctx);
OpenPOWER on IntegriCloud