From: "Chao Li" <lichao@loongson.cn>
To: gaoliming <gaoliming@byosoft.com.cn>,
'Laszlo Ersek' <lersek@redhat.com>,
devel@edk2.groups.io
Cc: 'Michael D Kinney' <michael.d.kinney@intel.com>,
'Zhiguang Liu' <zhiguang.liu@intel.com>,
'Leif Lindholm' <quic_llindhol@quicinc.com>,
'Ard Biesheuvel' <ardb+tianocore@kernel.org>,
'Sami Mujawar' <sami.mujawar@arm.com>,
'Sunil V L' <sunilvl@ventanamicro.com>
Subject: Re: 回复: [edk2-devel] [PATCH v3 09/39] MdePkg: Add a new library named PeiServicesTablePointerLibReg
Date: Fri, 1 Dec 2023 16:20:31 +0800 [thread overview]
Message-ID: <66281be7-a004-496f-840b-91de16fb5b00@loongson.cn> (raw)
In-Reply-To: <060301da23ed$e782eef0$b688ccd0$@byosoft.com.cn>
[-- Attachment #1: Type: text/plain, Size: 11459 bytes --]
Hi Liming,
Ok, I see. In V4 I will add the PeiServicesTablePointerLib only for
LoongArch, and it probably be named PeiServicesTablePointerLibKs0.
Thanks,
Chao
On 2023/12/1 08:32, gaoliming wrote:
>
> Chao:
>
> I agree with Laszlo. I want to highlight that current design has meet
> with your requirement. So, I don’t think we need to add new APIs in
> PeiServicesTablePointerLib header file. Loong Arch can implement its
> PeiServicesTablePointerLib library instance base on its specific
> register.
>
> Thanks
>
> Liming
>
> *发件人:*Chao Li <lichao@loongson.cn>
> *发送时间:*2023年11月27日11:28
> *收件人:*Laszlo Ersek <lersek@redhat.com>; devel@edk2.groups.io
> *抄送:*Michael D Kinney <michael.d.kinney@intel.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Zhiguang Liu <zhiguang.liu@intel.com>;
> Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel
> <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>;
> Sunil V L <sunilvl@ventanamicro.com>
> *主题:*Re: [edk2-devel] [PATCH v3 09/39] MdePkg: Add a new library named
> PeiServicesTablePointerLibReg
>
> Hi Mike and Liming,
>
> You opinion is very important, it will decide the direction. I will
> send the V4 this week, so can you please review the new patch of
> MdePkg for this series?
>
> Thanks,
> Chao
>
> On 2023/11/24 19:35, Laszlo Ersek wrote:
>
> On 11/22/23 02:47, Chao Li wrote:
>
> Hi Laszlo,
>
> Thanks,
>
> Chao
>
> On 2023/11/21 22:37, Laszlo Ersek wrote:
>
> On 11/17/23 10:59, Chao Li wrote:
>
> Since some ARCH or platform not require execute code
> on memory during
>
> PEI phase, some values may transferred via CPU registers.
>
> Adding PeiServcieTablePointerLibReg to allow set and
> get the PEI service
>
> table pointer depend by a CPU register, this library
> can accommodate lot
>
> of platforms who not require execte code on memory
> during PEI phase.
>
> Adding PeiServiceTablePointerLibReg to allows setting
> and getting the
>
> PEI service table pointer via CPU registers, and the
> library can
>
> accommodate many platforms that do not need to execute
> code on memory
>
> during the PEI phase.
>
> The idea of this library is derived from
>
> ArmPkg/Library/PeiServicesTablePointerLib/
>
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4584
>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> <mailto:michael.d.kinney@intel.com>
>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> <mailto:gaoliming@byosoft.com.cn>
>
> Cc: Zhiguang Liu <zhiguang.liu@intel.com>
> <mailto:zhiguang.liu@intel.com>
>
> Cc: Leif Lindholm <quic_llindhol@quicinc.com>
> <mailto:quic_llindhol@quicinc.com>
>
> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
> <mailto:ardb+tianocore@kernel.org>
>
> Cc: Sami Mujawar <sami.mujawar@arm.com>
> <mailto:sami.mujawar@arm.com>
>
> Cc: Laszlo Ersek <lersek@redhat.com>
> <mailto:lersek@redhat.com>
>
> Cc: Sunil V L <sunilvl@ventanamicro.com>
> <mailto:sunilvl@ventanamicro.com>
>
> Signed-off-by: Chao Li <lichao@loongson.cn>
> <mailto:lichao@loongson.cn>
>
> ---
>
> .../Library/PeiServicesTablePointerLib.h | 37
> +++++++-
>
> .../PeiServicesTablePointer.c | 86
> +++++++++++++++++++
>
> .../PeiServicesTablePointerLib.uni | 20 +++++
>
> .../PeiServicesTablePointerLibReg.inf | 40
> +++++++++
>
> MdePkg/MdePkg.dsc | 1 +
>
> 5 files changed, 180 insertions(+), 4 deletions(-)
>
> create mode 100644
> MdePkg/Library/PeiServicesTablePointerLibReg/PeiServicesTablePointer.c
>
> create mode 100644
> MdePkg/Library/PeiServicesTablePointerLibReg/PeiServicesTablePointerLib.uni
>
> create mode 100644
> MdePkg/Library/PeiServicesTablePointerLibReg/PeiServicesTablePointerLibReg.inf
>
> In my opinion, the PeiServicesTablePointerLib class header
> should not be
>
> extended with new interfaces. I understand that the
> generality is
>
> attractive, but it is not put to use; only the loongarch
> architecture
>
> applies the new interfaces (in the subsequent patch), and
> for example
>
> the ARM code (ArmPkg/Library/PeiServicesTablePointerLib)
> is not reworked
>
> in terms of these new interfaces.
>
> This libarary have ability of accommodate more ARCH why not? I
> checked
>
> the PI SPEC, all ARCH except IA32 and X64 using the register
> mechanism,
>
> if this library can be approved, all of them can moved into this
>
> libraryso that code con be reused more, I think this library
> is fine.
>
> The library may be fine from a design point of view, but without
>
> actually putting the extra generality to use, it's a waste. It's a
>
> maintenance burden. There's a name for this anti-pattern: it is called
>
> "speculative generality". "It might be useful down the road."
>
> The new generality is only useful if it carries its own weight;
> namely,
>
> if other platform code (aarch64, x64) is converted to it
> immediately, in
>
> the same series. (I'm not asking for this series to be longer. You
> could
>
> even split it up into multiple "waves" of series.) Just saying that
>
> "could prove useful later" is a prime way to generate technical debt.
>
> What's more, the new library interfaces, even though they
> are exposed in
>
> the lib class header, are not implemented for other
> architectures, so
>
> they aren't even callable on those arches.
>
> The patch 10 in this series has added LoongArch instance of this
>
> library, please check.
>
> Yes, I'm aware. That's not the point.
>
> When you extend a library *class* with a new API, that means all
>
> *clients* of the library class can stat calling that API. Which in
> turn
>
> means that *all* existent instances of the library class must
> implement
>
> the API as well.
>
> Your series extends the lib class with a new API, but (IIUC) only
>
> implements the new API in one (new) lib instance, and not in the other
>
> (existent) instances. This has the potential to cause linkage errors,
>
> dependent on the actual library instance that a platform DSC chooses.
>
> I'm commenting on this patch and the subsequent patch in
> the series
>
> together, as seen squashed together. NB I'm not an MdePkg
> maintainer, so
>
> this is just my opinion.
>
> So, Mike and Liming, what do your think?
>
> (1) As noted above, the library class should not be modified.
>
> (2) Modifying the *comments* in
>
> "MdePkg/Include/Library/PeiServicesTablePointerLib.h" is
> welcome, I
>
> think, but then we might want to add a (separate!) patch
> for removing
>
> the Itanium language, as edk2 no longer supports Itanium.
>
> (3) The PeiServicesTablePointerLibReg instance should be
> called
>
> PeiServicesTablePointerLibCsrKs0 or just
> PeiServicesTablePointerLibKs0.
>
> This library will be a public libray which using the reigster
> mechanism,
>
> so the name like PeiServiceTablePointerLibCsrKs0 would not
> appropriate.
>
> Of course that name is wrong for a generic library instance, but my
>
> whole point is that this library instance should be
> loongarch-specific.
>
> (Unless you port the existent (x64 IDT / aarch64 register) libraries
>
> over to it.)
>
> This follows the example of the lib instance name
>
> "PeiServicesTablePointerLibIdt". The whole library
> instance should be
>
> loongaarch-specific IMO; there isn't much code that's
> being duplicated,
>
> so the extra interfaces (internal or external) do not help
> with code
>
> unification.
>
> (4) "PeiServicesTablePointerLib.uni" should be named
> similarly (suffix
>
> missing).
>
> (5) BASE_NAME in the library instance INF file should be
> defined
>
> similarly (suffix missing).
>
> (6) The contents of the UNI file should be
> loongarch-specific, i.e. be
>
> explicit about CSR KS0, in both comments and string constants.
>
> (7) The comments in the library instance INF file should
> be similarly
>
> loongarch-specific.
>
> (8) I suggest dropping VALID_ARCHITECTURES altogether. If
> we want to
>
> keep it, it should exclusively say LOONGARCH64.
>
> (9) The new library instance should be listed in
>
> [Components.LOONGARCH64] in MdePkg.dec.
>
> This section does not exist yet; I suggest introducing it
> under
>
> [Components.RISCV64].
>
> No, it is RISC-V area, not LOONGARCH64.
>
> You misunderstood.
>
> I didn't suggest to list the *library instance* under
> [Components.RISCV64].
>
> I suggested to introduce the [Components.LOONGARCH64] *section* under
>
> [Components.RISCV64].
>
> And I do not recommend going
>
> this way. I believe this library should be a public library
> for register
>
> mechanism.
>
> That's entirely fine, as long as you do the work of porting the
> existent
>
> ARM and X64 IDT code over to it. In my opinion anyway; MdePkg
>
> maintainers are the authoritative sources here.
>
> Laszlo
>
> (10) There need not / should not be two separate C source
> files; just
>
> access the KS0 CSR in SetPeiServicesTablePointer() and
>
> GetPeiServicesTablePointer() directly.
>
> (11) The new library instance should probably not
> introduce new
>
> references to Itanium.
>
> Thanks,
>
> Laszlo
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111975): https://edk2.groups.io/g/devel/message/111975
Mute This Topic: https://groups.io/mt/102906469/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: 27511 bytes --]
next prev parent reply other threads:[~2023-12-01 8:20 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20231117095742.3605778-1-lichao@loongs>
2023-11-17 9:58 ` [edk2-devel] [PATCH v3 01/39] MdePkg: Add the header file named Csr.h for LoongArch64 Chao Li
2023-11-17 9:58 ` [edk2-devel] [PATCH v3 02/39] MdePkg: Add LoongArch64 FPU function set into BaseCpuLib Chao Li
2023-11-17 9:59 ` [edk2-devel] [PATCH v3 03/39] MdePkg: Add LoongArch64 exception function set into BaseLib Chao Li
2023-11-17 9:59 ` [edk2-devel] [PATCH v3 04/39] MdePkg: Add LoongArch64 local interrupt " Chao Li
2023-11-17 9:59 ` [edk2-devel] [PATCH v3 05/39] MdePkg: Add LoongArch Cpucfg function Chao Li
2023-11-17 9:59 ` [edk2-devel] [PATCH v3 06/39] MdePkg: Add read stable counter operation for LoongArch Chao Li
2023-11-17 9:59 ` [edk2-devel] [PATCH v3 07/39] MdePkg: Add CSR " Chao Li
2023-11-17 9:59 ` [edk2-devel] [PATCH v3 08/39] MdePkg: Add IOCSR " Chao Li
2023-11-17 9:59 ` [edk2-devel] [PATCH v3 09/39] MdePkg: Add a new library named PeiServicesTablePointerLibReg Chao Li
2023-11-17 11:35 ` Leif Lindholm
2023-11-20 3:07 ` Chao Li
2023-11-21 14:37 ` Laszlo Ersek
2023-11-22 1:47 ` Chao Li
2023-11-24 11:35 ` Laszlo Ersek
2023-11-27 3:27 ` Chao Li
2023-12-01 0:32 ` 回复: " gaoliming via groups.io
2023-12-01 8:20 ` Chao Li [this message]
[not found] ` <179B5D231F190982.32091@groups.io>
2023-11-29 1:35 ` Chao Li
2023-11-17 9:59 ` [edk2-devel] [PATCH v3 10/39] MdePkg: Add method of LoongArch64 to PeiServicesTablePointerLibReg Chao Li
2023-11-17 10:00 ` [edk2-devel] [PATCH v3 11/39] UefiCpuPkg: Add LoongArch64 CPU Timer library Chao Li
2023-11-22 16:12 ` Laszlo Ersek
2023-11-22 16:13 ` Laszlo Ersek
2023-11-23 11:43 ` Chao Li
2023-12-11 17:16 ` Laszlo Ersek
2023-12-12 3:45 ` Chao Li
2023-11-17 10:00 ` [edk2-devel] [PATCH v3 12/39] UefiCpuPkg: Add CPU exception library for LoongArch Chao Li
2023-11-17 10:00 ` [edk2-devel] [PATCH v3 13/39] UefiCpuPkg: Add CpuMmuLib.h to UefiCpuPkg Chao Li
2023-11-17 20:18 ` Andrei Warkentin
2023-11-20 3:26 ` Chao Li
2023-11-30 0:59 ` Ni, Ray
2023-11-30 2:25 ` Chao Li
[not found] ` <179C457B5B852375.31732@groups.io>
2023-12-04 7:31 ` Chao Li
2023-12-05 8:27 ` Ni, Ray
2023-12-05 12:27 ` Chao Li
[not found] ` <179DEF40376B662A.18076@groups.io>
2023-12-08 2:10 ` Chao Li
2023-12-11 8:13 ` Ni, Ray
2023-12-11 8:19 ` Chao Li
2023-11-17 10:00 ` [edk2-devel] [PATCH v3 14/39] UefiCpuPkg: Add LoongArch64CpuMmuLib " Chao Li
2023-11-17 10:00 ` [edk2-devel] [PATCH v3 15/39] UefiCpuPkg: Add multiprocessor library for LoongArch64 Chao Li
2023-11-17 10:00 ` [edk2-devel] [PATCH v3 16/39] UefiCpuPkg: Add CpuDxe driver " Chao Li
2023-11-17 10:00 ` [edk2-devel] [PATCH v3 17/39] EmbeddedPkg: Add PcdPrePiCpuIoSize width for LOONGARCH64 Chao Li
2023-11-17 10:01 ` [edk2-devel] [PATCH v3 18/39] ArmVirtPkg: Move PCD of FDT base address and FDT padding to OvmfPkg Chao Li
2023-11-17 10:01 ` [edk2-devel] [PATCH v3 19/39] MdePkg: Add a PCD feature flag named PcdPciIoTranslationIsEnabled Chao Li
2023-11-17 10:01 ` [edk2-devel] [PATCH v3 20/39] UefiCpuPkg: Add MMIO method in CpuIo2Dxe Chao Li
2023-11-17 10:01 ` [edk2-devel] [PATCH v3 21/39] ArmVirtPkg: Enable UefiCpuPkg version CpuIo2Dxe Chao Li
2023-11-17 10:01 ` [edk2-devel] [PATCH v3 22/39] ArmPkg: Remove ArmPciCpuIo2Dxe from ArmPkg Chao Li
2023-11-17 13:13 ` Leif Lindholm
2023-11-20 3:24 ` Chao Li
2023-11-20 18:47 ` Leif Lindholm
2023-11-21 1:10 ` Chao Li
2023-11-17 10:01 ` [edk2-devel] [PATCH v3 23/39] OvmfPkg/RiscVVirt: Enable UefiCpuPkg version CpuIo2Dxe Chao Li
2023-11-17 20:15 ` Andrei Warkentin
2023-11-20 3:04 ` Chao Li
2023-11-17 10:01 ` [edk2-devel] [PATCH v3 24/39] OvmfPkg/RiscVVirt: Remove PciCpuIo2Dxe from RiscVVirt Chao Li
2023-11-17 10:02 ` [edk2-devel] [PATCH v3 25/39] ArmVirtPkg: Move the FdtSerialPortAddressLib to OvmfPkg Chao Li
2023-11-17 10:02 ` [edk2-devel] [PATCH v3 26/39] ArmVirtPkg: Move the PcdTerminalTypeGuidBuffer into OvmfPkg Chao Li
2023-11-17 10:02 ` [edk2-devel] [PATCH v3 27/39] ArmVirtPkg: Move PlatformBootManagerLib to OvmfPkg Chao Li
2023-11-17 10:02 ` [edk2-devel] [PATCH v3 28/39] OvmfPkg/LoongArchVirt: Add stable timer driver Chao Li
2023-11-17 10:02 ` [edk2-devel] [PATCH v3 29/39] OvmfPkg/LoongArchVirt: Add a NULL library named CollectApResouceLibNull Chao Li
2023-11-17 10:02 ` [edk2-devel] [PATCH v3 30/39] OvmfPkg/LoongArchVirt: Add serial port hook library Chao Li
2023-11-17 10:03 ` [edk2-devel] [PATCH v3 31/39] OvmfPkg/LoongArchVirt: Add the early serial port output library Chao Li
2023-11-17 10:03 ` [edk2-devel] [PATCH v3 32/39] OvmfPkg/LoongArchVirt: Add real time clock library Chao Li
2023-11-17 10:03 ` [edk2-devel] [PATCH v3 33/39] OvmfPkg/LoongArchVirt: Add NorFlashQemuLib Chao Li
2023-11-17 10:03 ` [edk2-devel] [PATCH v3 34/39] OvmfPkg/LoongArchVirt: Add FdtQemuFwCfgLib Chao Li
2023-11-17 10:03 ` [edk2-devel] [PATCH v3 35/39] OvmfPkg/LoongArchVirt: Add reset system library Chao Li
2023-11-17 10:03 ` [edk2-devel] [PATCH v3 36/39] OvmfPkg/LoongArchVirt: Support SEC phase Chao Li
2023-11-17 10:03 ` [edk2-devel] [PATCH v3 37/39] OvmfPkg/LoongArchVirt: Support PEI phase Chao Li
2023-11-17 10:04 ` [edk2-devel] [PATCH v3 38/39] OvmfPkg/LoongArchVirt: Add build file Chao Li
2023-11-17 10:04 ` [edk2-devel] [PATCH v3 39/39] OvmfPkg/LoongArchVirt: Add self introduction file Chao Li
[not found] ` <179860C0A131BC70.3002@groups.io>
2023-11-20 9:55 ` [edk2-devel] [PATCH v3 14/39] UefiCpuPkg: Add LoongArch64CpuMmuLib to UefiCpuPkg Chao Li
[not found] ` <179860DB0A3E8D83.6542@groups.io>
2023-11-21 6:39 ` [edk2-devel] [PATCH v3 27/39] ArmVirtPkg: Move PlatformBootManagerLib 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=66281be7-a004-496f-840b-91de16fb5b00@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