diff mbox

[edk2,v7,13/24] EmbeddedPkg: split off FDT loading functionality from FdtLib

Message ID 1409918214-29584-14-git-send-email-ard.biesheuvel@linaro.org
State New
Headers show

Commit Message

Ard Biesheuvel Sept. 5, 2014, 11:56 a.m. UTC
Split off the recently added functionality to load device tree images and
install them as configuration tables, as it introduces a dependency on
UefiBootServicesTableLib, preventing FdtLib from being used during SEC and
PEI phases.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 EmbeddedPkg/Include/FdtLoadLib.h                   | 51 ++++++++++++++++++++++
 EmbeddedPkg/Include/libfdt_env.h                   | 31 -------------
 EmbeddedPkg/Library/FdtLib/FdtLib.inf              | 13 ------
 .../{FdtLib => FdtLoadLib}/FdtConfigurationTable.c |  2 +-
 EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf      | 44 +++++++++++++++++++
 5 files changed, 96 insertions(+), 45 deletions(-)
 create mode 100644 EmbeddedPkg/Include/FdtLoadLib.h
 rename EmbeddedPkg/Library/{FdtLib => FdtLoadLib}/FdtConfigurationTable.c (96%)
 create mode 100644 EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf

Comments

Laszlo Ersek Sept. 6, 2014, 4:37 p.m. UTC | #1
On 09/05/14 13:56, Ard Biesheuvel wrote:
> Split off the recently added functionality to load device tree images and
> install them as configuration tables, as it introduces a dependency on
> UefiBootServicesTableLib, preventing FdtLib from being used during SEC and
> PEI phases.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
>  EmbeddedPkg/Include/FdtLoadLib.h                   | 51 ++++++++++++++++++++++
>  EmbeddedPkg/Include/libfdt_env.h                   | 31 -------------
>  EmbeddedPkg/Library/FdtLib/FdtLib.inf              | 13 ------
>  .../{FdtLib => FdtLoadLib}/FdtConfigurationTable.c |  2 +-
>  EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf      | 44 +++++++++++++++++++
>  5 files changed, 96 insertions(+), 45 deletions(-)
>  create mode 100644 EmbeddedPkg/Include/FdtLoadLib.h
>  rename EmbeddedPkg/Library/{FdtLib => FdtLoadLib}/FdtConfigurationTable.c (96%)
>  create mode 100644 EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf
> 
> diff --git a/EmbeddedPkg/Include/FdtLoadLib.h b/EmbeddedPkg/Include/FdtLoadLib.h
> new file mode 100644
> index 000000000000..b5f6dfc8fbc6
> --- /dev/null
> +++ b/EmbeddedPkg/Include/FdtLoadLib.h
> @@ -0,0 +1,51 @@
> +/** @file
> +*
> +*  Copyright (c) 2011-2014, ARM Limited. All rights reserved.
> +*
> +*  This program and the accompanying materials
> +*  are licensed and made available under the terms and conditions of the BSD License
> +*  which accompanies this distribution.  The full text of the license may be found at
> +*  http://opensource.org/licenses/bsd-license.php
> +*
> +*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> +*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> +*
> +**/
> +
> +#ifndef _FDTLOADLIB_ENV_H
> +#define _FDTLOADLIB_ENV_H
> +
> +#include <Uefi.h>
> +#include <libfdt.h>
> +
> +/**
> +  Load and Install FDT from Semihosting
> +
> +  @param Filename   Name of the file to load from semihosting
> +
> +  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table
> +                                from semihosting
> +  @return EFI_NOT_FOUND         Fail to locate the file in semihosting
> +  @return EFI_OUT_OF_RESOURCES  Fail to allocate memory to contain the blob
> +**/
> +EFI_STATUS
> +InstallFdtFromSemihosting (
> +  IN  CONST CHAR16*   FileName
> +  );
> +
> +/**
> +  Load and Install FDT from Firmware Volume
> +
> +  @param Filename   Guid of the FDT blob to load from firmware volume
> +
> +  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table
> +                                from firmware volume
> +  @return EFI_NOT_FOUND         Failed to locate the file in firmware volume
> +  @return EFI_OUT_OF_RESOURCES  Failed to allocate memory to contain the blob
> +**/
> +EFI_STATUS
> +InstallFdtFromFv (
> +  IN  CONST EFI_GUID *FileName
> +  );
> +
> +#endif
> diff --git a/EmbeddedPkg/Include/libfdt_env.h b/EmbeddedPkg/Include/libfdt_env.h
> index c4dc83c02494..3e24db94098c 100644
> --- a/EmbeddedPkg/Include/libfdt_env.h
> +++ b/EmbeddedPkg/Include/libfdt_env.h
> @@ -15,7 +15,6 @@
>  #ifndef _LIBFDT_ENV_H
>  #define _LIBFDT_ENV_H
>  
> -#include <Uefi.h>
>  #include <Library/BaseLib.h>
>  #include <Library/BaseMemoryLib.h>
>  
> @@ -79,34 +78,4 @@ static inline char *strchr(const char *s, int c) {
>    return AsciiStrStr (s, pattern);
>  }
>  
> -/**
> -  Load and Install FDT from Semihosting
> -
> -  @param Filename   Name of the file to load from semihosting
> -
> -  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table
> -                                from semihosting
> -  @return EFI_NOT_FOUND         Fail to locate the file in semihosting
> -  @return EFI_OUT_OF_RESOURCES  Fail to allocate memory to contain the blob
> -**/
> -EFI_STATUS
> -InstallFdtFromSemihosting (
> -  IN  CONST CHAR16*   FileName
> -  );
> -
> -/**
> -  Load and Install FDT from Firmware Volume
> -
> -  @param Filename   Guid of the FDT blob to load from firmware volume
> -
> -  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table
> -                                from firmware volume
> -  @return EFI_NOT_FOUND         Failed to locate the file in firmware volume
> -  @return EFI_OUT_OF_RESOURCES  Failed to allocate memory to contain the blob
> -**/
> -EFI_STATUS
> -InstallFdtFromFv (
> -  IN  CONST EFI_GUID *FileName
> -  );
> -
>  #endif /* _LIBFDT_ENV_H */
> diff --git a/EmbeddedPkg/Library/FdtLib/FdtLib.inf b/EmbeddedPkg/Library/FdtLib/FdtLib.inf
> index d18caa67ea3f..f3da231143a0 100644
> --- a/EmbeddedPkg/Library/FdtLib/FdtLib.inf
> +++ b/EmbeddedPkg/Library/FdtLib/FdtLib.inf
> @@ -26,7 +26,6 @@
>  #
>  
>  [Sources]
> -  FdtConfigurationTable.c
>    fdt_ro.c
>    fdt_rw.c
>    fdt_strerror.c
> @@ -37,15 +36,3 @@
>  [Packages]
>    MdePkg/MdePkg.dec
>    EmbeddedPkg/EmbeddedPkg.dec
> -
> -[LibraryClasses]
> -  UefiBootServicesTableLib
> -
> -[Protocols]
> -  gEfiDevicePathProtocolGuid
> -  gEfiSimpleFileSystemProtocolGuid
> -  gEfiFirmwareVolume2ProtocolGuid
> -
> -[Guids]
> -  gEfiFileInfoGuid
> -  gFdtTableGuid
> diff --git a/EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c b/EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
> similarity index 96%
> rename from EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c
> rename to EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
> index aece1df1cc79..fd15a0b0ceb9 100644
> --- a/EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c
> +++ b/EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
> @@ -24,7 +24,7 @@
>  #include <Guid/Fdt.h>
>  #include <Guid/FileInfo.h>
>  
> -#include <libfdt.h>
> +#include <FdtLoadLib.h>
>  
>  //
>  // Device path for SemiHosting
> diff --git a/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf b/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf
> new file mode 100644
> index 000000000000..4d870fa6939e
> --- /dev/null
> +++ b/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf
> @@ -0,0 +1,44 @@
> +#/* @file
> +#  Copyright (c) 2014, Linaro Limited. All rights reserved.
> +#
> +#  This program and the accompanying materials
> +#  are licensed and made available under the terms and conditions of the BSD License
> +#  which accompanies this distribution.  The full text of the license may be found at
> +#  http://opensource.org/licenses/bsd-license.php
> +#
> +#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> +#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
> +#
> +#*/
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010005
> +  BASE_NAME                      = FdtLoadLib
> +  FILE_GUID                      = F00298C1-BBC3-445F-8906-AAEAFE7729A4
> +  MODULE_TYPE                    = BASE
> +  VERSION_STRING                 = 1.0
> +  LIBRARY_CLASS                  = FdtLoadLib
> +
> +#
> +# The following information is for reference only and not required by the build tools.
> +#
> +#  VALID_ARCHITECTURES           = ARM AARCH64
> +#
> +
> +[Sources]
> +  FdtConfigurationTable.c
> +
> +[Packages]
> +  EmbeddedPkg/EmbeddedPkg.dec
> +
> +[LibraryClasses]
> +  FdtLib
> +
> +[Protocols]
> +  gEfiDevicePathProtocolGuid
> +  gEfiSimpleFileSystemProtocolGuid
> +  gEfiFirmwareVolume2ProtocolGuid
> +
> +[Guids]
> +  gEfiFileInfoGuid
> +  gFdtTableGuid
> 

