Hi,

czw., 12 paź 2023 o 11:10 Laszlo Ersek <ler...@redhat.com> napisał(a):
>
> The RealTimeClockLib class header in edk2 mistakenly declares a function
> called LibRtcVirtualNotifyEvent(). No component ever calls this function
> crossing module boundaries; all RealTimeClockLib instances in edk2 and
> edk2-platforms are supposed to register (and do register) their
> SetVirtualAddressMap() notification functions.
>
> Rename LibRtcVirtualNotifyEvent() to VirtualNotifyEvent(), and make it
> static, in preparation for removing the LibRtcVirtualNotifyEvent()
> declaration from the lib class header later. Also hoist the function
> definition above the reference.
>
> Build-tested only, with the following platforms:
>
> - Platform/Marvell/Armada70x0Db/Armada70x0Db.dsc
> - Platform/Marvell/Armada80x0Db/Armada80x0Db.dsc
> - Platform/SolidRun/Armada80x0McBin/Armada80x0McBin.dsc
> - Platform/SolidRun/Cn913xCEx7Eval/Cn913xCEx7Eval.dsc
>
> ("Platform/Marvell/Cn913xDb/Cn913xDbA.dsc" fails to build regardless:
> "build" complains that
> "Silicon/Marvell/OcteonTx/DeviceTree/T91/$(PLATFORM_NAME).inf" is missing,
> and as far as I can see, not even the
> "Silicon/Marvell/OcteonTx/DeviceTree" directory exists.)
>
> Cc: Leif Lindholm <quic_llind...@quicinc.com>
> Cc: Marcin Wojtas <m...@semihalf.com>
> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4564
> Signed-off-by: Laszlo Ersek <ler...@redhat.com>
> ---
>  Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c | 52 
> ++++++++++----------
>  1 file changed, 26 insertions(+), 26 deletions(-)
>
> diff --git 
> a/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c 
> b/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c
> index 49c9385d53d6..d538b030b111 100644
> --- a/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c
> +++ b/Silicon/Marvell/Armada7k8k/Library/RealTimeClockLib/RealTimeClockLib.c
> @@ -205,6 +205,31 @@ LibSetWakeupTime (
>    return EFI_SUCCESS;
>  }
>
> +/**
> +  Fixup internal data so that EFI can be call in virtual mode.
> +  Call the passed in Child Notify event and convert any pointers in
> +  lib to virtual mode.
> +
> +  @param[in]    Event   The Event that is being processed
> +  @param[in]    Context Event Context
> +**/
> +STATIC
> +VOID
> +EFIAPI
> +VirtualNotifyEvent (
> +  IN EFI_EVENT        Event,
> +  IN VOID             *Context
> +  )
> +{
> +  //
> +  // Only needed if you are going to support the OS calling RTC functions in 
> virtual mode.
> +  // You will need to call EfiConvertPointer (). To convert any stored 
> physical addresses
> +  // to virtual address. After the OS transistions to calling in virtual 
> mode, all future
> +  // runtime calls will be made in virtual mode.
> +  //
> +  EfiConvertPointer (0x0, (VOID**)&mArmadaRtcBase);
> +}
> +
>  /**
>    This is the declaration of an EFI image entry point. This can be the entry 
> point to an application
>    written to this specification, an EFI boot service driver, or an EFI 
> runtime driver.
> @@ -285,7 +310,7 @@ LibRtcInitialize (
>    Status = gBS->CreateEventEx (
>                    EVT_NOTIFY_SIGNAL,
>                    TPL_NOTIFY,
> -                  LibRtcVirtualNotifyEvent,
> +                  VirtualNotifyEvent,
>                    NULL,
>                    &gEfiEventVirtualAddressChangeGuid,
>                    &mRtcVirtualAddrChangeEvent
> @@ -304,28 +329,3 @@ ErrSetMem:
>
>    return Status;
>  }
> -
> -
> -/**
> -  Fixup internal data so that EFI can be call in virtual mode.
> -  Call the passed in Child Notify event and convert any pointers in
> -  lib to virtual mode.
> -
> -  @param[in]    Event   The Event that is being processed
> -  @param[in]    Context Event Context
> -**/
> -VOID
> -EFIAPI
> -LibRtcVirtualNotifyEvent (
> -  IN EFI_EVENT        Event,
> -  IN VOID             *Context
> -  )
> -{
> -  //
> -  // Only needed if you are going to support the OS calling RTC functions in 
> virtual mode.
> -  // You will need to call EfiConvertPointer (). To convert any stored 
> physical addresses
> -  // to virtual address. After the OS transistions to calling in virtual 
> mode, all future
> -  // runtime calls will be made in virtual mode.
> -  //
> -  EfiConvertPointer (0x0, (VOID**)&mArmadaRtcBase);
> -}
>

Reviewed-by: Marcin Wojtas <m...@semihalf.com>

Thanks,
Marcin


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#109574): https://edk2.groups.io/g/devel/message/109574
Mute This Topic: https://groups.io/mt/101914670/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to