aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
Diffstat (limited to 'hw')
-rw-r--r--hw/xive.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/hw/xive.c b/hw/xive.c
index 1dfecaa..784833b 100644
--- a/hw/xive.c
+++ b/hw/xive.c
@@ -2699,6 +2699,14 @@ void xive_cpu_callin(struct cpu_thread *cpu)
/* Set CPPR to 0 */
out_8(xs->tm_ring1 + TM_QW3_HV_PHYS + TM_CPPR, 0);
+ /* Pull everything */
+ in_be32(xs->tm_ring1 + TM_SPC_PULL_USR_CTX);
+ in_be32(xs->tm_ring1 + TM_SPC_PULL_OS_CTX);
+ in_be32(xs->tm_ring1 + TM_SPC_PULL_POOL_CTX);
+
+ /* Clear VT and LSI bit */
+ out_8(xs->tm_ring1 + TM_QW3_HV_PHYS + 8, 0);
+
/* Set VT to 1 */
out_8(xs->tm_ring1 + TM_QW3_HV_PHYS + TM_WORD2, 0x80);