This appears to be:
- new header & new inf
- cut n'paste from old header/inf to new ones
- functionality existed in separate C file anyway, moved it over
- FILE_GUID is unique, OK

I checked the tree for callers of InstallFdtFromSemihosting() and
InstallFdtFromFv() -- the library dependencies of those modules should
be updated. However, I found no callers at all, so this should be fine
as-is.

I don't know if Olivier uses git-am to apply patches (or if he pulls
from remotes) before forwarding changes to the SVN repo. Unfortunately,
SVN doesn't support patches that contain rename instructions, so I
usually set diff.renames=false (which is BTW very annoying because it
makes review harder). If the rename in this patch turns out to be an
issue, we should ask Jordan (CC'd, thanks) to pull your branch.

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
diff mbox

Patch

diff --git a/EmbeddedPkg/Include/FdtLoadLib.h b/EmbeddedPkg/Include/FdtLoadLib.h
new file mode 100644
index 000000000000..b5f6dfc8fbc6
--- /dev/null
+++ b/EmbeddedPkg/Include/FdtLoadLib.h
@@ -0,0 +1,51 @@ 
+/** @file
+*
+*  Copyright (c) 2011-2014, ARM Limited. All rights reserved.
+*
+*  This program and the accompanying materials
+*  are licensed and made available under the terms and conditions of the BSD License
+*  which accompanies this distribution.  The full text of the license may be found at
+*  http://opensource.org/licenses/bsd-license.php
+*
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+#ifndef _FDTLOADLIB_ENV_H
+#define _FDTLOADLIB_ENV_H
+
+#include <Uefi.h>
+#include <libfdt.h>
+
+/**
+  Load and Install FDT from Semihosting
+
+  @param Filename   Name of the file to load from semihosting
+
+  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table
+                                from semihosting
+  @return EFI_NOT_FOUND         Fail to locate the file in semihosting
+  @return EFI_OUT_OF_RESOURCES  Fail to allocate memory to contain the blob
+**/
+EFI_STATUS
+InstallFdtFromSemihosting (
+  IN  CONST CHAR16*   FileName
+  );
+
+/**
+  Load and Install FDT from Firmware Volume
+
+  @param Filename   Guid of the FDT blob to load from firmware volume
+
+  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table
+                                from firmware volume
+  @return EFI_NOT_FOUND         Failed to locate the file in firmware volume
+  @return EFI_OUT_OF_RESOURCES  Failed to allocate memory to contain the blob
+**/
+EFI_STATUS
+InstallFdtFromFv (
+  IN  CONST EFI_GUID *FileName
+  );
+
+#endif
diff --git a/EmbeddedPkg/Include/libfdt_env.h b/EmbeddedPkg/Include/libfdt_env.h
index c4dc83c02494..3e24db94098c 100644
--- a/EmbeddedPkg/Include/libfdt_env.h
+++ b/EmbeddedPkg/Include/libfdt_env.h
@@ -15,7 +15,6 @@ 
 #ifndef _LIBFDT_ENV_H
 #define _LIBFDT_ENV_H
 
-#include <Uefi.h>
 #include <Library/BaseLib.h>
 #include <Library/BaseMemoryLib.h>
 
@@ -79,34 +78,4 @@  static inline char *strchr(const char *s, int c) {
   return AsciiStrStr (s, pattern);
 }
 
-/**
-  Load and Install FDT from Semihosting
-
-  @param Filename   Name of the file to load from semihosting
-
-  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table
-                                from semihosting
-  @return EFI_NOT_FOUND         Fail to locate the file in semihosting
-  @return EFI_OUT_OF_RESOURCES  Fail to allocate memory to contain the blob
-**/
-EFI_STATUS
-InstallFdtFromSemihosting (
-  IN  CONST CHAR16*   FileName
-  );
-
-/**
-  Load and Install FDT from Firmware Volume
-
-  @param Filename   Guid of the FDT blob to load from firmware volume
-
-  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table
-                                from firmware volume
-  @return EFI_NOT_FOUND         Failed to locate the file in firmware volume
-  @return EFI_OUT_OF_RESOURCES  Failed to allocate memory to contain the blob
-**/
-EFI_STATUS
-InstallFdtFromFv (
-  IN  CONST EFI_GUID *FileName
-  );
-
 #endif /* _LIBFDT_ENV_H */
diff --git a/EmbeddedPkg/Library/FdtLib/FdtLib.inf b/EmbeddedPkg/Library/FdtLib/FdtLib.inf
index d18caa67ea3f..f3da231143a0 100644
--- a/EmbeddedPkg/Library/FdtLib/FdtLib.inf
+++ b/EmbeddedPkg/Library/FdtLib/FdtLib.inf
@@ -26,7 +26,6 @@ 
 #
 
 [Sources]
-  FdtConfigurationTable.c
   fdt_ro.c
   fdt_rw.c
   fdt_strerror.c
@@ -37,15 +36,3 @@ 
 [Packages]
   MdePkg/MdePkg.dec
   EmbeddedPkg/EmbeddedPkg.dec
-
-[LibraryClasses]
-  UefiBootServicesTableLib
-
-[Protocols]
-  gEfiDevicePathProtocolGuid
-  gEfiSimpleFileSystemProtocolGuid
-  gEfiFirmwareVolume2ProtocolGuid
-
-[Guids]
-  gEfiFileInfoGuid
-  gFdtTableGuid
diff --git a/EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c b/EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
similarity index 96%
rename from EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c
rename to EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
index aece1df1cc79..fd15a0b0ceb9 100644
--- a/EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c
+++ b/EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
@@ -24,7 +24,7 @@ 
 #include <Guid/Fdt.h>
 #include <Guid/FileInfo.h>
 
-#include <libfdt.h>
+#include <FdtLoadLib.h>
 
 //
 // Device path for SemiHosting
diff --git a/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf b/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf
new file mode 100644
index 000000000000..4d870fa6939e
--- /dev/null
+++ b/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf
@@ -0,0 +1,44 @@ 
+#/* @file
+#  Copyright (c) 2014, Linaro Limited. All rights reserved.
+#
+#  This program and the accompanying materials
+#  are licensed and made available under the terms and conditions of the BSD License
+#  which accompanies this distribution.  The full text of the license may be found at
+#  http://opensource.org/licenses/bsd-license.php
+#
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+#*/
+
+[Defines]
+  INF_VERSION                    = 0x00010005
+  BASE_NAME                      = FdtLoadLib
+  FILE_GUID                      = F00298C1-BBC3-445F-8906-AAEAFE7729A4
+  MODULE_TYPE                    = BASE
+  VERSION_STRING                 = 1.0
+  LIBRARY_CLASS                  = FdtLoadLib
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+#  VALID_ARCHITECTURES           = ARM AARCH64
+#
+
+[Sources]
+  FdtConfigurationTable.c
+
+[Packages]
+  EmbeddedPkg/EmbeddedPkg.dec
+
+[LibraryClasses]
+  FdtLib
+
+[Protocols]
+  gEfiDevicePathProtocolGuid
+  gEfiSimpleFileSystemProtocolGuid
+  gEfiFirmwareVolume2ProtocolGuid
+
+[Guids]
+  gEfiFileInfoGuid
+  gFdtTableGuid