@@ -714,7 +714,7 @@ HWTEST_F(AubCommandStreamReceiverTests, givenAubCommandStreamReceiverWhenEngineI
714714
715715HWTEST_F (AubCommandStreamReceiverTests, givenAddMmioKeySetToZeroWhenInitAdditionalMmioCalledThenDoNotWriteMmio) {
716716 DebugManagerStateRestore stateRestore;
717- DebugManager.flags .AubDumpAddMmioRegister .set (0 );
717+ DebugManager.flags .AubDumpAddMmioRegistersList .set (" " );
718718
719719 auto aubCsr = std::make_unique<MockAubCsrToTestDumpContext<FamilyType>>(**platformDevices, " " , true , executionEnvironment);
720720 EXPECT_NE (nullptr , aubCsr);
@@ -726,14 +726,12 @@ HWTEST_F(AubCommandStreamReceiverTests, givenAddMmioKeySetToZeroWhenInitAddition
726726 EXPECT_EQ (0u , stream->mmioList .size ());
727727}
728728
729- HWTEST_F (AubCommandStreamReceiverTests, givenAddMmioKeySetToNonZeroWhenInitAdditionalMmioCalledThenWriteGivenMmio) {
730- uint32_t offset = 0xdead ;
731- uint32_t value = 0xbeef ;
732- MMIOPair mmioPair (offset, value);
729+ HWTEST_F (AubCommandStreamReceiverTests, givenAddMmioRegistersListSetWhenInitAdditionalMmioCalledThenWriteGivenMmio) {
730+ std::string registers (" 0xdead;0xbeef" );
731+ MMIOPair mmioPair (0xdead , 0xbeef );
733732
734733 DebugManagerStateRestore stateRestore;
735- DebugManager.flags .AubDumpAddMmioRegister .set (offset);
736- DebugManager.flags .AubDumpAddMmioRegisterValue .set (value);
734+ DebugManager.flags .AubDumpAddMmioRegistersList .set (registers);
737735
738736 auto aubCsr = std::make_unique<MockAubCsrToTestDumpContext<FamilyType>>(**platformDevices, " " , true , executionEnvironment);
739737 EXPECT_NE (nullptr , aubCsr);
@@ -746,6 +744,76 @@ HWTEST_F(AubCommandStreamReceiverTests, givenAddMmioKeySetToNonZeroWhenInitAddit
746744 EXPECT_TRUE (stream->isOnMmioList (mmioPair));
747745};
748746
747+ HWTEST_F (AubCommandStreamReceiverTests, givenLongSequenceOfAddMmioRegistersListSetWhenInitAdditionalMmioCalledThenWriteGivenMmio) {
748+ std::string registers (" 1;1;2;2;3;3" );
749+
750+ DebugManagerStateRestore stateRestore;
751+ DebugManager.flags .AubDumpAddMmioRegistersList .set (registers);
752+
753+ auto aubCsr = std::make_unique<MockAubCsrToTestDumpContext<FamilyType>>(**platformDevices, " " , true , executionEnvironment);
754+ EXPECT_NE (nullptr , aubCsr);
755+
756+ auto stream = std::make_unique<MockAubFileStreamMockMmioWrite>();
757+ aubCsr->stream = stream.get ();
758+ EXPECT_EQ (0u , stream->mmioList .size ());
759+ aubCsr->initAdditionalMMIO ();
760+ EXPECT_EQ (3u , stream->mmioList .size ());
761+ }
762+
763+ HWTEST_F (AubCommandStreamReceiverTests, givenSequenceWithIncompletePairOfAddMmioRegistersListSetWhenInitAdditionalMmioCalledThenWriteGivenMmio) {
764+ std::string registers (" 0x1;0x1;0x2" );
765+ MMIOPair mmioPair0 (0x1 , 0x1 );
766+ MMIOPair mmioPair1 (0x2 , 0x2 );
767+
768+ DebugManagerStateRestore stateRestore;
769+ DebugManager.flags .AubDumpAddMmioRegistersList .set (registers);
770+
771+ auto aubCsr = std::make_unique<MockAubCsrToTestDumpContext<FamilyType>>(**platformDevices, " " , true , executionEnvironment);
772+ EXPECT_NE (nullptr , aubCsr);
773+
774+ auto stream = std::make_unique<MockAubFileStreamMockMmioWrite>();
775+ aubCsr->stream = stream.get ();
776+ EXPECT_EQ (0u , stream->mmioList .size ());
777+ aubCsr->initAdditionalMMIO ();
778+ EXPECT_EQ (1u , stream->mmioList .size ());
779+ EXPECT_TRUE (stream->isOnMmioList (mmioPair0));
780+ EXPECT_FALSE (stream->isOnMmioList (mmioPair1));
781+ }
782+
783+ HWTEST_F (AubCommandStreamReceiverTests, givenAddMmioRegistersListSetWithSemicolonAtTheEndWhenInitAdditionalMmioCalledThenWriteGivenMmio) {
784+ std::string registers (" 0xdead;0xbeef;" );
785+ MMIOPair mmioPair (0xdead , 0xbeef );
786+
787+ DebugManagerStateRestore stateRestore;
788+ DebugManager.flags .AubDumpAddMmioRegistersList .set (registers);
789+
790+ auto aubCsr = std::make_unique<MockAubCsrToTestDumpContext<FamilyType>>(**platformDevices, " " , true , executionEnvironment);
791+ EXPECT_NE (nullptr , aubCsr);
792+
793+ auto stream = std::make_unique<MockAubFileStreamMockMmioWrite>();
794+ aubCsr->stream = stream.get ();
795+ EXPECT_EQ (0u , stream->mmioList .size ());
796+ aubCsr->initAdditionalMMIO ();
797+ EXPECT_EQ (1u , stream->mmioList .size ());
798+ EXPECT_TRUE (stream->isOnMmioList (mmioPair));
799+ }
800+
801+ HWTEST_F (AubCommandStreamReceiverTests, givenAddMmioRegistersListSetWithInvalidValueWhenInitAdditionalMmioCalledThenMmioIsNotWritten) {
802+ std::string registers (" 0xdead;invalid" );
803+
804+ DebugManagerStateRestore stateRestore;
805+ DebugManager.flags .AubDumpAddMmioRegistersList .set (registers);
806+
807+ auto aubCsr = std::make_unique<MockAubCsrToTestDumpContext<FamilyType>>(**platformDevices, " " , true , executionEnvironment);
808+ EXPECT_NE (nullptr , aubCsr);
809+
810+ auto stream = std::make_unique<MockAubFileStreamMockMmioWrite>();
811+ aubCsr->stream = stream.get ();
812+ EXPECT_EQ (0u , stream->mmioList .size ());
813+ aubCsr->initAdditionalMMIO ();
814+ EXPECT_EQ (0u , stream->mmioList .size ());
815+ }
816+
749817HWTEST_F (AubCommandStreamReceiverTests, givenAubCsrWhenAskedForMemoryExpectationThenPassValidCompareOperationType) {
750818 class MyMockAubCsr : public AUBCommandStreamReceiverHw <FamilyType> {
751819 public:
0 commit comments