UefiCpuPkg/CpuPageTableLib: Add OUTPUT IsModified parameter.
Add OUTPUT IsModified parameter in PageTableMap() to indicate if page table has been modified. With this parameter, caller can know if need to call FlushTlb when the page table is in CR3. 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>
This commit is contained in:
@ -51,26 +51,26 @@ TestCaseForParameter (
|
||||
//
|
||||
// If the input linear address is not 4K align, it should return invalid parameter
|
||||
//
|
||||
UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, &MapMask), RETURN_INVALID_PARAMETER);
|
||||
UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, &MapMask, NULL), RETURN_INVALID_PARAMETER);
|
||||
|
||||
//
|
||||
// If the input PageTableBufferSize is not 4K align, it should return invalid parameter
|
||||
//
|
||||
PageTableBufferSize = 10;
|
||||
UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 0, SIZE_4KB, &MapAttribute, &MapMask), RETURN_INVALID_PARAMETER);
|
||||
UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 0, SIZE_4KB, &MapAttribute, &MapMask, NULL), RETURN_INVALID_PARAMETER);
|
||||
|
||||
//
|
||||
// If the input PagingMode is Paging32bit, it should return invalid parameter
|
||||
//
|
||||
PageTableBufferSize = 0;
|
||||
PagingMode = Paging32bit;
|
||||
UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, &MapMask), RETURN_UNSUPPORTED);
|
||||
UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, &MapMask, NULL), RETURN_UNSUPPORTED);
|
||||
|
||||
//
|
||||
// If the input MapMask is NULL, it should return invalid parameter
|
||||
//
|
||||
PagingMode = Paging5Level1GB;
|
||||
UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, NULL), RETURN_INVALID_PARAMETER);
|
||||
UT_ASSERT_EQUAL (PageTableMap (&PageTable, PagingMode, &Buffer, &PageTableBufferSize, 1, SIZE_4KB, &MapAttribute, NULL, NULL), RETURN_INVALID_PARAMETER);
|
||||
|
||||
return UNIT_TEST_PASSED;
|
||||
}
|
||||
@ -119,10 +119,10 @@ TestCaseWhichNoNeedExtraSize (
|
||||
//
|
||||
// Create page table to cover [0, 10M], it should have 5 PTE
|
||||
//
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_2MB * 5, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_2MB * 5, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);
|
||||
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_2MB * 5, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_2MB * 5, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
TestStatus = IsPageTableValid (PageTable, PagingMode);
|
||||
if (TestStatus != UNIT_TEST_PASSED) {
|
||||
@ -134,7 +134,7 @@ TestCaseWhichNoNeedExtraSize (
|
||||
// We assume the fucntion doesn't need to change page table, return success and output BufferSize is 0
|
||||
//
|
||||
Buffer = NULL;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_4KB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, (UINT64)SIZE_4KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (PageTableBufferSize, 0);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
TestStatus = IsPageTableValid (PageTable, PagingMode);
|
||||
@ -148,7 +148,7 @@ TestCaseWhichNoNeedExtraSize (
|
||||
//
|
||||
MapMask.Bits.Nx = 0;
|
||||
PageTableBufferSize = 0;
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, (UINT64)SIZE_4KB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, (UINT64)SIZE_4KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
UT_ASSERT_EQUAL (PageTableBufferSize, 0);
|
||||
TestStatus = IsPageTableValid (PageTable, PagingMode);
|
||||
@ -164,7 +164,7 @@ TestCaseWhichNoNeedExtraSize (
|
||||
MapAttribute.Bits.Accessed = 1;
|
||||
MapMask.Bits.Accessed = 1;
|
||||
PageTableBufferSize = 0;
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)SIZE_2MB, (UINT64)SIZE_2MB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)SIZE_2MB, (UINT64)SIZE_2MB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
UT_ASSERT_EQUAL (PageTableBufferSize, 0);
|
||||
TestStatus = IsPageTableValid (PageTable, PagingMode);
|
||||
@ -217,10 +217,10 @@ TestCase1Gmapto4K (
|
||||
MapAttribute.Bits.Present = 1;
|
||||
MapMask.Bits.Present = 1;
|
||||
MapMask.Uint64 = MAX_UINT64;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);
|
||||
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
|
||||
//
|
||||
@ -281,11 +281,11 @@ TestCaseManualChangeReadWrite (
|
||||
//
|
||||
// Create Page table to cover [0,2G], with ReadWrite = 1
|
||||
//
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);
|
||||
BackupPageTableBufferSize = PageTableBufferSize;
|
||||
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
IsPageTableValid (PageTable, PagingMode);
|
||||
|
||||
@ -331,7 +331,7 @@ TestCaseManualChangeReadWrite (
|
||||
// Call library to change ReadWrite to 0 for [0,2M]
|
||||
//
|
||||
MapAttribute.Bits.ReadWrite = 0;
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, SIZE_2MB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, SIZE_2MB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
IsPageTableValid (PageTable, PagingMode);
|
||||
MapCount = 0;
|
||||
@ -360,7 +360,7 @@ TestCaseManualChangeReadWrite (
|
||||
//
|
||||
MapAttribute.Bits.ReadWrite = 1;
|
||||
PageTableBufferSize = 0;
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, SIZE_2MB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, 0, SIZE_2MB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
IsPageTableValid (PageTable, PagingMode);
|
||||
MapCount = 0;
|
||||
@ -434,10 +434,10 @@ TestCaseManualSizeNotMatch (
|
||||
//
|
||||
// Create Page table to cover [2M-4K, 4M], with ReadWrite = 1
|
||||
//
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB + SIZE_2MB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB + SIZE_2MB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);
|
||||
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB + SIZE_2MB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB + SIZE_2MB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
IsPageTableValid (PageTable, PagingMode);
|
||||
|
||||
@ -493,7 +493,7 @@ TestCaseManualSizeNotMatch (
|
||||
MapAttribute.Bits.ReadWrite = 1;
|
||||
PageTableBufferSize = 0;
|
||||
MapAttribute.Bits.PageTableBaseAddress = (SIZE_2MB - SIZE_4KB) >> 12;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB * 2, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2MB - SIZE_4KB, SIZE_4KB * 2, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
return UNIT_TEST_PASSED;
|
||||
}
|
||||
@ -540,10 +540,10 @@ TestCaseManualNotMergeEntry (
|
||||
//
|
||||
// Create Page table to cover [0,4M], and [4M, 1G] is not present
|
||||
//
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB * 2, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB * 2, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);
|
||||
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB * 2, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB * 2, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
TestStatus = IsPageTableValid (PageTable, PagingMode);
|
||||
if (TestStatus != UNIT_TEST_PASSED) {
|
||||
@ -555,7 +555,7 @@ TestCaseManualNotMergeEntry (
|
||||
// It looks like the chioce is not bad, but sometime, we need to keep some small entry
|
||||
//
|
||||
PageTableBufferSize = 0;
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
TestStatus = IsPageTableValid (PageTable, PagingMode);
|
||||
if (TestStatus != UNIT_TEST_PASSED) {
|
||||
@ -564,7 +564,7 @@ TestCaseManualNotMergeEntry (
|
||||
|
||||
MapAttribute.Bits.Accessed = 1;
|
||||
PageTableBufferSize = 0;
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_2MB, &MapAttribute, &MapMask, NULL);
|
||||
//
|
||||
// If it didn't use a big 1G entry to cover whole range, only change [0,2M] for some attribute won't need extra memory
|
||||
//
|
||||
@ -619,10 +619,10 @@ TestCaseManualChangeNx (
|
||||
//
|
||||
// Create Page table to cover [0,2G], with Nx = 0
|
||||
//
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB * 2, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB * 2, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);
|
||||
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB * 2, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB * 2, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
TestStatus = IsPageTableValid (PageTable, PagingMode);
|
||||
if (TestStatus != UNIT_TEST_PASSED) {
|
||||
@ -666,7 +666,7 @@ TestCaseManualChangeNx (
|
||||
//
|
||||
// Call library to change Nx to 0 for [0,1G]
|
||||
//
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, NULL, &PageTableBufferSize, (UINT64)0, (UINT64)SIZE_1GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
TestStatus = IsPageTableValid (PageTable, PagingMode);
|
||||
if (TestStatus != UNIT_TEST_PASSED) {
|
||||
@ -741,30 +741,30 @@ TestCaseToCheckMapMaskAndAttr (
|
||||
//
|
||||
// Create Page table to cover [0, 2G]. All fields of MapMask should be set.
|
||||
//
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER);
|
||||
MapMask.Uint64 = MAX_UINT64;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);
|
||||
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
|
||||
//
|
||||
// Update Page table to set [2G - 8K, 2G] from present to non-present. All fields of MapMask except present should not be set.
|
||||
//
|
||||
PageTableBufferSize = 0;
|
||||
MapAttribute.Uint64 = SIZE_2GB - SIZE_8KB;
|
||||
MapAttribute.Uint64 = 0;
|
||||
MapMask.Uint64 = 0;
|
||||
MapMask.Bits.Present = 1;
|
||||
MapMask.Bits.ReadWrite = 1;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER);
|
||||
MapMask.Bits.ReadWrite = 0;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_BUFFER_TOO_SMALL);
|
||||
Buffer = AllocatePages (EFI_SIZE_TO_PAGES (PageTableBufferSize));
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, 0, SIZE_2GB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
|
||||
//
|
||||
@ -774,11 +774,11 @@ TestCaseToCheckMapMaskAndAttr (
|
||||
MapAttribute.Uint64 = 0;
|
||||
MapMask.Uint64 = 0;
|
||||
MapMask.Bits.Present = 1;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
MapAttribute.Bits.ReadWrite = 1;
|
||||
MapMask.Bits.ReadWrite = 1;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER);
|
||||
|
||||
//
|
||||
@ -791,10 +791,10 @@ TestCaseToCheckMapMaskAndAttr (
|
||||
MapMask.Uint64 = 0;
|
||||
MapMask.Bits.ReadWrite = 1;
|
||||
MapMask.Bits.Present = 1;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_INVALID_PARAMETER);
|
||||
MapMask.Uint64 = MAX_UINT64;
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask);
|
||||
Status = PageTableMap (&PageTable, PagingMode, Buffer, &PageTableBufferSize, SIZE_2GB - SIZE_8KB, SIZE_8KB, &MapAttribute, &MapMask, NULL);
|
||||
UT_ASSERT_EQUAL (Status, RETURN_SUCCESS);
|
||||
|
||||
MapCount = 0;
|
||||
|
Reference in New Issue
Block a user