From: "Chao Li" <lichao@loongson.cn>
To: Laszlo Ersek <lersek@redhat.com>, devel@edk2.groups.io
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>,
Jiewen Yao <jiewen.yao@intel.com>,
Jordan Justen <jordan.l.justen@intel.com>,
Gerd Hoffmann <kraxel@redhat.com>,
Xianglai Li <lixianglai@loongson.cn>,
Bibo Mao <maobibo@loongson.cn>
Subject: Re: [edk2-devel] [PATCH v2 23/30] OvmfPkg/LoongArchVirt: Add PeiServiceTablePointerLib
Date: Fri, 10 Nov 2023 14:44:02 +0800 [thread overview]
Message-ID: <1736e6c6-f455-48f3-9b68-04f2fd2c70ec@loongson.cn> (raw)
In-Reply-To: <acc55806-6dc8-b8ef-3902-536361df9dbf@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 6093 bytes --]
Hi Laszlo,
This is a good question, same as the previous email, some ARCH don't
require running code on memory during PEI phase or other reason can not
used the MdePkg version, so this pointer will be saved by some register,
I saw the ArmPkg version also uses a register to save this pointer.
If I move ArmPkg version PeiServiceTablePointer to MdePkg and the method
of getting and saving the pointer use a new library which related
architecture, other word, the API of PeiServiceTablePointer has not
changed, adding a new library that PeiServiceTablePointer depends on,
the real saving and reading method completed in the new library. Do you
think this way is better?
Thanks,
Chao
在 2023/11/9 06:22, Laszlo Ersek 写道:
> On 11/6/23 04:30, Chao Li wrote:
>> Use a register to save PeiServiceTable pointer. This Library provides
>> PeiServiceTable pointer saveing and retrieval serivces.
>>
>> BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=4584
>>
>> Cc: Ard Biesheuvel<ardb+tianocore@kernel.org>
>> Cc: Jiewen Yao<jiewen.yao@intel.com>
>> Cc: Jordan Justen<jordan.l.justen@intel.com>
>> Cc: Gerd Hoffmann<kraxel@redhat.com>
>> Signed-off-by: Chao Li<lichao@loongson.cn>
>> Co-authored-by: Xianglai Li<lixianglai@loongson.cn>
>> Co-authored-by: Bibo Mao<maobibo@loongson.cn>
>> ---
>> .../PeiServicesTablePointer.c | 75 +++++++++++++++++++
>> .../PeiServicesTablePointerLib.inf | 31 ++++++++
>> 2 files changed, 106 insertions(+)
>> create mode 100644 OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c
>> create mode 100644 OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
> Why is this under OvmfPkg?
>
> Laszlo
>
>> diff --git a/OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c b/OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c
>> new file mode 100644
>> index 0000000000..dcbcb50131
>> --- /dev/null
>> +++ b/OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c
>> @@ -0,0 +1,75 @@
>> +/** @file
>> + PEI Services Table Pointer Library.
>> +
>> + Copyright (c) 2023 Loongson Technology Corporation Limited. All rights reserved.<BR>
>> +
>> + SPDX-License-Identifier: BSD-2-Clause-Patent
>> +
>> +**/
>> +
>> +#include <PiPei.h>
>> +#include <Library/PeiServicesTablePointerLib.h>
>> +#include <Library/DebugLib.h>
>> +#include <Library/BaseLib.h>
>> +#include <Register/LoongArch64/Csr.h>
>> +
>> +/**
>> + Caches a pointer PEI Services Table.
>> +
>> + Caches the pointer to the PEI Services Table specified by PeiServicesTablePointer
>> + in a platform specific manner.
>> +
>> + If PeiServicesTablePointer is NULL, then ASSERT ().
>> +
>> + @param PeiServicesTablePointer The address of PeiServices pointer.
>> +**/
>> +VOID
>> +EFIAPI
>> +SetPeiServicesTablePointer (
>> + IN CONST EFI_PEI_SERVICES **PeiServicesTablePointer
>> + )
>> +{
>> + CsrWrite (LOONGARCH_CSR_KS0, (UINTN)PeiServicesTablePointer);
>> +}
>> +
>> +/**
>> + Retrieves the cached value of the PEI Services Table pointer.
>> +
>> + Returns the cached value of the PEI Services Table pointer in a CPU specific manner
>> + as specified in the CPU binding section of the Platform Initialization Pre-EFI
>> + Initialization Core Interface Specification.
>> +
>> + If the cached PEI Services Table pointer is NULL, then ASSERT ().
>> +
>> + @return The pointer to PeiServices.
>> +**/
>> +CONST EFI_PEI_SERVICES **
>> +EFIAPI
>> +GetPeiServicesTablePointer (
>> + VOID
>> + )
>> +{
>> + return (CONST EFI_PEI_SERVICES **)(CsrRead (LOONGARCH_CSR_KS0));
>> +}
>> +
>> +/**
>> +Perform CPU specific actions required to migrate the PEI Services Table
>> +pointer from temporary RAM to permanent RAM.
>> +
>> +For IA32 CPUs, the PEI Services Table pointer is stored in the 4 bytes
>> +immediately preceding the Interrupt Descriptor Table (IDT) in memory.
>> +For X64 CPUs, the PEI Services Table pointer is stored in the 8 bytes
>> +immediately preceding the Interrupt Descriptor Table (IDT) in memory.
>> +For Itanium and ARM CPUs, a the PEI Services Table Pointer is stored in
>> +a dedicated CPU register. This means that there is no memory storage
>> +associated with storing the PEI Services Table pointer, so no additional
>> +migration actions are required for Itanium or ARM CPUs.
>> +**/
>> +VOID
>> +EFIAPI
>> +MigratePeiServicesTablePointer (
>> + VOID
>> + )
>> +{
>> + return;
>> +}
>> diff --git a/OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf b/OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
>> new file mode 100644
>> index 0000000000..274cb2f781
>> --- /dev/null
>> +++ b/OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
>> @@ -0,0 +1,31 @@
>> +## @file
>> +# PEI Services Table Pointer Library.
>> +#
>> +# Copyright (c) 2023 Loongson Technology Corporation Limited. All rights reserved.<BR>
>> +#
>> +# SPDX-License-Identifier: BSD-2-Clause-Patent
>> +#
>> +##
>> +[Defines]
>> + INF_VERSION = 0x00010005
>> + BASE_NAME = PeiServicesTablePointerLib
>> + FILE_GUID = 098B0DB0-AD01-8886-D409-90CBC7E89154
>> + MODULE_TYPE = PEIM
>> + VERSION_STRING = 1.0
>> + LIBRARY_CLASS = PeiServicesTablePointerLib|PEIM PEI_CORE SEC
>> +
>> +#
>> +# VALID_ARCHITECTURES = LOONGARCH64
>> +#
>> +
>> +[Sources]
>> + PeiServicesTablePointer.c
>> +
>> +[Packages]
>> + MdePkg/MdePkg.dec
>> +
>> +[LibraryClasses]
>> + BaseLib
>> + DebugLib
>> +
>> +[Pcd]
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111020): https://edk2.groups.io/g/devel/message/111020
Mute This Topic: https://groups.io/mt/102413901/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
[-- Attachment #2: Type: text/html, Size: 7810 bytes --]
next prev parent reply other threads:[~2023-11-10 6:44 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-06 3:25 [edk2-devel] [PATCH v2 00/30] Enable LoongArch virtual machine in edk2 Chao Li
2023-11-06 3:26 ` [edk2-devel] [PATCH v2 01/30] MdePkg: Add the header file named Csr.h for LoongArch64 Chao Li
2023-11-07 3:30 ` Michael D Kinney
2023-11-06 3:26 ` [edk2-devel] [PATCH v2 02/30] MdePkg: Add LoongArch64 FPU function set into BaseCpuLib Chao Li
2023-11-07 3:31 ` Michael D Kinney
2023-11-06 3:26 ` [edk2-devel] [PATCH v2 03/30] MdePkg: Add LoongArch64 exception function set into BaseLib Chao Li
2023-11-07 3:31 ` Michael D Kinney
2023-11-06 3:26 ` [edk2-devel] [PATCH v2 04/30] MdePkg: Add LoongArch64 local interrupt " Chao Li
2023-11-07 3:31 ` Michael D Kinney
2023-11-06 3:27 ` [edk2-devel] [PATCH v2 05/30] MdePkg: Add LoongArch Cpucfg function Chao Li
2023-11-07 3:31 ` Michael D Kinney
2023-11-06 3:27 ` [edk2-devel] [PATCH v2 06/30] MdePkg: Add read stable counter operation for LoongArch Chao Li
2023-11-07 3:31 ` Michael D Kinney
2023-11-06 3:27 ` [edk2-devel] [PATCH v2 07/30] MdePkg: Add CSR " Chao Li
2023-11-07 3:31 ` Michael D Kinney
2023-11-06 3:27 ` [edk2-devel] [PATCH v2 08/30] MdePkg: Add IOCSR " Chao Li
2023-11-07 3:32 ` Michael D Kinney
2023-11-06 3:28 ` [edk2-devel] [PATCH v2 09/30] UefiCpuPkg: Add LoongArch64 CPU Timer library Chao Li
2023-11-06 3:28 ` [edk2-devel] [PATCH v2 10/30] UefiCpuPkg: Add CPU exception library for LoongArch Chao Li
2023-11-06 3:28 ` [edk2-devel] [PATCH v2 11/30] UefiCpuPkg: Add CpuMmuLib.h to UefiCpuPkg Chao Li
2023-11-09 1:17 ` Andrei Warkentin
2023-11-14 2:00 ` Chao Li
2023-11-06 3:28 ` [edk2-devel] [PATCH v2 12/30] UefiCpuPkg: Add LoongArch64CpuMmuLib " Chao Li
2023-11-06 3:28 ` [edk2-devel] [PATCH v2 13/30] UefiCpuPkg: Add multiprocessor library for LoongArch64 Chao Li
2023-11-06 3:28 ` [edk2-devel] [PATCH v2 14/30] UefiCpuPkg: Add CpuDxe driver " Chao Li
2023-11-06 3:29 ` [edk2-devel] [PATCH v2 15/30] EmbeddedPkg: Add PcdPrePiCpuIoSize width for LOONGARCH64 Chao Li
2023-11-15 18:55 ` Leif Lindholm
2023-11-16 8:15 ` Pedro Falcato
2023-11-16 9:17 ` Chao Li
2023-11-16 11:21 ` Leif Lindholm
2023-11-06 3:29 ` [edk2-devel] [PATCH v2 16/30] ArmVirtPkg: Move PCD of FDT base address and FDT padding to OvmfPkg Chao Li
2023-11-07 9:37 ` Gerd Hoffmann
2023-11-13 11:46 ` Sami Mujawar
2023-11-14 1:41 ` Chao Li
2023-11-06 3:29 ` [edk2-devel] [PATCH v2 17/30] OvmfPkg/LoongArchVirt: Add PciCpuIo2Dxe module Chao Li
2023-11-07 9:42 ` Gerd Hoffmann
2023-11-07 10:03 ` Chao Li
2023-11-08 23:11 ` Sunil V L
2023-11-10 3:31 ` Chao Li
2023-11-06 3:29 ` [edk2-devel] [PATCH v2 18/30] OvmfPkg/LoongArchVirt: Add stable timer driver Chao Li
2023-11-06 3:29 ` [edk2-devel] [PATCH v2 19/30] OvmfPkg/LoongArchVirt: Add a NULL library named CollectApResouceLibNull Chao Li
2023-11-06 3:29 ` [edk2-devel] [PATCH v2 20/30] OvmfPkg/LoongArchVirt: Add serial port library Chao Li
2023-11-07 9:47 ` Gerd Hoffmann
2023-11-07 10:12 ` Chao Li
2023-11-08 22:21 ` Laszlo Ersek
2023-11-10 4:51 ` Chao Li
2023-11-13 10:45 ` Laszlo Ersek
2023-11-06 3:29 ` [edk2-devel] [PATCH v2 21/30] OvmfPkg/LoongArchVirt: Add real time clock library Chao Li
2023-11-06 3:30 ` [edk2-devel] [PATCH v2 22/30] OvmfPkg/LoongArchVirt: Add NorFlashQemuLib Chao Li
2023-11-06 3:30 ` [edk2-devel] [PATCH v2 23/30] OvmfPkg/LoongArchVirt: Add PeiServiceTablePointerLib Chao Li
2023-11-08 22:22 ` Laszlo Ersek
2023-11-10 6:44 ` Chao Li [this message]
2023-11-13 11:02 ` Laszlo Ersek
2023-11-14 2:08 ` Chao Li
2023-11-06 3:30 ` [edk2-devel] [PATCH v2 24/30] OvmfPkg/LoongArchVirt: Add platform boot manager library Chao Li
2023-11-08 22:24 ` Laszlo Ersek
2023-11-10 7:09 ` Chao Li
2023-11-10 9:46 ` Gerd Hoffmann
2023-11-13 11:08 ` Laszlo Ersek
2023-11-15 3:21 ` Chao Li
2023-11-15 12:52 ` Laszlo Ersek
2023-11-16 7:09 ` Chao Li
2023-11-06 3:30 ` [edk2-devel] [PATCH v2 25/30] OvmfPkg/LoongArchVirt: Add FdtQemuFwCfgLib Chao Li
2023-11-06 3:30 ` [edk2-devel] [PATCH v2 26/30] OvmfPkg/LoongArchVirt: Add reset system library Chao Li
2023-11-06 3:30 ` [edk2-devel] [PATCH v2 27/30] OvmfPkg/LoongArchVirt: Support SEC phase Chao Li
2023-11-06 3:30 ` [edk2-devel] [PATCH v2 28/30] OvmfPkg/LoongArchVirt: Support PEI phase Chao Li
2023-11-06 3:31 ` [edk2-devel] [PATCH v2 29/30] OvmfPkg/LoongArchVirt: Add build file Chao Li
2023-11-06 3:31 ` [edk2-devel] [PATCH v2 30/30] OvmfPkg/LoongArchVirt: Add self introduction file Chao Li
[not found] ` <1794EAF40590BB23.26468@groups.io>
2023-11-07 6:41 ` [edk2-devel] [PATCH v2 09/30] UefiCpuPkg: Add LoongArch64 CPU Timer library Chao Li
[not found] ` <1794EB01154A1CFD.12603@groups.io>
2023-11-07 8:40 ` [edk2-devel] [PATCH v2 15/30] EmbeddedPkg: Add PcdPrePiCpuIoSize width for LOONGARCH64 Chao Li
[not found] ` <1794EB0445E96DCB.26468@groups.io>
2023-11-07 8:41 ` [edk2-devel] [PATCH v2 16/30] ArmVirtPkg: Move PCD of FDT base address and FDT padding to OvmfPkg Chao Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1736e6c6-f455-48f3-9b68-04f2fd2c70ec@loongson.cn \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox