Acked-by: Hao A Wu <hao.a.wu@intel.com>
Best Regards,
Hao Wu
> -----Original Message-----
> From: Sami Mujawar <sami.mujawar@arm.com>
> Sent: Saturday, October 3, 2020 5:14 AM
> To: devel@edk2.groups.io
> Cc: Sami Mujawar <sami.mujawar@arm.com>; ard.biesheuvel@arm.com;
> leif@nuviainc.com; lersek@redhat.com; Wang, Jian J <jian.j.wang@intel.com>;
> Wu, Hao A <hao.a.wu@intel.com>; Alexandru.Elisei@arm.com;
> Andre.Przywara@arm.com; Matteo.Carlini@arm.com; Ben.Adderson@arm.com;
> nd@arm.com
> Subject: [PATCH v5 07/15] MdeModulePkg: Fix constructor invocation ordering
>
> The BaseSerialPortLib16550 library does not implement a constructor. This
> prevents the correct constructor invocation order for dependent libraries.
> e.g. A PlatformHookLib (for the Serial Port) may have a dependency on
> retrieving data from a Hob. A Hob library implementation may configure its
> initial state in the HobLib constructor. Since BaseSerialPortLib16550 does not
> implement a constructor, the Basetools do not resolve the correct order for
> constructor invocation.
>
> To fix this, add an empty constructor to the serial port library
> BaseSerialPortLib16550.
>
> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
> Acked-by: Ard Biesheuvel <Ard.Biesheuvel@arm.com>
> ---
>
> Notes:
> v5:
> - Fix function documentation to match doxygen style. [Sami]
> Ref: https://edk2.groups.io/g/devel/message/62148
>
> v4:
> - No code change, resending patch with v4 series. [Sami]
> Ref: https://edk2.groups.io/g/devel/topic/75081484
>
> MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.c |
> 17 +++++++++++++++++
> MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf | 3
> +++
> 2 files changed, 20 insertions(+)
>
> diff --git
> a/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.c
> b/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.c
> index
> 9cb50dd80d5634ab2aa6d68bf5ca7fb891463eef..f10b5894663a979873427cffa8
> 4a37b3064c623e 100644
> --- a/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.c
> +++ b/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550
> +++ .c
> @@ -4,6 +4,7 @@
> (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
> Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
> Copyright (c) 2018, AMD Incorporated. All rights reserved.<BR>
> + Copyright (c) 2020, ARM Limited. All rights reserved.
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> @@ -1102,3 +1103,19 @@ SerialPortSetAttributes (
> return RETURN_SUCCESS;
> }
>
> +/** Base Serial Port 16550 Library Constructor
> +
> + @retval RETURN_SUCCESS Success.
> +**/
> +EFI_STATUS
> +EFIAPI
> +BaseSerialPortLib16550 (
> + VOID
> + )
> +{
> + // Nothing to do here. This constructor is added to
> + // enable the chain of constructor invocation for
> + // dependent libraries.
> + return RETURN_SUCCESS;
> +}
> +
> diff --git
> a/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
> b/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
> index
> 8b4ae3f1d4ee1e2e9a8b81eab4c900541ce8cfb6..92b7a8b7896a305d2ce22589f
> 8a9593618d37bb7 100644
> ---
> a/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550.inf
> +++ b/MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPortLib16550
> +++ .inf
> @@ -2,6 +2,8 @@
> # SerialPortLib instance for 16550 UART.
> #
> # Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2020, ARM Limited. All rights reserved.
> +#
> # SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -14,6 +16,7 @@
> [Defines]
> MODULE_TYPE = BASE
> VERSION_STRING = 1.1
> LIBRARY_CLASS = SerialPortLib
> + CONSTRUCTOR = BaseSerialPortLib16550
>
> [Packages]
> MdePkg/MdePkg.dec
> --
> 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#65877): https://edk2.groups.io/g/devel/message/65877
Mute This Topic: https://groups.io/mt/77270945/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-