From 01b0d19dbbc58034808e4f0cac8d8df56f4787f7 Mon Sep 17 00:00:00 2001 From: YuanhaoXie Date: Mon, 11 Sep 2023 18:42:55 +0800 Subject: [PATCH] UefiCpuPkg/MtrrUnitTest: Add Unit test of setting/getting memory attributes Add Unit test of trrGetMemoryAttributesInMtrrSettings and MtrrSetMemoryAttributesInMtrrSettings. Signed-off-by: Ray Ni Signed-off-by: Yuanhao Xie Cc: Eric Dong Cc: Rahul Kumar Cc: Gerd Hoffmann Reviewed-by: Eric Dong Reviewed-by: Ray Ni --- .../MtrrLib/UnitTest/MtrrLibUnitTest.c | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/UefiCpuPkg/Library/MtrrLib/UnitTest/MtrrLibUnitTest.c b/UefiCpuPkg/Library/MtrrLib/UnitTest/MtrrLibUnitTest.c index 339e95cc4679..376fd96091db 100644 --- a/UefiCpuPkg/Library/MtrrLib/UnitTest/MtrrLibUnitTest.c +++ b/UefiCpuPkg/Library/MtrrLib/UnitTest/MtrrLibUnitTest.c @@ -177,7 +177,8 @@ GenerateRandomMemoryTypeCombination ( } /** - Unit test of MtrrLib service MtrrSetMemoryAttribute() + Unit test of MtrrLib service MtrrGetMemoryAttributesInMtrrSettings() and + MtrrSetMemoryAttributesInMtrrSettings() @param[in] Context Ignored @@ -188,7 +189,7 @@ GenerateRandomMemoryTypeCombination ( **/ UNIT_TEST_STATUS EFIAPI -UnitTestMtrrSetMemoryAttributesInMtrrSettings ( +UnitTestMtrrSetAndGetMemoryAttributesInMtrrSettings ( IN UNIT_TEST_CONTEXT Context ) { @@ -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; @@ -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)); } @@ -1019,7 +1034,8 @@ UnitTestMtrrGetDefaultMemoryType ( } /** - Unit test of MtrrLib service MtrrSetMemoryAttributeInMtrrSettings(). + Unit test of MtrrLib service MtrrSetMemoryAttributeInMtrrSettings() and + MtrrGetMemoryAttributesInMtrrSettings(). @param[in] Context Ignored @@ -1030,7 +1046,7 @@ UnitTestMtrrGetDefaultMemoryType ( **/ UNIT_TEST_STATUS EFIAPI -UnitTestMtrrSetMemoryAttributeInMtrrSettings ( +UnitTestMtrrSetMemoryAttributeAndGetMemoryAttributesInMtrrSettings ( IN UNIT_TEST_CONTEXT Context ) { @@ -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; @@ -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)); } @@ -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]); } }