VirtualBox

Ignore:
Timestamp:
Mar 31, 2025 11:31:09 AM (2 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168237
Message:

Devices/EFI/FirmwareNew: Merge edk2-stable202502 from the vendor branch and make it build for the important platforms, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c

    r105670 r108794  
    343343  IA32_PAGING_ENTRY   OriginalParentPagingEntry;
    344344  IA32_PAGING_ENTRY   OriginalCurrentPagingEntry;
     345  IA32_PAGING_ENTRY   TempPagingEntry;
    345346
    346347  ASSERT (Level != 0);
     
    360361  OriginalParentPagingEntry.Uint64 = ParentPagingEntry->Uint64;
    361362  OneOfPagingEntry.Uint64          = 0;
     363  TempPagingEntry.Uint64           = 0;
     364
    362365  //
    363366  // RegionLength: 256T (1 << 48) 512G (1 << 39), 1G (1 << 30), 2M (1 << 21) or 4K (1 << 12).
     
    442445      // (bit12) in original big-leaf entry is not assigned to PageTableBaseAddress field of non-leaf entry.
    443446      //
    444       PageTableLibSetPnle (&ParentPagingEntry->Pnle, &NopAttribute, &AllOneMask);
    445       ParentPagingEntry->Uint64 = ((UINTN)(VOID *)PagingEntry) | (ParentPagingEntry->Uint64 & (~IA32_PE_BASE_ADDRESS_MASK_40));
     447      TempPagingEntry.Uint64 = ParentPagingEntry->Uint64;
     448      PageTableLibSetPnle (&TempPagingEntry.Pnle, &NopAttribute, &AllOneMask);
     449      TempPagingEntry.Uint64                           = ((UINTN)(VOID *)PagingEntry) | (TempPagingEntry.Uint64 & (~IA32_PE_BASE_ADDRESS_MASK_40));
     450      *(volatile UINT64 *)&(ParentPagingEntry->Uint64) = TempPagingEntry.Uint64;
    446451    }
    447452  } else {
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette