Add RandomTest for PAE paging.
Signed-off-by: Dun Tan <dun.tan@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Tested-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
static CPU_PAGE_TABLE_LIB_RANDOM_TEST_CONTEXT mTestContextPaging4Level1GB = { Paging4Level1GB, 100, 20, USE_RANDOM_ARRAY };\r
static CPU_PAGE_TABLE_LIB_RANDOM_TEST_CONTEXT mTestContextPaging5Level = { Paging5Level, 100, 20, USE_RANDOM_ARRAY };\r
static CPU_PAGE_TABLE_LIB_RANDOM_TEST_CONTEXT mTestContextPaging5Level1GB = { Paging5Level1GB, 100, 20, USE_RANDOM_ARRAY };\r
+static CPU_PAGE_TABLE_LIB_RANDOM_TEST_CONTEXT mTestContextPagingPae = { PagingPae, 100, 20, USE_RANDOM_ARRAY };\r
\r
/**\r
Check if the input parameters are not supported.\r
AddTestCase (RandomTestCase, "Random Test for Paging4Level1G", "Random Test Case2", TestCaseforRandomTest, NULL, NULL, &mTestContextPaging4Level1GB);\r
AddTestCase (RandomTestCase, "Random Test for Paging5Level", "Random Test Case3", TestCaseforRandomTest, NULL, NULL, &mTestContextPaging5Level);\r
AddTestCase (RandomTestCase, "Random Test for Paging5Level1G", "Random Test Case4", TestCaseforRandomTest, NULL, NULL, &mTestContextPaging5Level1GB);\r
+ AddTestCase (RandomTestCase, "Random Test for PagingPae", "Random Test Case5", TestCaseforRandomTest, NULL, NULL, &mTestContextPagingPae);\r
\r
//\r
// Execute the tests.\r
UNIT_TEST_STATUS Status;\r
IA32_PAGING_ENTRY *PagingEntry;\r
\r
- if ((PagingMode == Paging32bit) || (PagingMode == PagingPae) || (PagingMode >= PagingModeMax)) {\r
+ if ((PagingMode == Paging32bit) || (PagingMode >= PagingModeMax)) {\r
//\r
// 32bit paging is never supported.\r
- // PAE paging will be supported later.\r
//\r
return UNIT_TEST_ERROR_TEST_FAILED;\r
}\r
return UNIT_TEST_PASSED;\r
}\r
\r
- if ((PagingMode == Paging32bit) || (PagingMode == PagingPae) || (PagingMode >= PagingModeMax)) {\r
+ if ((PagingMode == Paging32bit) || (PagingMode >= PagingModeMax)) {\r
//\r
// 32bit paging is never supported.\r
- // PAE paging will be supported later.\r
//\r
return UNIT_TEST_ERROR_TEST_FAILED;\r
}\r
MaxLevel = (UINT8)(PagingMode >> 8);\r
\r
PagingEntry = (IA32_PAGING_ENTRY *)(UINTN)PageTable;\r
- for (Index = 0; Index < 512; Index++) {\r
+ for (Index = 0; Index < ((PagingMode == PagingPae) ? 4 : 512); Index++) {\r
+ if (PagingMode == PagingPae) {\r
+ UT_ASSERT_EQUAL (PagingEntry[Index].PdptePae.Bits.MustBeZero, 0);\r
+ UT_ASSERT_EQUAL (PagingEntry[Index].PdptePae.Bits.MustBeZero2, 0);\r
+ }\r
+\r
Status = IsPageTableEntryValid (&PagingEntry[Index], MaxLevel, MaxLeafLevel, Index << (9 * MaxLevel + 3));\r
if (Status != UNIT_TEST_PASSED) {\r
return Status;\r
UINT64 Index;\r
IA32_PAGING_ENTRY *PagingEntry;\r
\r
- if ((PagingMode == Paging32bit) || (PagingMode == PagingPae) || (PagingMode >= PagingModeMax)) {\r
+ if ((PagingMode == Paging32bit) || (PagingMode >= PagingModeMax)) {\r
//\r
// 32bit paging is never supported.\r
// PAE paging will be supported later.\r