]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UnixPkg/FvbServicesRuntimeDxe/FWBlockService.c
Clean minor error.
[mirror_edk2.git] / UnixPkg / FvbServicesRuntimeDxe / FWBlockService.c
index 5889586cee2f31871c2b79554b0452667ed35edc..f3a28988020a6dd7c02f0e50704f7a1c639a12a0 100644 (file)
@@ -21,7 +21,6 @@ Revision History
 \r
 #include "PiDxe.h"\r
 #include <Guid/EventGroup.h>\r
-#include <Protocol/FvbExtension.h>\r
 #include <Protocol/FirmwareVolumeBlock.h>\r
 #include <Guid/AlternateFvBlock.h>\r
 #include <Protocol/DevicePath.h>\r
@@ -35,7 +34,9 @@ Revision History
 #include <Library/HobLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/UefiBootServicesTableLib.h>
+#include <Library/DevicePathLib.h>
+\r
 #include "FwBlockService.h"\r
 \r
 ESAL_FWB_GLOBAL         *mFvbModuleGlobal;\r
@@ -77,9 +78,6 @@ EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = {
     FvbProtocolWrite,\r
     FvbProtocolEraseBlocks,\r
     NULL\r
-  },\r
-  {\r
-    FvbExtendProtocolEraseCustomBlockRange\r
   }\r
 };\r
 \r
@@ -133,7 +131,6 @@ Returns:
     Index++;\r
   }\r
 \r
-  EfiConvertPointer (0x0, (VOID **) &mFvbModuleGlobal->FvbScratchSpace[FVB_VIRTUAL]);\r
   EfiConvertPointer (0x0, (VOID **) &mFvbModuleGlobal);\r
 }\r
 \r
@@ -230,7 +227,7 @@ Returns:
 EFI_STATUS\r
 FvbGetVolumeAttributes (\r
   IN UINTN                                Instance,\r
-  OUT EFI_FVB_ATTRIBUTES                  *Attributes,\r
+  OUT EFI_FVB_ATTRIBUTES_2                  *Attributes,\r
   IN ESAL_FWB_GLOBAL                      *Global,\r
   IN BOOLEAN                              Virtual\r
   )\r
