diff options
author | Brian Stegmiller <bjs@us.ibm.com> | 2017-03-29 11:55:56 -0500 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2017-03-30 16:35:05 -0400 |
commit | 59e8d054c52eedd3a7ebca7893b97f41c5cf0888 (patch) | |
tree | 1b93fe57b870dd759e9d1ba0a1657f197e4ae2fe /src/usr/diag | |
parent | 6b4602303e242df5d03fa58c253665faf30288c2 (diff) | |
download | talos-hostboot-59e8d054c52eedd3a7ebca7893b97f41c5cf0888.tar.gz talos-hostboot-59e8d054c52eedd3a7ebca7893b97f41c5cf0888.zip |
ATTN: Use PIR structure for handling interrupts
Change-Id: I15845648e82ace12bcfb8c84c005ca18ac83d22b
RTC: 171905
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38584
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Diffstat (limited to 'src/usr/diag')
-rw-r--r-- | src/usr/diag/attn/ipl/attnsvc.C | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/usr/diag/attn/ipl/attnsvc.C b/src/usr/diag/attn/ipl/attnsvc.C index d3161d240..37ec9a9f4 100644 --- a/src/usr/diag/attn/ipl/attnsvc.C +++ b/src/usr/diag/attn/ipl/attnsvc.C @@ -36,6 +36,7 @@ #include "common/attnproc.H" #include "common/attnmem.H" #include "common/attntarget.H" +#include "arch/pirformat.H" // Custom compile configs #include <config.h> @@ -161,29 +162,35 @@ void Service::processIntrQMsgPreAck(const msg_t & i_msg) TargetHandle_t proc = NULL; - // 32 bits: 22 unused, 3:node, 3:chip, - // 1:interProcInterrupt, 3:InterruptSourceNumber - INTR::XISR_t xisr; + // --------------------------- + // P8 used the XISR structure + // P9 uses the PIR structure + // --------------------------- + // PIR structure is + // 17 bits unused, 4 bits group, 3 bits chipId, 1 unused, + // 5/4 CoreID(norm/fused), 2/3 ThreadId(norm/fused) + PIR_t l_pir; + l_pir.word = i_msg.data[1]; - xisr.u32 = i_msg.data[1]; TargetHandleList procs; getTargetService().getAllChips(procs, TYPE_PROC); - TargetHandleList::iterator it = procs.begin(); - // resolve the xisr to a proc target - + // resolve the PIR to a proc target while(it != procs.end()) { - uint64_t node = 0, chip = 0; + uint64_t group = 0, chip = 0; + + getTargetService().getAttribute(ATTR_FABRIC_GROUP_ID, *it, group); + getTargetService().getAttribute(ATTR_FABRIC_CHIP_ID, *it, chip); - getTargetService().getAttribute(ATTR_FABRIC_GROUP_ID, *it, node); - getTargetService().getAttribute(ATTR_FABRIC_CHIP_ID, *it, chip); + // for debug, but you have to compile it in + ATTN_TRACE("IntrQMsgPreAck: Group:%X Chip:%X PirG:%X PirC:%X PirW:%X", + group, chip, l_pir.groupId, l_pir.chipId, l_pir.word ); - if(node == xisr.node - && chip == xisr.chip) + if ((group == l_pir.groupId) && (chip == l_pir.chipId)) { proc = *it; break; |