On 05/29/15 14:33, Ard Biesheuvel wrote:
> Before splitting off ArmGicArchLib and moving it out of
> ArmPkg/Drivers/ArmGic into ArmPkg/Library, make sure that the
> GIC specific declarations it depends on are not hidden away in
> local headers "GicV2/GicV2Lib.h" and "GicV3/GicV3Lib.h".
> 
> So merge them with <Library/ArmGicLib.h>. This is entirely
> appropriate, since this is not a header that declares a public
> interface into ArmGicLib, but defines implementation internals.

The code movements in this patch seem okay to me, but I'm unsure about
your claim "Library/ArmGicLib.h [...] is not a header that declares a
public interface into ArmGicLib".

For example, take the function ArmGicSetupNonSecure(). This function is
declared in "ArmPkg/Include/Library/ArmGicLib.h", which one could say is
the library class itself (and your claim is the opposite).

The function is called in "ArmPlatformPkg/Sec/Sec.c" (the library client).

The funcion is implemented in "ArmPkg/Drivers/ArmGic/ArmGicSecLib.c",
which is built as part of "ArmPkg/Drivers/ArmGic/ArmGicSecLib.inf". That
INF file has LIBRARY_CLASS = ArmGicLib.

This kinda looks to counter your claim.

... Hm... on the other hand. Functions in a library class header must be
implemented by all library instances. And, we have another ArmGicLib
instance under

  ArmPkg/Drivers/ArmGic/ArmGicLib.inf

that does not build "ArmGicSecLib.c", therefore it will lack an
implementation for ArmGicSetupNonSecure().

In addition, [LibraryClasses.common] in "ArmPkg/ArmPkg.dec" does not
list the header file.

So I guess you're right, "ArmPkg/Include/Library/ArmGicLib.h" is already
a "dumping ground" for declarations of internal-use functions.

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

Laszlo

> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
> ---
>  ArmPkg/Drivers/ArmGic/AArch64/ArmGicArchLib.c |  2 -
>  ArmPkg/Drivers/ArmGic/Arm/ArmGicArchLib.c     |  2 -
>  ArmPkg/Drivers/ArmGic/ArmGicLib.c             |  3 -
>  ArmPkg/Drivers/ArmGic/ArmGicSecLib.c          |  2 -
>  ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c     |  3 +-
>  ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Lib.h     | 54 -------
>  ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c     |  3 +-
>  ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Lib.h     | 68 --------
>  ArmPkg/Include/Library/ArmGicLib.h            | 94 ++++++++++++
>  9 files changed, 98 insertions(+), 133 deletions(-)
> 
> diff --git a/ArmPkg/Drivers/ArmGic/AArch64/ArmGicArchLib.c 
> b/ArmPkg/Drivers/ArmGic/AArch64/ArmGicArchLib.c
> index 88fa4621e613..0e0fa3b9f33e 100644
> --- a/ArmPkg/Drivers/ArmGic/AArch64/ArmGicArchLib.c
> +++ b/ArmPkg/Drivers/ArmGic/AArch64/ArmGicArchLib.c
> @@ -15,8 +15,6 @@
>  #include <Library/ArmLib.h>
>  #include <Library/ArmGicLib.h>
>  
> -#include "GicV3/ArmGicV3Lib.h"
> -
>  ARM_GIC_ARCH_REVISION
>  EFIAPI
>  ArmGicGetSupportedArchRevision (
> diff --git a/ArmPkg/Drivers/ArmGic/Arm/ArmGicArchLib.c 
> b/ArmPkg/Drivers/ArmGic/Arm/ArmGicArchLib.c
> index 9ef56efeaa7b..f256de704631 100644
> --- a/ArmPkg/Drivers/ArmGic/Arm/ArmGicArchLib.c
> +++ b/ArmPkg/Drivers/ArmGic/Arm/ArmGicArchLib.c
> @@ -15,8 +15,6 @@
>  #include <Library/ArmLib.h>
>  #include <Library/ArmGicLib.h>
>  
> -#include "GicV3/ArmGicV3Lib.h"
> -
>  ARM_GIC_ARCH_REVISION
>  EFIAPI
>  ArmGicGetSupportedArchRevision (
> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicLib.c 
> b/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> index 48708e3812b4..248e896c4b94 100644
> --- a/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> +++ b/ArmPkg/Drivers/ArmGic/ArmGicLib.c
> @@ -19,9 +19,6 @@
>  #include <Library/IoLib.h>
>  #include <Library/PcdLib.h>
>  
> -#include "GicV2/ArmGicV2Lib.h"
> -#include "GicV3/ArmGicV3Lib.h"
> -
>  /**
>   * Return the base address of the GIC redistributor for the current CPU
>   *
> diff --git a/ArmPkg/Drivers/ArmGic/ArmGicSecLib.c 
> b/ArmPkg/Drivers/ArmGic/ArmGicSecLib.c
> index 1fdd4d73bd7d..d64806d2f16b 100644
> --- a/ArmPkg/Drivers/ArmGic/ArmGicSecLib.c
> +++ b/ArmPkg/Drivers/ArmGic/ArmGicSecLib.c
> @@ -17,8 +17,6 @@
>  #include <Library/IoLib.h>
>  #include <Library/ArmGicLib.h>
>  
> -#include "GicV2/ArmGicV2Lib.h"
> -
>  /*
>   * This function configures the interrupts set by the mask to be secure.
>   *
> diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c 
> b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
> index 743c534e04d9..e649ac1bc6af 100644
> --- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
> +++ b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
> @@ -22,8 +22,9 @@ Abstract:
>  
>  --*/
>  
> +#include <Library/ArmGicLib.h>
> +
>  #include "ArmGicDxe.h"
> -#include "GicV2/ArmGicV2Lib.h"
>  
>  #define ARM_GIC_DEFAULT_PRIORITY  0x80
>  
> diff --git a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Lib.h 
> b/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Lib.h
> deleted file mode 100644
> index 6803467346a3..000000000000
> --- a/ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Lib.h
> +++ /dev/null
> @@ -1,54 +0,0 @@
> -/** @file
> -*
> -*  Copyright (c) 2013-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 _ARM_GIC_V2_H_
> -#define _ARM_GIC_V2_H_
> -
> -// Interrupts from 1020 to 1023 are considered as special interrupts (eg: 
> spurious interrupts)
> -#define ARM_GIC_IS_SPECIAL_INTERRUPTS(Interrupt) (((Interrupt) >= 1020) && 
> ((Interrupt) <= 1023))
> -
> -VOID
> -EFIAPI
> -ArmGicV2SetupNonSecure (
> -  IN  UINTN         MpId,
> -  IN  INTN          GicDistributorBase,
> -  IN  INTN          GicInterruptInterfaceBase
> -  );
> -
> -VOID
> -EFIAPI
> -ArmGicV2EnableInterruptInterface (
> -  IN  INTN          GicInterruptInterfaceBase
> -  );
> -
> -VOID
> -EFIAPI
> -ArmGicV2DisableInterruptInterface (
> -  IN  INTN          GicInterruptInterfaceBase
> -  );
> -
> -UINTN
> -EFIAPI
> -ArmGicV2AcknowledgeInterrupt (
> -  IN  UINTN          GicInterruptInterfaceBase
> -  );
> -
> -VOID
> -EFIAPI
> -ArmGicV2EndOfInterrupt (
> -  IN UINTN                  GicInterruptInterfaceBase,
> -  IN UINTN                  Source
> -  );
> -
> -#endif
> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c 
> b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
> index 73cac8774056..4afa3d5a09c2 100644
> --- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
> +++ b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
> @@ -12,8 +12,9 @@
>  *
>  **/
>  
> +#include <Library/ArmGicLib.h>
> +
>  #include "ArmGicDxe.h"
> -#include "GicV3/ArmGicV3Lib.h"
>  
>  #define ARM_GIC_DEFAULT_PRIORITY  0x80
>  
> diff --git a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Lib.h 
> b/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Lib.h
> deleted file mode 100644
> index 794e8788a60b..000000000000
> --- a/ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Lib.h
> +++ /dev/null
> @@ -1,68 +0,0 @@
> -/** @file
> -*
> -*  Copyright (c) 2014-2015, 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 _ARM_GIC_V3_H_
> -#define _ARM_GIC_V3_H_
> -
> -#define ICC_SRE_EL2_SRE         (1 << 0)
> -
> -#define ARM_GICD_IROUTER_IRM BIT31
> -
> -UINT32
> -EFIAPI
> -ArmGicV3GetControlSystemRegisterEnable (
> -  VOID
> -  );
> -
> -VOID
> -EFIAPI
> -ArmGicV3SetControlSystemRegisterEnable (
> -  IN UINT32         ControlSystemRegisterEnable
> -  );
> -
> -VOID
> -EFIAPI
> -ArmGicV3EnableInterruptInterface (
> -  VOID
> -  );
> -
> -VOID
> -EFIAPI
> -ArmGicV3DisableInterruptInterface (
> -  VOID
> -  );
> -
> -UINTN
> -EFIAPI
> -ArmGicV3AcknowledgeInterrupt (
> -  VOID
> -  );
> -
> -VOID
> -EFIAPI
> -ArmGicV3EndOfInterrupt (
> -  IN UINTN                  Source
> -  );
> -
> -VOID
> -ArmGicV3SetBinaryPointer (
> -  IN UINTN                  BinaryPoint
> -  );
> -
> -VOID
> -ArmGicV3SetPriorityMask (
> -  IN UINTN                  Priority
> -  );
> -
> -#endif
> diff --git a/ArmPkg/Include/Library/ArmGicLib.h 
> b/ArmPkg/Include/Library/ArmGicLib.h
> index e2a4818c4c0c..e3db9c0d250f 100644
> --- a/ArmPkg/Include/Library/ArmGicLib.h
> +++ b/ArmPkg/Include/Library/ArmGicLib.h
> @@ -231,4 +231,98 @@ ArmGicIsInterruptEnabled (
>    IN UINTN                  Source
>    );
>  
> +//
> +// GIC revision 2 specific declarations
> +//
> +
> +// Interrupts from 1020 to 1023 are considered as special interrupts (eg: 
> spurious interrupts)
> +#define ARM_GIC_IS_SPECIAL_INTERRUPTS(Interrupt) (((Interrupt) >= 1020) && 
> ((Interrupt) <= 1023))
> +
> +VOID
> +EFIAPI
> +ArmGicV2SetupNonSecure (
> +  IN  UINTN         MpId,
> +  IN  INTN          GicDistributorBase,
> +  IN  INTN          GicInterruptInterfaceBase
> +  );
> +
> +VOID
> +EFIAPI
> +ArmGicV2EnableInterruptInterface (
> +  IN  INTN          GicInterruptInterfaceBase
> +  );
> +
> +VOID
> +EFIAPI
> +ArmGicV2DisableInterruptInterface (
> +  IN  INTN          GicInterruptInterfaceBase
> +  );
> +
> +UINTN
> +EFIAPI
> +ArmGicV2AcknowledgeInterrupt (
> +  IN  UINTN          GicInterruptInterfaceBase
> +  );
> +
> +VOID
> +EFIAPI
> +ArmGicV2EndOfInterrupt (
> +  IN UINTN                  GicInterruptInterfaceBase,
> +  IN UINTN                  Source
> +  );
> +
> +//
> +// GIC revision 3 specific declarations
> +//
> +
> +#define ICC_SRE_EL2_SRE         (1 << 0)
> +
> +#define ARM_GICD_IROUTER_IRM BIT31
> +
> +UINT32
> +EFIAPI
> +ArmGicV3GetControlSystemRegisterEnable (
> +  VOID
> +  );
> +
> +VOID
> +EFIAPI
> +ArmGicV3SetControlSystemRegisterEnable (
> +  IN UINT32         ControlSystemRegisterEnable
> +  );
> +
> +VOID
> +EFIAPI
> +ArmGicV3EnableInterruptInterface (
> +  VOID
> +  );
> +
> +VOID
> +EFIAPI
> +ArmGicV3DisableInterruptInterface (
> +  VOID
> +  );
> +
> +UINTN
> +EFIAPI
> +ArmGicV3AcknowledgeInterrupt (
> +  VOID
> +  );
> +
> +VOID
> +EFIAPI
> +ArmGicV3EndOfInterrupt (
> +  IN UINTN                  Source
> +  );
> +
> +VOID
> +ArmGicV3SetBinaryPointer (
> +  IN UINTN                  BinaryPoint
> +  );
> +
> +VOID
> +ArmGicV3SetPriorityMask (
> +  IN UINTN                  Priority
> +  );
> +
>  #endif
> 


------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to