Skip to content

Commit

Permalink
UefiCpuPkg/MtrrUnitTest: Add Unit test of setting/getting memory
Browse files Browse the repository at this point in the history
attributes

Add Unit test of trrGetMemoryAttributesInMtrrSettings and
MtrrSetMemoryAttributesInMtrrSettings.

Signed-off-by: Ray Ni <[email protected]>
Signed-off-by: Yuanhao Xie <[email protected]>
Cc: Eric Dong <[email protected]>
Cc: Rahul Kumar <[email protected]>
Cc: Gerd Hoffmann <[email protected]>

Reviewed-by: Eric Dong <[email protected]>
Reviewed-by: Ray Ni <[email protected]>
  • Loading branch information
xieyuanh authored and mergify[bot] committed Oct 9, 2023
1 parent c4fdec0 commit 01b0d19
Showing 1 changed file with 36 additions and 6 deletions.
42 changes: 36 additions & 6 deletions UefiCpuPkg/Library/MtrrLib/UnitTest/MtrrLibUnitTest.c
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,8 @@ GenerateRandomMemoryTypeCombination (
}

/**
Unit test of MtrrLib service MtrrSetMemoryAttribute()
Unit test of MtrrLib service MtrrGetMemoryAttributesInMtrrSettings() and
MtrrSetMemoryAttributesInMtrrSettings()
@param[in] Context Ignored
Expand All @@ -188,7 +189,7 @@ GenerateRandomMemoryTypeCombination (
**/
UNIT_TEST_STATUS
EFIAPI
UnitTestMtrrSetMemoryAttributesInMtrrSettings (
UnitTestMtrrSetAndGetMemoryAttributesInMtrrSettings (
IN UNIT_TEST_CONTEXT Context
)
{
Expand All @@ -214,6 +215,9 @@ UnitTestMtrrSetMemoryAttributesInMtrrSettings (
UINT32 ActualVariableMtrrUsage;
UINTN ActualMemoryRangesCount;

MTRR_MEMORY_RANGE ReturnedMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];
UINTN ReturnedMemoryRangesCount;

MTRR_SETTINGS *Mtrrs[2];

SystemParameter = (MTRR_LIB_SYSTEM_PARAMETER *)Context;
Expand Down Expand Up @@ -298,6 +302,17 @@ UnitTestMtrrSetMemoryAttributesInMtrrSettings (
VerifyMemoryRanges (ExpectedMemoryRanges, ExpectedMemoryRangesCount, ActualMemoryRanges, ActualMemoryRangesCount);
UT_ASSERT_TRUE (ExpectedVariableMtrrUsage >= ActualVariableMtrrUsage);

ReturnedMemoryRangesCount = ARRAY_SIZE (ReturnedMemoryRanges);
Status = MtrrGetMemoryAttributesInMtrrSettings (
Mtrrs[MtrrIndex],
ReturnedMemoryRanges,
&ReturnedMemoryRangesCount
);
UT_ASSERT_STATUS_EQUAL (Status, RETURN_SUCCESS);
UT_LOG_INFO ("--- Returned Memory Ranges [%d] ---\n", ReturnedMemoryRangesCount);
DumpMemoryRanges (ReturnedMemoryRanges, ReturnedMemoryRangesCount);
VerifyMemoryRanges (ExpectedMemoryRanges, ExpectedMemoryRangesCount, ReturnedMemoryRanges, ReturnedMemoryRangesCount);

ZeroMem (&LocalMtrrs, sizeof (LocalMtrrs));
}

Expand Down Expand Up @@ -1019,7 +1034,8 @@ UnitTestMtrrGetDefaultMemoryType (
}

/**
Unit test of MtrrLib service MtrrSetMemoryAttributeInMtrrSettings().
Unit test of MtrrLib service MtrrSetMemoryAttributeInMtrrSettings() and
MtrrGetMemoryAttributesInMtrrSettings().
@param[in] Context Ignored
Expand All @@ -1030,7 +1046,7 @@ UnitTestMtrrGetDefaultMemoryType (
**/
UNIT_TEST_STATUS
EFIAPI
UnitTestMtrrSetMemoryAttributeInMtrrSettings (
UnitTestMtrrSetMemoryAttributeAndGetMemoryAttributesInMtrrSettings (
IN UNIT_TEST_CONTEXT Context
)
{
Expand All @@ -1055,6 +1071,9 @@ UnitTestMtrrSetMemoryAttributeInMtrrSettings (
UINT32 ActualVariableMtrrUsage;
UINTN ActualMemoryRangesCount;

MTRR_MEMORY_RANGE ReturnedMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];
UINTN ReturnedMemoryRangesCount;

MTRR_SETTINGS *Mtrrs[2];

SystemParameter = (MTRR_LIB_SYSTEM_PARAMETER *)Context;
Expand Down Expand Up @@ -1131,6 +1150,17 @@ UnitTestMtrrSetMemoryAttributeInMtrrSettings (
VerifyMemoryRanges (ExpectedMemoryRanges, ExpectedMemoryRangesCount, ActualMemoryRanges, ActualMemoryRangesCount);
UT_ASSERT_TRUE (ExpectedVariableMtrrUsage >= ActualVariableMtrrUsage);

ReturnedMemoryRangesCount = ARRAY_SIZE (ReturnedMemoryRanges);
Status = MtrrGetMemoryAttributesInMtrrSettings (
&LocalMtrrs,
ReturnedMemoryRanges,
&ReturnedMemoryRangesCount
);
UT_ASSERT_STATUS_EQUAL (Status, RETURN_SUCCESS);
UT_LOG_INFO ("--- Returned Memory Ranges [%d] ---\n", ReturnedMemoryRangesCount);
DumpMemoryRanges (ReturnedMemoryRanges, ReturnedMemoryRangesCount);
VerifyMemoryRanges (ExpectedMemoryRanges, ExpectedMemoryRangesCount, ReturnedMemoryRanges, ReturnedMemoryRangesCount);

ZeroMem (&LocalMtrrs, sizeof (LocalMtrrs));
}

Expand Down Expand Up @@ -1239,8 +1269,8 @@ UnitTestingEntry (
for (SystemIndex = 0; SystemIndex < ARRAY_SIZE (mSystemParameters); SystemIndex++) {
for (Index = 0; Index < Iteration; Index++) {
AddTestCase (MtrrApiTests, "Test InvalidMemoryLayouts", "InvalidMemoryLayouts", UnitTestInvalidMemoryLayouts, InitializeSystem, NULL, &mSystemParameters[SystemIndex]);
AddTestCase (MtrrApiTests, "Test MtrrSetMemoryAttributeInMtrrSettings", "MtrrSetMemoryAttributeInMtrrSettings", UnitTestMtrrSetMemoryAttributeInMtrrSettings, InitializeSystem, NULL, &mSystemParameters[SystemIndex]);
AddTestCase (MtrrApiTests, "Test MtrrSetMemoryAttributesInMtrrSettings", "MtrrSetMemoryAttributesInMtrrSettings", UnitTestMtrrSetMemoryAttributesInMtrrSettings, InitializeSystem, NULL, &mSystemParameters[SystemIndex]);
AddTestCase (MtrrApiTests, "Test MtrrSetMemoryAttributeInMtrrSettings and MtrrGetMemoryAttributesInMtrrSettings", "MtrrSetMemoryAttributeInMtrrSettings and MtrrGetMemoryAttributesInMtrrSettings", UnitTestMtrrSetMemoryAttributeAndGetMemoryAttributesInMtrrSettings, InitializeSystem, NULL, &mSystemParameters[SystemIndex]);
AddTestCase (MtrrApiTests, "Test MtrrSetMemoryAttributesInMtrrSettings and MtrrGetMemoryAttributesInMtrrSettings", "MtrrSetMemoryAttributesInMtrrSettings and MtrrGetMemoryAttributesInMtrrSetting", UnitTestMtrrSetAndGetMemoryAttributesInMtrrSettings, InitializeSystem, NULL, &mSystemParameters[SystemIndex]);
}
}

Expand Down

0 comments on commit 01b0d19

Please sign in to comment.