summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/build/citest/etc/patches/p8_mba.act.patch28
-rw-r--r--src/build/citest/etc/patches/patchlist.txt5
-rw-r--r--src/build/citest/etc/patches/s1_mba.act.patch29
-rwxr-xr-xsrc/build/citest/etc/workarounds.postsimsetup9
-rw-r--r--src/usr/diag/attn/attn.C4
-rw-r--r--src/usr/diag/attn/attnmem.C6
-rw-r--r--src/usr/diag/attn/attnproc.C6
-rw-r--r--src/usr/diag/attn/attnsvc.C13
-rw-r--r--src/usr/diag/attn/test/attnfakeipoll.C6
-rw-r--r--src/usr/diag/attn/test/attntestmem.H12
-rw-r--r--src/usr/diag/attn/test/attntestproc.H18
-rw-r--r--src/usr/diag/attn/test/attnvalidate.C6
12 files changed, 111 insertions, 31 deletions
diff --git a/src/build/citest/etc/patches/p8_mba.act.patch b/src/build/citest/etc/patches/p8_mba.act.patch
new file mode 100644
index 000000000..113552ac9
--- /dev/null
+++ b/src/build/citest/etc/patches/p8_mba.act.patch
@@ -0,0 +1,28 @@
+--- p8_mba.act.old 2012-12-13 15:20:03.177168880 -0500
++++ p8_mba.act 2012-12-13 15:21:10.719053313 -0500
+@@ -194,7 +194,7 @@ CAUSE_EFFECT {
+ WATCH=[REG(0x01020013)] # ipoll
+
+ CAUSE: TARGET=[REG(0x02000001)] OP=[BUF,AND,ON] DATA=[LITERAL(32,01FE0000)]
+- CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,OFF] BIT=[3]
++ CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,ON] BIT=[3]
+ EFFECT: TARGET=[MODULE(lclErrInterrupt, raise)] OP=[MODULECALL]
+ }
+
+@@ -203,7 +203,7 @@ CAUSE_EFFECT {
+ WATCH=[REG(0x02000001)] # gp1
+
+ CAUSE: TARGET=[REG(0x02000001)] OP=[BUF,AND,OFF] DATA=[LITERAL(32,01FE0000)]
+- CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,OFF] BIT=[3]
++ CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,ON] BIT=[3]
+ EFFECT: TARGET=[MODULE(lclErrInterrupt, lower)] OP=[MODULECALL]
+ }
+
+@@ -212,6 +212,6 @@ CAUSE_EFFECT {
+ WATCH=[REG(0x01020013)] # ipoll
+
+ CAUSE: TARGET=[REG(0x02000001)] OP=[BUF,AND,ON] DATA=[LITERAL(32,01FE0000)]
+- CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,ON] BIT=[3]
++ CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,OFF] BIT=[3]
+ EFFECT: TARGET=[MODULE(lclErrInterrupt, lower)] OP=[MODULECALL]
+ }
diff --git a/src/build/citest/etc/patches/patchlist.txt b/src/build/citest/etc/patches/patchlist.txt
index a9e47c22d..281c4743d 100644
--- a/src/build/citest/etc/patches/patchlist.txt
+++ b/src/build/citest/etc/patches/patchlist.txt
@@ -28,3 +28,8 @@ the Centaur Action File must cope
-Files: centaur.act.slew.patch
-Coreq: None
+Additional actions for Centaur maint command complete
+-RTC: Task 60668 will remove the patch
+-CMVC: D864673 is integrating the changes
+-Files: p8_mba.act.patch s1_mba.act.patch
+-Coreq: there are related changes in workarounds.postsimsetup
diff --git a/src/build/citest/etc/patches/s1_mba.act.patch b/src/build/citest/etc/patches/s1_mba.act.patch
new file mode 100644
index 000000000..491b84f75
--- /dev/null
+++ b/src/build/citest/etc/patches/s1_mba.act.patch
@@ -0,0 +1,29 @@
+--- s1_mba.act.old 2012-12-13 15:24:52.777206738 -0500
++++ s1_mba.act 2012-12-13 16:34:50.760796428 -0500
+@@ -111,7 +111,7 @@ CAUSE_EFFECT {
+ WATCH=[REG(0x01020013)] # ipoll
+
+ CAUSE: TARGET=[REG(0x02000001)] OP=[BUF,AND,ON] DATA=[LITERAL(32,01FE0000)]
+- CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,OFF] BIT=[3]
++ CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,ON] BIT=[3]
+ EFFECT: TARGET=[MODULE(lclErrInterrupt, raise)] OP=[MODULECALL]
+ }
+
+@@ -120,7 +120,7 @@ CAUSE_EFFECT {
+ WATCH=[REG(0x02000001)] # gp1
+
+ CAUSE: TARGET=[REG(0x02000001)] OP=[BUF,AND,OFF] DATA=[LITERAL(32,01FE0000)]
+- CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,OFF] BIT=[3]
++ CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,ON] BIT=[3]
+ EFFECT: TARGET=[MODULE(lclErrInterrupt, lower)] OP=[MODULECALL]
+ }
+
+@@ -129,7 +129,7 @@ CAUSE_EFFECT {
+ WATCH=[REG(0x01020013)] # ipoll
+
+ CAUSE: TARGET=[REG(0x02000001)] OP=[BUF,AND,ON] DATA=[LITERAL(32,01FE0000)]
+- CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,ON] BIT=[3]
++ CAUSE: TARGET=[REG(0x01020013)] OP=[BIT,OFF] BIT=[3]
+ EFFECT: TARGET=[MODULE(lclErrInterrupt, lower)] OP=[MODULECALL]
+ }
+
diff --git a/src/build/citest/etc/workarounds.postsimsetup b/src/build/citest/etc/workarounds.postsimsetup
index 585e72744..bc26ee2e6 100755
--- a/src/build/citest/etc/workarounds.postsimsetup
+++ b/src/build/citest/etc/workarounds.postsimsetup
@@ -127,3 +127,12 @@ CAUSE_EFFECT {
CAUSE: TARGET=[REG(0x090F0013)] OP=[EQUALTO,BUF] DATA=[LITERAL(64,F7FFFFFF FFFFFFFF)]
EFFECT: TARGET=[REG(0x090F0019)] OP=[BIT,ON] BIT=[0] # PLL Lock
} " >> $sb/simu/data/cec-chip/p8.act
+
+#### Additional updates for maint commands (Remove with RTC:60668)
+echo "+++ Fix up inverted ipoll mask"
+cp $bb/src/simu/data/cec-chip/p8_mba.act $sb/simu/data/cec-chip/p8_mba.act
+cp $bb/src/simu/data/cec-chip/s1_mba.act $sb/simu/data/cec-chip/s1_mba.act
+
+patch -p0 $sb/simu/data/cec-chip/p8_mba.act $HOSTBOOTROOT/src/build/citest/etc/patches/p8_mba.act.patch
+patch -p0 $sb/simu/data/cec-chip/s1_mba.act $HOSTBOOTROOT/src/build/citest/etc/patches/s1_mba.act.patch
+###
diff --git a/src/usr/diag/attn/attn.C b/src/usr/diag/attn/attn.C
index f2d962cbd..a291036f7 100644
--- a/src/usr/diag/attn/attn.C
+++ b/src/usr/diag/attn/attn.C
@@ -98,7 +98,7 @@ errlHndl_t checkForIplAttentions()
// query the proc resolver for active attentions
- err = procOps.resolve(*tit, 0, attentions);
+ err = procOps.resolve(*tit, ~0, attentions);
if(err)
{
@@ -107,7 +107,7 @@ errlHndl_t checkForIplAttentions()
// query the mem resolver for active attentions
- err = memOps.resolve(*tit, 0, attentions);
+ err = memOps.resolve(*tit, ~0, attentions);
if(err)
{
diff --git a/src/usr/diag/attn/attnmem.C b/src/usr/diag/attn/attnmem.C
index ebf60cd58..53af72c94 100644
--- a/src/usr/diag/attn/attnmem.C
+++ b/src/usr/diag/attn/attnmem.C
@@ -64,7 +64,7 @@ errlHndl_t MemOps::mask(const AttnData & i_data)
IPOLL::getCheckbits(HOST, ipollMaskWriteBits);
err = modifyScom(proc, IPOLL::address,
- ipollMaskWriteBits, SCOM_OR);
+ ~ipollMaskWriteBits, SCOM_AND);
if(err)
{
@@ -106,7 +106,7 @@ errlHndl_t MemOps::unmask(const AttnData & i_data)
IPOLL::getCheckbits(HOST, ipollMaskWriteBits);
err = modifyScom(proc, IPOLL::address,
- ~ipollMaskWriteBits, SCOM_AND);
+ ipollMaskWriteBits, SCOM_OR);
if(err)
{
@@ -223,7 +223,7 @@ errlHndl_t MemOps::resolve(
do {
- if(hostMask & i_typeMask)
+ if(hostMask & ~i_typeMask)
{
// host attentions are masked....
diff --git a/src/usr/diag/attn/attnproc.C b/src/usr/diag/attn/attnproc.C
index 3cfffa3a1..178530843 100644
--- a/src/usr/diag/attn/attnproc.C
+++ b/src/usr/diag/attn/attnproc.C
@@ -49,7 +49,7 @@ errlHndl_t ProcOps::mask(const AttnData & i_data)
IPOLL::getCheckbits(i_data.attnType, ipollMaskWriteBits);
err = modifyScom(i_data.targetHndl, IPOLL::address,
- ipollMaskWriteBits, SCOM_OR);
+ ~ipollMaskWriteBits, SCOM_AND);
return err;
}
@@ -63,7 +63,7 @@ errlHndl_t ProcOps::unmask(const AttnData & i_data)
IPOLL::getCheckbits(i_data.attnType, ipollMaskWriteBits);
err = modifyScom(i_data.targetHndl, IPOLL::address,
- ~ipollMaskWriteBits, SCOM_AND);
+ ipollMaskWriteBits, SCOM_OR);
return err;
}
@@ -128,7 +128,7 @@ errlHndl_t ProcOps::resolve(
IPOLL::getCheckbits(type, mask);
- if(!(mask & ~i_typeMask))
+ if(mask & ~i_typeMask)
{
// this attention type is masked
diff --git a/src/usr/diag/attn/attnsvc.C b/src/usr/diag/attn/attnsvc.C
index 47f814144..5f8fb5eca 100644
--- a/src/usr/diag/attn/attnsvc.C
+++ b/src/usr/diag/attn/attnsvc.C
@@ -244,8 +244,8 @@ errlHndl_t Service::configureInterrupts(
err = modifyScom(
*it,
IPOLL::address,
- i_mode == UP ? ~mask : mask,
- i_mode == UP ? SCOM_AND : SCOM_OR);
+ i_mode == UP ? mask : ~mask,
+ i_mode == UP ? SCOM_OR : SCOM_AND);
if(err)
{
@@ -405,6 +405,15 @@ errlHndl_t Service::processIntrQMsgPreAck(const msg_t & i_msg,
break;
}
+ // clear anything in the status register
+
+ err = putScom(proc, INTR_TYPE_LCL_ERR_STATUS_REG, 0);
+
+ if(err)
+ {
+ break;
+ }
+
ATTN_DBG("...resolved %d", o_attentions.size());
} while(0);
diff --git a/src/usr/diag/attn/test/attnfakeipoll.C b/src/usr/diag/attn/test/attnfakeipoll.C
index 10b139518..a84747c05 100644
--- a/src/usr/diag/attn/test/attnfakeipoll.C
+++ b/src/usr/diag/attn/test/attnfakeipoll.C
@@ -65,11 +65,11 @@ errlHndl_t FakeIpoll::processPutReg(
? i_new
: i_sys.getReg(i_target, iv_address);
- bool masked = (ipollContent & iv_ipollbits);
+ bool masked = (~ipollContent & iv_ipollbits);
bool hi = (content & iv_gfirbits);
bool unmasked = i_address == IPOLL::address
- ? ~ipollContent & i_old & iv_ipollbits
+ ? ipollContent & ~i_old & iv_ipollbits
: false;
bool set = i_address == IPOLL::address
@@ -96,7 +96,7 @@ void FakeIpoll::processEoi(
uint64_t ipollContent = i_sys.getReg(i_source, IPOLL::address);
uint64_t content = i_sys.getReg(i_source, iv_address);
- bool masked = ipollContent & iv_ipollbits;
+ bool masked = ~ipollContent & iv_ipollbits;
bool high = content & iv_gfirbits;
if(high && !masked)
diff --git a/src/usr/diag/attn/test/attntestmem.H b/src/usr/diag/attn/test/attntestmem.H
index 84a98d084..48e10a558 100644
--- a/src/usr/diag/attn/test/attntestmem.H
+++ b/src/usr/diag/attn/test/attntestmem.H
@@ -101,7 +101,7 @@ class AttnMemTest: public CxxTest::TestSuite
break;
}
- randomData = randomData & ~maskbits;
+ randomData = randomData | maskbits;
err = putScom(
proc,
@@ -132,13 +132,13 @@ class AttnMemTest: public CxxTest::TestSuite
// verify that the attn was masked, and that
// other bits weren't touched
- if(!(data & maskbits))
+ if(!(~data & maskbits))
{
TS_FAIL("attention not masked");
break;
}
- if((data & ~maskbits) != randomData)
+ if((data | maskbits) != randomData)
{
TS_FAIL("unexpected data in mask register");
break;
@@ -212,7 +212,7 @@ class AttnMemTest: public CxxTest::TestSuite
break;
}
- randomData = randomData | maskbits;
+ randomData = randomData & ~maskbits;
err = putScom(proc, IPOLL::address, randomData);
if(err)
@@ -240,13 +240,13 @@ class AttnMemTest: public CxxTest::TestSuite
// verify that the attn was masked, and that
// other bits weren't touched
- if(!(~data & maskbits))
+ if(!(data & maskbits))
{
TS_FAIL("attention not unmasked");
break;
}
- if((data | maskbits) != randomData)
+ if((data & ~maskbits) != randomData)
{
TS_FAIL("unexpected data in mask register");
break;
diff --git a/src/usr/diag/attn/test/attntestproc.H b/src/usr/diag/attn/test/attntestproc.H
index 0d38ee894..218f97036 100644
--- a/src/usr/diag/attn/test/attntestproc.H
+++ b/src/usr/diag/attn/test/attntestproc.H
@@ -96,7 +96,7 @@ class AttnProcTest: public CxxTest::TestSuite
break;
}
- randomData = randomData & ~maskbits;
+ randomData = randomData | maskbits;
err = putScom(
d.targetHndl,
@@ -127,13 +127,13 @@ class AttnProcTest: public CxxTest::TestSuite
// verify that the attn was masked, and that
// other bits weren't touched
- if(!(data & maskbits))
+ if(!(~data & maskbits))
{
- TS_FAIL("attention not masked");
+ TS_FAIL("attention unmasked");
break;
}
- if((data & ~maskbits) != randomData)
+ if((data | maskbits) != randomData)
{
TS_FAIL("unexpected data in mask register");
break;
@@ -204,7 +204,7 @@ class AttnProcTest: public CxxTest::TestSuite
break;
}
- randomData = randomData | maskbits;
+ randomData = randomData & ~maskbits;
err = putScom(d.targetHndl, IPOLL::address, randomData);
if(err)
@@ -217,7 +217,7 @@ class AttnProcTest: public CxxTest::TestSuite
if(err)
{
- TS_FAIL("unexpected error masking attention");
+ TS_FAIL("unexpected error unmasking attention");
break;
}
@@ -232,13 +232,13 @@ class AttnProcTest: public CxxTest::TestSuite
// verify that the attn was unmasked, and that
// other bits weren't touched
- if(!(~data & maskbits))
+ if(!(data & maskbits))
{
- TS_FAIL("attention not unmasked");
+ TS_FAIL("attention masked");
break;
}
- if((data | maskbits) != randomData)
+ if((data & ~maskbits) != randomData)
{
TS_FAIL("unexpected data in mask register");
break;
diff --git a/src/usr/diag/attn/test/attnvalidate.C b/src/usr/diag/attn/test/attnvalidate.C
index dec7766a9..1897f2f6c 100644
--- a/src/usr/diag/attn/test/attnvalidate.C
+++ b/src/usr/diag/attn/test/attnvalidate.C
@@ -68,7 +68,7 @@ errlHndl_t Validator::processPutAttention(
target = getTargetService().getProc(i_attention.targetHndl);
}
- bool masked = i_sys.getReg(target, IPOLL::address) & ipollCheckbits;
+ bool masked = ~i_sys.getReg(target, IPOLL::address) & ipollCheckbits;
if(!masked)
{
@@ -217,7 +217,7 @@ errlHndl_t Validator::processPutReg(
// these bits turned off
- IPOLL::forEach(i_old & ~i_new, &args, &appendOuterLoop);
+ IPOLL::forEach(i_new & ~i_old, &args, &appendOuterLoop);
AttnList::iterator it = args.list.begin();
@@ -231,7 +231,7 @@ errlHndl_t Validator::processPutReg(
// these bits turned on
- IPOLL::forEach(i_new & ~i_old, &args, &appendOuterLoop);
+ IPOLL::forEach(i_old & ~i_new, &args, &appendOuterLoop);
it = args.list.begin();
OpenPOWER on IntegriCloud