import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_irq_handlers.c
//
//  p9_pgpe_irq_handler_system_xstop
//
//  Handles system xstop. PGPE does NOT do anything in response
//  except logs it in the trace
//
p9_pgpe_irq_handler_system_xstop
Handles system xstop. PGPE does NOT do anything in response
except logs it in the trace
p9_pgpe_irq_handler_system_xstop Handles system xstop . PGPE does NOT do anything in response except logs it in the trace
void p9_pgpe_irq_handler_system_xstop(void* arg, PkIrqId irq)
{
    PK_TRACE_INF("SYSTEM XSTOP");
    PkMachineContext  ctx;
    g_oimr_override |=   BIT64(15);
    out32(G_OCB_OIMR0_OR,  BIT32(15));
    out32(G_OCB_OISR0_CLR, BIT32(15));
    G_pgpe_optrace_data.word[0] = (G_pgpe_pstate_record.activeQuads << 24) |
                                  (G_pgpe_pstate_record.activeCores >> 8);
    G_pgpe_optrace_data.word[1] = (G_pgpe_pstate_record.psCurr.fields.glb << 24) |
                                  (G_pgpe_pstate_record.extVrmCurr << 8) |
                                  PGPE_OP_TRACE_SYS_XSTOP;
    p9_pgpe_optrace(SEVERE_FAULT_DETECTED);
    PGPE_OPTIONAL_TRACE_AND_PANIC(PGPE_XSTOP_GPE2); 
    pk_irq_vec_restore(&ctx);
}
void p9_pgpe_irq_handler_system_xstop ( void * arg , PkIrqId irq ) { PK_TRACE_INF ( " " ) ; PkMachineContext ctx ; g_oimr_override |= BIT64 ( 15 ) ; out32 ( G_OCB_OIMR0_OR , BIT32 ( 15 ) ) ; out32 ( G_OCB_OISR0_CLR , BIT32 ( 15 ) ) ; G_pgpe_optrace_data . word [ 0 ] = ( G_pgpe_pstate_record . activeQuads << 24 ) | ( G_pgpe_pstate_record . activeCores >> 8 ) ; G_pgpe_optrace_data . word [ 1 ] = ( G_pgpe_pstate_record . psCurr . fields . glb << 24 ) | ( G_pgpe_pstate_record . extVrmCurr << 8 ) | PGPE_OP_TRACE_SYS_XSTOP ; p9_pgpe_optrace ( SEVERE_FAULT_DETECTED ) ; PGPE_OPTIONAL_TRACE_AND_PANIC ( PGPE_XSTOP_GPE2 ) ; pk_irq_vec_restore ( & ctx ) ; }
p9_pgpe_irq_handler_system_xstop
Handles system xstop.
p9_pgpe_irq_handler_system_xstop Handles system xstop .
//Optrace //Halt if DEBUG_HALT is set //Restore interrupt