@@ -401,7 +398,7 @@ Returns:
 \r
 --*/\r
 {\r
-  EFI_FVB_ATTRIBUTES  Attributes;\r
+  EFI_FVB_ATTRIBUTES_2  Attributes;\r
   UINTN               LbaAddress;\r
   UINTN               LbaLength;\r
   EFI_STATUS          Status;\r
@@ -486,7 +483,7 @@ Returns:
 \r
 --*/\r
 {\r
-  EFI_FVB_ATTRIBUTES  Attributes;\r
+  EFI_FVB_ATTRIBUTES_2  Attributes;\r
   UINTN               LbaAddress;\r
   UINTN               LbaLength;\r
   EFI_STATUS          Status;\r
@@ -563,7 +560,7 @@ Returns:
 --*/\r
 {\r
 \r
-  EFI_FVB_ATTRIBUTES  Attributes;\r
+  EFI_FVB_ATTRIBUTES_2  Attributes;\r
   UINTN               LbaAddress;\r
   UINTN               LbaLength;\r
   EFI_STATUS          Status;\r
@@ -597,117 +594,10 @@ Returns:
   return EFI_SUCCESS;\r
 }\r
 \r
-EFI_STATUS\r
-FvbEraseCustomBlockRange (\r
-  IN UINTN                                Instance,\r
-  IN EFI_LBA                              StartLba,\r
-  IN UINTN                                OffsetStartLba,\r
-  IN EFI_LBA                              LastLba,\r
-  IN UINTN                                OffsetLastLba,\r
-  IN ESAL_FWB_GLOBAL                      *Global,\r
-  IN BOOLEAN                              Virtual\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Erases and initializes a specified range of a firmware volume\r
-\r
-Arguments:\r
-  Instance              - The FV instance to be erased\r
-  StartLba              - The starting logical block index to be erased\r
-  OffsetStartLba        - Offset into the starting block at which to \r
-                          begin erasing\r
-  LastLba               - The last logical block index to be erased\r
-  OffsetStartLba        - Offset into the last block at which to end erasing\r
-  Global                - Pointer to ESAL_FWB_GLOBAL that contains all\r
-                          instance data\r
-  Virtual               - Whether CPU is in virtual or physical mode\r
-\r
-Returns: \r
-  EFI_SUCCESS           - The firmware volume was erased successfully\r
-  EFI_ACCESS_DENIED     - The firmware volume is in the WriteDisabled state\r
-  EFI_DEVICE_ERROR      - The block device is not functioning correctly and \r
-                          could not be written. Firmware device may have been\r
-                          partially erased\r
-  EFI_INVALID_PARAMETER - Instance not found\r
-\r
---*/\r
-{\r
-  EFI_LBA Index;\r
-  UINTN   LbaSize;\r
-  UINTN   ScratchLbaSizeData;\r
-  EFI_STATUS Status;\r
-\r
-  //\r
-  // First LBA\r
-  //\r
-  Status = FvbGetLbaAddress (Instance, StartLba, NULL, &LbaSize, NULL, Global, Virtual);\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Use the scratch space as the intermediate buffer to transfer data\r
-  // Back up the first LBA in scratch space.\r
-  //\r
-  FvbReadBlock (Instance, StartLba, 0, &LbaSize, Global->FvbScratchSpace[Virtual], Global, Virtual);\r
-\r
-  //\r
-  // erase now\r
-  //\r
-  FvbEraseBlock (Instance, StartLba, Global, Virtual);\r
-  ScratchLbaSizeData = OffsetStartLba;\r
-\r
-  //\r
-  // write the data back to the first block\r
-  //\r
-  if (ScratchLbaSizeData > 0) {\r
-    Status = FvbWriteBlock (Instance, StartLba, 0, &ScratchLbaSizeData, Global->FvbScratchSpace[Virtual], Global, Virtual);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-  }\r
-  //\r
-  // Middle LBAs\r
-  //\r
-  if (LastLba > (StartLba + 1)) {\r
-    for (Index = (StartLba + 1); Index <= (LastLba - 1); Index++) {\r
-      FvbEraseBlock (Instance, Index, Global, Virtual);\r
-    }\r
-  }\r
-  //\r
-  // Last LBAs, the same as first LBAs\r
-  //\r
-  if (LastLba > StartLba) {\r
-    Status = FvbGetLbaAddress (Instance, LastLba, NULL, &LbaSize, NULL, Global, Virtual);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-    FvbReadBlock (Instance, LastLba, 0, &LbaSize, Global->FvbScratchSpace[Virtual], Global, Virtual);\r
-    FvbEraseBlock (Instance, LastLba, Global, Virtual);\r
-  }\r
-\r
-  ScratchLbaSizeData = LbaSize - (OffsetLastLba + 1);\r
-\r
-  if (ScratchLbaSizeData > 0) {\r
-    Status = FvbWriteBlock (\r
-              Instance,\r
-              LastLba,\r
-              (OffsetLastLba + 1),\r
-              &ScratchLbaSizeData,\r
-              Global->FvbScratchSpace[Virtual] + OffsetLastLba + 1,\r
-              Global,\r
-              Virtual\r
-              );\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
 EFI_STATUS\r
 FvbSetVolumeAttributes (\r
   IN UINTN                                Instance,\r
-  IN OUT EFI_FVB_ATTRIBUTES               *Attributes,\r
+  IN OUT EFI_FVB_ATTRIBUTES_2               *Attributes,\r
   IN ESAL_FWB_GLOBAL                      *Global,\r
   IN BOOLEAN                              Virtual\r
   )\r
@@ -720,7 +610,7 @@ Routine Description:
 Arguments:\r
   Instance              - The FV instance whose attributes is going to be \r
                           modified\r
-  Attributes            - On input, it is a pointer to EFI_FVB_ATTRIBUTES \r
+  Attributes            - On input, it is a pointer to EFI_FVB_ATTRIBUTES_2 \r
                           containing the desired firmware volume settings.\r
                           On successful return, it contains the new settings\r
                           of the firmware volume\r
@@ -738,13 +628,13 @@ Returns:
 --*/\r
 {\r
   EFI_FW_VOL_INSTANCE *FwhInstance;\r
-  EFI_FVB_ATTRIBUTES  OldAttributes;\r
-  EFI_FVB_ATTRIBUTES  *AttribPtr;\r
+  EFI_FVB_ATTRIBUTES_2  OldAttributes;\r
+  EFI_FVB_ATTRIBUTES_2  *AttribPtr;\r
   UINT32              Capabilities;\r
   UINT32              OldStatus;\r
   UINT32              NewStatus;\r
   EFI_STATUS          Status;\r
-  EFI_FVB_ATTRIBUTES  UnchangedAttributes;\r
+  EFI_FVB_ATTRIBUTES_2  UnchangedAttributes;\r
 \r
 \r
   //\r
@@ -753,7 +643,7 @@ Returns:
   Status = GetFvbInstance (Instance, Global, &FwhInstance, Virtual);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  AttribPtr     = (EFI_FVB_ATTRIBUTES *) &(FwhInstance->VolumeHeader.Attributes);\r
+  AttribPtr     = (EFI_FVB_ATTRIBUTES_2 *) &(FwhInstance->VolumeHeader.Attributes);\r
   OldAttributes = *AttribPtr;\r
   Capabilities  = OldAttributes & (EFI_FVB2_READ_DISABLED_CAP | \\r
                                    EFI_FVB2_READ_ENABLED_CAP | \\r
@@ -920,7 +810,7 @@ EFI_STATUS
 EFIAPI\r
 FvbProtocolGetAttributes (\r
   IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL           *This,\r
-  OUT EFI_FVB_ATTRIBUTES                          *Attributes\r
+  OUT EFI_FVB_ATTRIBUTES_2                          *Attributes\r
   )\r
 /*++\r
 \r
@@ -947,7 +837,7 @@ EFI_STATUS
 EFIAPI\r
 FvbProtocolSetAttributes (\r
   IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL           *This,\r
-  IN OUT EFI_FVB_ATTRIBUTES                       *Attributes\r
+  IN OUT EFI_FVB_ATTRIBUTES_2                       *Attributes\r
   )\r
 /*++\r
 \r
@@ -1164,56 +1054,6 @@ Returns:
 \r
   return FvbReadBlock (FvbDevice->Instance, Lba, Offset, NumBytes, Buffer, mFvbModuleGlobal, EfiGoneVirtual ());\r
 }\r
-//\r
-// FVB Extension Protocols\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-FvbExtendProtocolEraseCustomBlockRange (\r
-  IN EFI_FVB_EXTENSION_PROTOCOL           *This,\r
-  IN EFI_LBA                              StartLba,\r
-  IN UINTN                                OffsetStartLba,\r
-  IN EFI_LBA                              LastLba,\r
-  IN UINTN                                OffsetLastLba\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Erases and initializes a specified range of a firmware volume\r
-\r
-Arguments:\r
-  This                  - Calling context\r
-  StartLba              - The starting logical block index to be erased\r
-  OffsetStartLba        - Offset into the starting block at which to \r
-                          begin erasing\r
-  LastLba               - The last logical block index to be erased\r
-  OffsetStartLba        - Offset into the last block at which to end erasing\r
-\r
-Returns: \r
-  EFI_SUCCESS           - The firmware volume was erased successfully\r
-  EFI_ACCESS_DENIED     - The firmware volume is in the WriteDisabled state\r
-  EFI_DEVICE_ERROR      - The block device is not functioning correctly and \r
-                          could not be written. Firmware device may have been\r
-                          partially erased\r
-\r
---*/\r
-{\r
-  EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;\r
-\r
-  FvbDevice = FVB_EXTEND_DEVICE_FROM_THIS (This);\r
-\r
-  return FvbEraseCustomBlockRange (\r
-          FvbDevice->Instance,\r
-          StartLba,\r
-          OffsetStartLba,\r
-          LastLba,\r
-          OffsetLastLba,\r
-          mFvbModuleGlobal,\r
-          EfiGoneVirtual ()\r
-          );\r
-}\r
-\r
-STATIC\r
 EFI_STATUS\r
 ValidateFvHeader (\r
   EFI_FIRMWARE_VOLUME_HEADER            *FwVolHeader\r
@@ -1489,7 +1329,7 @@ Returns:
                       NULL\r
                       );\r
       ASSERT_EFI_ERROR (Status);\r
-    } else if (EfiIsDevicePathEnd (TempFwbDevicePath)) {\r
+    } else if (IsDevicePathEnd (TempFwbDevicePath)) {\r
       //\r
       // Device allready exists, so reinstall the FVB protocol\r
       //\r
@@ -1514,13 +1354,9 @@ Returns:
       //\r
       ASSERT (FALSE);\r
     }\r
-    //\r
-    // Install FVB Extension Protocol on the same handle\r
-    //\r
+\r
     Status = gBS->InstallMultipleProtocolInterfaces (\r
                     &FwbHandle,\r
-                    &gEfiFvbExtensionProtocolGuid,\r
-                    &FvbDevice->FvbExtension,\r
                     &gEfiAlternateFvBlockGuid,\r
                     NULL,\r
                     NULL\r
@@ -1537,17 +1373,5 @@ Returns:
     FvHob.Raw = GET_NEXT_HOB (FvHob);\r
   }\r
 \r
-  //\r
-  // Allocate for scratch space, an intermediate buffer for FVB extention\r
-  //\r
-  Status = gBS->AllocatePool (\r
-                  EfiRuntimeServicesData,\r
-                  MaxLbaSize,\r
-                  (VOID**)&mFvbModuleGlobal->FvbScratchSpace[FVB_PHYSICAL]\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  mFvbModuleGlobal->FvbScratchSpace[FVB_VIRTUAL] = mFvbModuleGlobal->FvbScratchSpace[FVB_PHYSICAL];\r
-\r
   return EFI_SUCCESS;\r
 }\r