summaryrefslogtreecommitdiffstats
path: root/src/usr/diag
diff options
context:
space:
mode:
authorBrian Stegmiller <bjs@us.ibm.com>2017-03-29 11:55:56 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2017-03-30 16:35:05 -0400
commit59e8d054c52eedd3a7ebca7893b97f41c5cf0888 (patch)
tree1b93fe57b870dd759e9d1ba0a1657f197e4ae2fe /src/usr/diag
parent6b4602303e242df5d03fa58c253665faf30288c2 (diff)
downloadtalos-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.C31
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;
OpenPOWER on IntegriCloud