@@ -678,13 +678,19 @@ void cleanupChnlAttns<TYPE_OCMB_CHIP>( ExtensibleChip * i_chip,
678
678
679
679
#ifdef __HOSTBOOT_MODULE // only do cleanup in Hostboot, no-op in FSP
680
680
681
- // Clear the associated FIR bits for all attention types. DSTLFIR[0:7]
681
+ // Get the subchannel pos (0:1)
682
+ TargetHandle_t ocmb = i_chip -> getTrgt ();
683
+ TargetHandle_t omi = getConnectedParent ( ocmb , TYPE_OMI );
684
+ uint8_t chnlPos = getTargetPosition (omi ) % MAX_OMI_PER_MCC ;
685
+
686
+ // Clear the associated FIR bits for all attention types. DSTLFIR[0:3]
687
+ // for subchannel 0 or DSTLFIR[4:7] for subchannel 1
682
688
ExtensibleChip * mcc = getConnectedParent ( i_chip , TYPE_MCC );
683
689
684
690
SCAN_COMM_REGISTER_CLASS * reg = mcc -> getRegister ( "DSTLFIR_AND" );
685
691
686
692
reg -> setAllBits ();
687
- reg -> SetBitFieldJustified ( 0 , 8 , 0 );
693
+ reg -> SetBitFieldJustified ( chnlPos * 4 , 4 , 0 );
688
694
reg -> Write ();
689
695
690
696
#endif // Hostboot only
@@ -1502,6 +1508,7 @@ bool __queryUcsOcmb( ExtensibleChip * i_ocmb )
1502
1508
1503
1509
bool o_activeAttn = false;
1504
1510
1511
+ /* TODO
1505
1512
// We can't use the GLOBAL_CS_FIR. It will not clear automatically when a
1506
1513
// channel has failed because the hardware clocks have stopped. Also, since
1507
1514
// it is a virtual register there really is no way to clear it. Fortunately
@@ -1516,6 +1523,7 @@ bool __queryUcsOcmb( ExtensibleChip * i_ocmb )
1516
1523
{
1517
1524
o_activeAttn = fir->IsBitSet(2); // Checkstop bit.
1518
1525
}
1526
+ */
1519
1527
1520
1528
return o_activeAttn ;
1521
1529
}
@@ -1914,11 +1922,13 @@ void __cleanupChnlFail<TYPE_OMI>( TargetHandle_t i_omi,
1914
1922
reg -> Write ();
1915
1923
1916
1924
1925
+ /* TODO
1917
1926
// To ensure FSP ATTN doesn't think there is an active attention on this
1918
1927
// OCMB, manually clear the interrupt status register.
1919
1928
reg = ocmbChip->getRegister( "INTER_STATUS_REG" );
1920
1929
reg->clearAllBits(); // Blindly clear everything
1921
1930
reg->Write();
1931
+ */
1922
1932
1923
1933
// During runtime, send a dynamic memory deallocation message.
1924
1934
// During Memory Diagnostics, tell MDIA to stop pattern tests.
0 commit comments