From 0902407cbc9738cef553dfa1dad04465e7aa4374 Mon Sep 17 00:00:00 2001 From: Yue Du Date: Mon, 5 Jun 2017 11:34:08 -0500 Subject: STOP: Fix pc_wakeup with Powermixer Change-Id: Ib4f8c85787c41640ed58d701775f6ce663f8f3cf Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41384 Reviewed-by: Brian T. Vanderpool Tested-by: Jenkins Server Reviewed-by: Juan R. Medina Reviewed-by: Gregory S. Still --- .../procedures/ppe_closed/cme/stop_cme/p9_cme_stop_irq_handlers.c | 6 ++++-- 1 file 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); -- cgit v1.2.3