From: "Ard Biesheuvel" <ardb@kernel.org>
To: devel@edk2.groups.io, ray.ni@intel.com
Cc: "lichao@loongson.cn" <lichao@loongson.cn>,
"Kumar, Rahul R" <rahul.r.kumar@intel.com>,
Gerd Hoffmann <kraxel@redhat.com>,
Leif Lindholm <quic_llindhol@quicinc.com>,
Ard Biesheuvel <ardb+tianocore@kernel.org>,
Sami Mujawar <sami.mujawar@arm.com>
Subject: Re: [edk2-devel] [PATCH v4 19/37] UefiCpuPkg: Add MMIO method in CpuIo2Dxe
Date: Wed, 20 Dec 2023 08:41:06 +0100 [thread overview]
Message-ID: <CAMj1kXFj-Jb8c0h1fygv-yOCPpH8h5VanjhVRMNHzj7qEoPasQ@mail.gmail.com> (raw)
In-Reply-To: <MN6PR11MB8244A7C179775F522A0AFCA08C96A@MN6PR11MB8244.namprd11.prod.outlook.com>
On Wed, 20 Dec 2023 at 02:57, Ni, Ray <ray.ni@intel.com> wrote:
>
> It’s new to me that PCI IO (not MMIO) space is accessed through MMIO.
>
> PCIE spec defines different TLP types for Memory and I/O request in Transaction Layer chapter.
>
> If CpuIoDxe driver issues Memory request to a IO space inside a PCIE device, how does PCIE device claim the TPL packet and response?
>
Hello Ray,
On the opposite side of the PCI host bridge, these are all port I/O
transactions, and the endpoint is not aware of the distinction between
native port I/O and translated port I/O.
ARM CPUs do not implement port I/O at all, and so every host bridge
that implements port I/O support on the PCI side does so by exposing a
special MMIO resource window in the CPU physical address space that
gets translated to port I/O accesses at the opposite side.
This means that an implementation of the CpuIo2 protocol can only be
provided in a meaningful way if there are port I/O capable PCI host
bridges in the system, and some bookkeeping is needed to keep track of
the mapping between the special MMIO ranges on the CPU side and the
port I/O ranges on the PCI side. Note that this is not so different
from MMIO translation, where the mapping between MMIO is not 1:1
between CPU and PCI.
That said, I am not sure I follow why PcdPciIoTranslationIsEnabled is
needed. MMIO translation and IO translation are both properties of the
PCI host bridge implementation, so having a system wide PCD for this
seems unnecessary to me. But perhaps I missed something?
>
> From: Chao Li <lichao@loongson.cn>
> Sent: Tuesday, December 19, 2023 9:04 PM
> To: devel@edk2.groups.io; Ni, Ray <ray.ni@intel.com>
> Cc: Kumar, Rahul R <rahul.r.kumar@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Sami Mujawar <sami.mujawar@arm.com>
> Subject: Re: [edk2-devel] [PATCH v4 19/37] UefiCpuPkg: Add MMIO method in CpuIo2Dxe
>
>
>
> Hi Ray,
>
> Can you please review this patch? Thank you!
>
>
>
> Thanks,
> Chao
>
> On 2023/12/12 21:12, Chao Li wrote:
>
> CpuIo2Dxe only supports IO to access PCI IO. Some ARCH requires
>
> MMIO to access PCI IO, add the MMIO access method in CpuIo2Dxe.
>
>
>
> The MMIO methods depend on PcdPciIoTranslationIsEnabled and
>
> PcdPciIoTransLation. The code is referenced from ArmPkg.
>
>
>
> Build-tested only (with "OvmfPkgX64.dsc").
>
>
>
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4584
>
>
>
> Cc: Ray Ni <ray.ni@intel.com>
>
> Cc: Rahul Kumar <rahul1.kumar@intel.com>
>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
>
> Cc: Leif Lindholm <quic_llindhol@quicinc.com>
>
> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
>
> Cc: Sami Mujawar <sami.mujawar@arm.com>
>
> Signed-off-by: Chao Li <lichao@loongson.cn>
>
> ---
>
> UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.c | 149 +++++++++++++++++++----------
>
> UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.h | 2 +
>
> UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf | 8 +-
>
> UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.uni | 2 +
>
> 4 files changed, 111 insertions(+), 50 deletions(-)
>
>
>
> diff --git a/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.c b/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.c
>
> index 87f4f805ca..cd31977af2 100644
>
> --- a/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.c
>
> +++ b/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.c
>
> @@ -3,6 +3,8 @@
>
>
>
> Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
>
> Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
>
> +Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
>
> +Copyright (c) 2023 Loongson Technology Corporation Limited. All rights reserved.<BR>
>
>
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
>
>
> @@ -149,7 +151,7 @@ CpuIoCheckParameter (
>
> //
>
> // Since MAX_ADDRESS can be the maximum integer value supported by the CPU and Count
>
> // can also be the maximum integer value supported by the CPU, this range
>
> - // check must be adjusted to avoid all oveflow conditions.
>
> + // check must be adjusted to avoid all overflow conditions.
>
> //
>
> // The following form of the range check is equivalent but assumes that
>
> // MAX_ADDRESS and MAX_IO_PORT_ADDRESS are of the form (2^n - 1).
>
> @@ -398,6 +400,18 @@ CpuIoServiceRead (
>
> EFI_CPU_IO_PROTOCOL_WIDTH OperationWidth;
>
> UINT8 *Uint8Buffer;
>
>
>
> + UINT8 EFIAPI (*CpuIoRead8) (
>
> + UINTN
>
> + );
>
> +
>
> + UINT16 EFIAPI (*CpuIoRead16) (
>
> + UINTN
>
> + );
>
> +
>
> + UINT32 EFIAPI (*CpuIoRead32) (
>
> + UINTN
>
> + );
>
> +
>
> Status = CpuIoCheckParameter (FALSE, Width, Address, Count, Buffer);
>
> if (EFI_ERROR (Status)) {
>
> return Status;
>
> @@ -410,37 +424,48 @@ CpuIoServiceRead (
>
> OutStride = mOutStride[Width];
>
> OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH)(Width & 0x03);
>
>
>
> - //
>
> - // Fifo operations supported for (mInStride[Width] == 0)
>
> - //
>
> - if (InStride == 0) {
>
> - switch (OperationWidth) {
>
> - case EfiCpuIoWidthUint8:
>
> - IoReadFifo8 ((UINTN)Address, Count, Buffer);
>
> - return EFI_SUCCESS;
>
> - case EfiCpuIoWidthUint16:
>
> - IoReadFifo16 ((UINTN)Address, Count, Buffer);
>
> - return EFI_SUCCESS;
>
> - case EfiCpuIoWidthUint32:
>
> - IoReadFifo32 ((UINTN)Address, Count, Buffer);
>
> - return EFI_SUCCESS;
>
> - default:
>
> - //
>
> - // The CpuIoCheckParameter call above will ensure that this
>
> - // path is not taken.
>
> - //
>
> - ASSERT (FALSE);
>
> - break;
>
> + if (FeaturePcdGet (PcdPciIoTranslationIsEnabled) == FALSE) {
>
> + //
>
> + // Fifo operations supported for (mInStride[Width] == 0)
>
> + //
>
> + if (InStride == 0) {
>
> + switch (OperationWidth) {
>
> + case EfiCpuIoWidthUint8:
>
> + IoReadFifo8 ((UINTN)Address, Count, Buffer);
>
> + return EFI_SUCCESS;
>
> + case EfiCpuIoWidthUint16:
>
> + IoReadFifo16 ((UINTN)Address, Count, Buffer);
>
> + return EFI_SUCCESS;
>
> + case EfiCpuIoWidthUint32:
>
> + IoReadFifo32 ((UINTN)Address, Count, Buffer);
>
> + return EFI_SUCCESS;
>
> + default:
>
> + //
>
> + // The CpuIoCheckParameter call above will ensure that this
>
> + // path is not taken.
>
> + //
>
> + ASSERT (FALSE);
>
> + break;
>
> + }
>
> }
>
> +
>
> + CpuIoRead8 = IoRead8;
>
> + CpuIoRead16 = IoRead16;
>
> + CpuIoRead32 = IoRead32;
>
> + } else {
>
> + Address += PcdGet64 (PcdPciIoTranslation);
>
> + CpuIoRead8 = MmioRead8;
>
> + CpuIoRead16 = MmioRead16;
>
> + CpuIoRead32 = MmioRead32;
>
> }
>
>
>
> for (Uint8Buffer = Buffer; Count > 0; Address += InStride, Uint8Buffer += OutStride, Count--) {
>
> if (OperationWidth == EfiCpuIoWidthUint8) {
>
> - *Uint8Buffer = IoRead8 ((UINTN)Address);
>
> + *Uint8Buffer = CpuIoRead8 ((UINTN)Address);
>
> } else if (OperationWidth == EfiCpuIoWidthUint16) {
>
> - *((UINT16 *)Uint8Buffer) = IoRead16 ((UINTN)Address);
>
> + *((UINT16 *)Uint8Buffer) = CpuIoRead16 ((UINTN)Address);
>
> } else if (OperationWidth == EfiCpuIoWidthUint32) {
>
> - *((UINT32 *)Uint8Buffer) = IoRead32 ((UINTN)Address);
>
> + *((UINT32 *)Uint8Buffer) = CpuIoRead32 ((UINTN)Address);
>
> }
>
> }
>
>
>
> @@ -502,6 +527,21 @@ CpuIoServiceWrite (
>
> EFI_CPU_IO_PROTOCOL_WIDTH OperationWidth;
>
> UINT8 *Uint8Buffer;
>
>
>
> + UINT8 EFIAPI (*CpuIoWrite8) (
>
> + UINTN,
>
> + UINT8
>
> + );
>
> +
>
> + UINT16 EFIAPI (*CpuIoWrite16) (
>
> + UINTN,
>
> + UINT16
>
> + );
>
> +
>
> + UINT32 EFIAPI (*CpuIoWrite32) (
>
> + UINTN,
>
> + UINT32
>
> + );
>
> +
>
> //
>
> // Make sure the parameters are valid
>
> //
>
> @@ -517,37 +557,48 @@ CpuIoServiceWrite (
>
> OutStride = mOutStride[Width];
>
> OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH)(Width & 0x03);
>
>
>
> - //
>
> - // Fifo operations supported for (mInStride[Width] == 0)
>
> - //
>
> - if (InStride == 0) {
>
> - switch (OperationWidth) {
>
> - case EfiCpuIoWidthUint8:
>
> - IoWriteFifo8 ((UINTN)Address, Count, Buffer);
>
> - return EFI_SUCCESS;
>
> - case EfiCpuIoWidthUint16:
>
> - IoWriteFifo16 ((UINTN)Address, Count, Buffer);
>
> - return EFI_SUCCESS;
>
> - case EfiCpuIoWidthUint32:
>
> - IoWriteFifo32 ((UINTN)Address, Count, Buffer);
>
> - return EFI_SUCCESS;
>
> - default:
>
> - //
>
> - // The CpuIoCheckParameter call above will ensure that this
>
> - // path is not taken.
>
> - //
>
> - ASSERT (FALSE);
>
> - break;
>
> + if (FeaturePcdGet (PcdPciIoTranslationIsEnabled) == FALSE) {
>
> + //
>
> + // Fifo operations supported for (mInStride[Width] == 0)
>
> + //
>
> + if (InStride == 0) {
>
> + switch (OperationWidth) {
>
> + case EfiCpuIoWidthUint8:
>
> + IoWriteFifo8 ((UINTN)Address, Count, Buffer);
>
> + return EFI_SUCCESS;
>
> + case EfiCpuIoWidthUint16:
>
> + IoWriteFifo16 ((UINTN)Address, Count, Buffer);
>
> + return EFI_SUCCESS;
>
> + case EfiCpuIoWidthUint32:
>
> + IoWriteFifo32 ((UINTN)Address, Count, Buffer);
>
> + return EFI_SUCCESS;
>
> + default:
>
> + //
>
> + // The CpuIoCheckParameter call above will ensure that this
>
> + // path is not taken.
>
> + //
>
> + ASSERT (FALSE);
>
> + break;
>
> + }
>
> }
>
> +
>
> + CpuIoWrite8 = IoWrite8;
>
> + CpuIoWrite16 = IoWrite16;
>
> + CpuIoWrite32 = IoWrite32;
>
> + } else {
>
> + Address += PcdGet64 (PcdPciIoTranslation);
>
> + CpuIoWrite8 = MmioWrite8;
>
> + CpuIoWrite16 = MmioWrite16;
>
> + CpuIoWrite32 = MmioWrite32;
>
> }
>
>
>
> for (Uint8Buffer = (UINT8 *)Buffer; Count > 0; Address += InStride, Uint8Buffer += OutStride, Count--) {
>
> if (OperationWidth == EfiCpuIoWidthUint8) {
>
> - IoWrite8 ((UINTN)Address, *Uint8Buffer);
>
> + CpuIoWrite8 ((UINTN)Address, *Uint8Buffer);
>
> } else if (OperationWidth == EfiCpuIoWidthUint16) {
>
> - IoWrite16 ((UINTN)Address, *((UINT16 *)Uint8Buffer));
>
> + CpuIoWrite16 ((UINTN)Address, *((UINT16 *)Uint8Buffer));
>
> } else if (OperationWidth == EfiCpuIoWidthUint32) {
>
> - IoWrite32 ((UINTN)Address, *((UINT32 *)Uint8Buffer));
>
> + CpuIoWrite32 ((UINTN)Address, *((UINT32 *)Uint8Buffer));
>
> }
>
> }
>
>
>
> diff --git a/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.h b/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.h
>
> index 7ebde0759b..5256a583e1 100644
>
> --- a/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.h
>
> +++ b/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.h
>
> @@ -2,6 +2,8 @@
>
> Internal include file for the CPU I/O 2 Protocol.
>
>
>
> Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
>
> +Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
>
> +Copyright (c) 2023 Loongson Technology Corporation Limited. All rights reserved.<BR>
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
>
>
> **/
>
> diff --git a/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf b/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
>
> index 499258491f..271c47371b 100644
>
> --- a/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
>
> +++ b/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
>
> @@ -3,6 +3,8 @@
>
> #
>
> # Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
>
> # Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
>
> +# Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
>
> +# Copyright (c) 2023 Loongson Technology Corporation Limited. All rights reserved.<BR>
>
> #
>
> # SPDX-License-Identifier: BSD-2-Clause-Patent
>
> #
>
> @@ -20,7 +22,7 @@
>
> #
>
> # The following information is for reference only and not required by the build tools.
>
> #
>
> -# VALID_ARCHITECTURES = IA32 X64 EBC
>
> +# VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64 LOONGARCH64
>
> #
>
>
>
> [Sources]
>
> @@ -37,6 +39,10 @@
>
> IoLib
>
> UefiBootServicesTableLib
>
>
>
> +[Pcd]
>
> + gEfiMdePkgTokenSpaceGuid.PcdPciIoTranslationIsEnabled
>
> + gEfiMdePkgTokenSpaceGuid.PcdPciIoTranslation
>
> +
>
> [Protocols]
>
> gEfiCpuIo2ProtocolGuid ## PRODUCES
>
>
>
> diff --git a/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.uni b/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.uni
>
> index 8d4e5dd6b4..14a36ff888 100644
>
> --- a/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.uni
>
> +++ b/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.uni
>
> @@ -4,6 +4,8 @@
>
> // Produces the CPU I/O 2 Protocol by using the services of the I/O Library.
>
> //
>
> // Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
>
> +// Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
>
> +// Copyright (c) 2023 Loongson Technology Corporation Limited. All rights reserved.<BR>
>
> //
>
> // SPDX-License-Identifier: BSD-2-Clause-Patent
>
> //
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#112749): https://edk2.groups.io/g/devel/message/112749
Mute This Topic: https://groups.io/mt/103261693/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next prev parent reply other threads:[~2023-12-20 7:41 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-12 13:09 [edk2-devel] [PATCH v4 00/37] Enable LoongArch virtual machine in edk2 Chao Li
2023-12-12 13:10 ` [edk2-devel] [PATCH v4 01/37] MdePkg: Add the header file named Csr.h for LoongArch64 Chao Li
2023-12-12 13:11 ` [edk2-devel] [PATCH v4 02/37] MdePkg: Add LoongArch64 FPU function set into BaseCpuLib Chao Li
2023-12-12 13:11 ` [edk2-devel] [PATCH v4 03/37] MdePkg: Add LoongArch64 exception function set into BaseLib Chao Li
2023-12-12 13:11 ` [edk2-devel] [PATCH v4 04/37] MdePkg: Add LoongArch64 local interrupt " Chao Li
2023-12-12 13:11 ` [edk2-devel] [PATCH v4 05/37] MdePkg: Add LoongArch Cpucfg function Chao Li
2023-12-12 13:11 ` [edk2-devel] [PATCH v4 06/37] MdePkg: Add read stable counter operation for LoongArch Chao Li
2023-12-12 13:11 ` [edk2-devel] [PATCH v4 07/37] MdePkg: Add CSR " Chao Li
2023-12-12 13:11 ` [edk2-devel] [PATCH v4 08/37] MdePkg: Add IOCSR " Chao Li
2023-12-12 13:11 ` [edk2-devel] [PATCH v4 09/37] MdePkg: Add a new library named PeiServicesTablePointerLibKs0 Chao Li
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 10/37] UefiCpuPkg: Add LoongArch64 CPU Timer library Chao Li
2023-12-19 6:29 ` Ni, Ray
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 11/37] UefiCpuPkg: Add CPU exception library for LoongArch Chao Li
2023-12-19 6:30 ` Ni, Ray
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 12/37] UefiCpuPkg: Add CpuMmuLib.h to UefiCpuPkg Chao Li
2023-12-13 5:17 ` Ni, Ray
2023-12-14 2:53 ` Chao Li
[not found] ` <17A0932406FD861E.11381@groups.io>
2023-12-19 1:59 ` Chao Li
2023-12-19 6:29 ` Ni, Ray
2023-12-19 6:56 ` Chao Li
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 13/37] UefiCpuPkg: Add LoongArch64CpuMmuLib " Chao Li
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 14/37] UefiCpuPkg: Add multiprocessor library for LoongArch64 Chao Li
2023-12-19 6:30 ` Ni, Ray
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 15/37] UefiCpuPkg: Add CpuDxe driver " Chao Li
2023-12-19 6:30 ` Ni, Ray
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 16/37] EmbeddedPkg: Add PcdPrePiCpuIoSize width for LOONGARCH64 Chao Li
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 17/37] ArmVirtPkg: Move PCD of FDT base address and FDT padding to OvmfPkg Chao Li
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 18/37] MdePkg: Add a PCD feature flag named PcdPciIoTranslationIsEnabled Chao Li
2023-12-12 13:12 ` [edk2-devel] [PATCH v4 19/37] UefiCpuPkg: Add MMIO method in CpuIo2Dxe Chao Li
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 20/37] ArmVirtPkg: Enable UefiCpuPkg version CpuIo2Dxe Chao Li
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 21/37] OvmfPkg/RiscVVirt: " Chao Li
2023-12-20 7:01 ` Sunil V L
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 22/37] OvmfPkg/RiscVVirt: Remove PciCpuIo2Dxe from RiscVVirt Chao Li
2023-12-20 7:02 ` Sunil V L
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 23/37] ArmVirtPkg: Move the FdtSerialPortAddressLib to OvmfPkg Chao Li
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 24/37] ArmVirtPkg: Move the PcdTerminalTypeGuidBuffer into OvmfPkg Chao Li
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 25/37] ArmVirtPkg: Move PlatformBootManagerLib to OvmfPkg Chao Li
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 26/37] OvmfPkg/LoongArchVirt: Add stable timer driver Chao Li
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 27/37] OvmfPkg/LoongArchVirt: Add a NULL library named CollectApResouceLibNull Chao Li
2023-12-12 13:13 ` [edk2-devel] [PATCH v4 28/37] OvmfPkg/LoongArchVirt: Add serial port hook library Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 29/37] OvmfPkg/LoongArchVirt: Add the early serial port output library Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 30/37] OvmfPkg/LoongArchVirt: Add real time clock library Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 31/37] OvmfPkg/LoongArchVirt: Add NorFlashQemuLib Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 32/37] OvmfPkg/LoongArchVirt: Add FdtQemuFwCfgLib Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 33/37] OvmfPkg/LoongArchVirt: Add reset system library Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 34/37] OvmfPkg/LoongArchVirt: Support SEC phase Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 35/37] OvmfPkg/LoongArchVirt: Support PEI phase Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 36/37] OvmfPkg/LoongArchVirt: Add build file Chao Li
2023-12-12 13:14 ` [edk2-devel] [PATCH v4 37/37] OvmfPkg/LoongArchVirt: Add self introduction file Chao Li
[not found] ` <17A017B459AD36A8.31409@groups.io>
2023-12-19 12:59 ` [edk2-devel] [PATCH v4 09/37] MdePkg: Add a new library named PeiServicesTablePointerLibKs0 Chao Li
2023-12-19 13:01 ` Chao Li
2023-12-19 13:07 ` 回复: " gaoliming via groups.io
2023-12-20 1:20 ` Chao Li
2023-12-21 7:16 ` 回复: " gaoliming via groups.io
2023-12-21 11:18 ` Chao Li
2023-12-25 1:33 ` 回复: " gaoliming via groups.io
2023-12-27 1:43 ` Chao Li
[not found] ` <17A017C0864F4177.31409@groups.io>
2023-12-19 13:02 ` [edk2-devel] [PATCH v4 18/37] MdePkg: Add a PCD feature flag named PcdPciIoTranslationIsEnabled Chao Li
[not found] ` <17A017C201FEB90D.32321@groups.io>
2023-12-19 13:03 ` [edk2-devel] [PATCH v4 19/37] UefiCpuPkg: Add MMIO method in CpuIo2Dxe Chao Li
2023-12-20 1:57 ` Ni, Ray
2023-12-20 7:41 ` Ard Biesheuvel [this message]
2023-12-20 9:44 ` Ni, Ray
2023-12-20 9:54 ` Ard Biesheuvel
2023-12-20 12:28 ` Ni, Ray
2023-12-20 15:17 ` Ard Biesheuvel
2023-12-21 3:48 ` Chao Li
2023-12-21 7:31 ` Ard Biesheuvel
2023-12-21 12:11 ` Chao Li
2023-12-21 12:31 ` Ard Biesheuvel
2023-12-21 12:41 ` Chao Li
2023-12-21 13:59 ` Ard Biesheuvel
2023-12-22 1:14 ` Chao Li
2023-12-22 2:37 ` Ni, Ray
2023-12-22 9:47 ` Ard Biesheuvel
2023-12-22 9:56 ` 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=CAMj1kXFj-Jb8c0h1fygv-yOCPpH8h5VanjhVRMNHzj7qEoPasQ@mail.gmail.com \
--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