public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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 --]

  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