]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/XhciPei/UsbHcMem.c
MdeModulePkg/XhciPei: Fix Aligned Page Allocation
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / XhciPei / UsbHcMem.c
index 56c0b900f35a1c746a2302d2a25c199873af90bb..01f42285370492189d70d0bf1a18b83fc672bdc7 100644 (file)
@@ -562,11 +562,7 @@ UsbHcAllocateAlignedPages (
 {\r
   EFI_STATUS            Status;\r
   VOID                  *Memory;\r
-  UINTN                 AlignedMemory;\r
-  UINTN                 AlignmentMask;\r
   EFI_PHYSICAL_ADDRESS  DeviceMemory;\r
-  UINTN                 AlignedDeviceMemory;\r
-  UINTN                 RealPages;\r
 \r
   //\r
   // Alignment must be a power of two or zero.\r
@@ -582,18 +578,9 @@ UsbHcAllocateAlignedPages (
   }\r
 \r
   if (Alignment > EFI_PAGE_SIZE) {\r
-    //\r
-    // Calculate the total number of pages since alignment is larger than page size.\r
-    //\r
-    AlignmentMask  = Alignment - 1;\r
-    RealPages      = Pages + EFI_SIZE_TO_PAGES (Alignment);\r
-    //\r
-    // Make sure that Pages plus EFI_SIZE_TO_PAGES (Alignment) does not overflow.\r
-    //\r
-    ASSERT (RealPages > Pages);\r
-\r
-    Status = IoMmuAllocateBuffer (\r
+    Status = IoMmuAllocateAlignedBuffer (\r
                Pages,\r
+               Alignment,\r
                &Memory,\r
                &DeviceMemory,\r
                Mapping\r
@@ -601,8 +588,6 @@ UsbHcAllocateAlignedPages (
     if (EFI_ERROR (Status)) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
-    AlignedMemory = ((UINTN) Memory + AlignmentMask) & ~AlignmentMask;\r
-    AlignedDeviceMemory = ((UINTN) DeviceMemory + AlignmentMask) & ~AlignmentMask;\r
   } else {\r
     //\r
     // Do not over-allocate pages in this case.\r
@@ -616,12 +601,10 @@ UsbHcAllocateAlignedPages (
     if (EFI_ERROR (Status)) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
-    AlignedMemory = (UINTN) Memory;\r
-    AlignedDeviceMemory = (UINTN) DeviceMemory;\r
   }\r
 \r
-  *HostAddress = (VOID *) AlignedMemory;\r
-  *DeviceAddress = (EFI_PHYSICAL_ADDRESS) AlignedDeviceMemory;\r
+  *HostAddress = Memory;\r
+  *DeviceAddress = DeviceMemory;\r
 \r
   return EFI_SUCCESS;\r
 }\r