Skip to content

Commit

Permalink
STOP: Fix leftover wakeup aborting next entry
Browse files Browse the repository at this point in the history
Key_Cronus_Test=PM_REGRESS

Change-Id: Iff892a1e71423197ae894293e5c6df242ea6fc1d
CQ: HW450809
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59718
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christopher R. Jones <crjones@us.ibm.com>
Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
  • Loading branch information
davidduyue authored and op-jenkins committed Aug 22, 2018
1 parent 16516a1 commit 0b555c4
Showing 1 changed file with 9 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ p9_cme_stop_entry()
uint32_t pscrs = 0;
uint32_t no_state_loss = 0;
uint32_t pm_states = 0;
uint32_t wake_mask = 0;
uint32_t lclr_data = 0;
data64_t scom_data = {0};
ppm_pig_t pig = {0};
Expand Down Expand Up @@ -302,6 +303,14 @@ p9_cme_stop_entry()
return;
}

// clear and resample wakeup to make sure
// only wakeup requested after pm_active
// is used to wakeup after current stop
wake_mask = ((core << SHIFT32(13)) | (core << SHIFT32(17)));
out32(G_CME_LCL_EISR_CLR, wake_mask);
core_raw = in32(G_CME_LCL_EINR) & wake_mask;
out32(G_CME_LCL_EISR_OR, core_raw);

#if NIMBUS_DD_LEVEL == 20 || DISABLE_CME_DUAL_CAST == 1

uint32_t dual_core = core;
Expand Down

0 comments on commit 0b555c4

Please sign in to comment.