From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: "Tan, Dun" <dun.tan@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Gao, Liming" <gaoliming@byosoft.com.cn>,
"Liu, Zhiguang" <zhiguang.liu@intel.com>,
"Ni, Ray" <ray.ni@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [PATCH 2/2] MdePkg:simplify Fifo API in BaseIoLibIntrinsic
Date: Mon, 11 Dec 2023 21:12:02 +0000 [thread overview]
Message-ID: <CO1PR11MB4929B042C5F119EA0411E392D28FA@CO1PR11MB4929.namprd11.prod.outlook.com> (raw)
In-Reply-To: <CO1PR11MB4929BB73EE89670DB2BDE6AFD28FA@CO1PR11MB4929.namprd11.prod.outlook.com>
Merged: https://github.com/tianocore/edk2/pull/5138
> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Monday, December 11, 2023 9:34 AM
> To: Tan, Dun <dun.tan@intel.com>; devel@edk2.groups.io
> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Liu, Zhiguang
> <zhiguang.liu@intel.com>; Ni, Ray <ray.ni@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Subject: RE: [edk2-devel] [PATCH 2/2] MdePkg:simplify Fifo API in
> BaseIoLibIntrinsic
>
> Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
>
> Mike
>
> > -----Original Message-----
> > From: Tan, Dun <dun.tan@intel.com>
> > Sent: Wednesday, December 6, 2023 1:26 AM
> > To: devel@edk2.groups.io; Tan, Dun <dun.tan@intel.com>
> > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming
> > <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>;
> Ni,
> > Ray <ray.ni@intel.com>
> > Subject: RE: [edk2-devel] [PATCH 2/2] MdePkg:simplify Fifo API in
> > BaseIoLibIntrinsic
> >
> > Hi Mike and Liming,
> >
> > Could you please help to review this patch?
> >
> > Thanks,
> > Dun
> >
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of duntan
> > Sent: Thursday, November 9, 2023 10:50 AM
> > To: devel@edk2.groups.io
> > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming
> > <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>;
> Ni,
> > Ray <ray.ni@intel.com>
> > Subject: [edk2-devel] [PATCH 2/2] MdePkg:simplify Fifo API in
> > BaseIoLibIntrinsic
> >
> > Simplify IoRead/WriteFifo implement by repeatedly calling IoRead/Write
> > in the C code.
> > This can avoid calling assembly code to use string I/O instructions.
> > With this change Ia32/IoFifo.nasm and X64/IoFifo.nasm can be removed.
> > Then the source files for IA32 and X64 are the same.
> >
> > Signed-off-by: Dun Tan <dun.tan@intel.com>
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Zhiguang Liu <zhiguang.liu@intel.com>
> > Cc: Ray Ni <ray.ni@intel.com>
> > ---
> > MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf | 10 ++----
> --
> > --
> > MdePkg/Library/BaseIoLibIntrinsic/Ia32/IoFifo.nasm | 131 ------
> --
> > ----------------------------------------------------------------------
> --
> > ---------------------------------------------------
> > MdePkg/Library/BaseIoLibIntrinsic/IoLibFifo.c | 220
> >
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > ++++
> > MdePkg/Library/BaseIoLibIntrinsic/X64/IoFifo.nasm | 120 ------
> --
> > ----------------------------------------------------------------------
> --
> > ----------------------------------------
> > 4 files changed, 222 insertions(+), 259 deletions(-)
> >
> > diff --git a/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
> > b/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
> > index aeb072ee95..b587e2cded 100644
> > --- a/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
> > +++ b/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
> > @@ -38,17 +38,11 @@
> > IoLibInternalTdxNull.c
> > IoLibTdx.h
> >
> > -[Sources.IA32]
> > +[Sources.IA32, Sources.X64]
> > IoLibGcc.c | GCC
> > IoLibMsc.c | MSFT
> > IoLib.c
> > - Ia32/IoFifo.nasm
> > -
> > -[Sources.X64]
> > - IoLibGcc.c | GCC
> > - IoLibMsc.c | MSFT
> > - IoLib.c
> > - X64/IoFifo.nasm
> > + IoLibFifo.c
> >
> > [Sources.EBC]
> > IoLibEbc.c
> > diff --git a/MdePkg/Library/BaseIoLibIntrinsic/Ia32/IoFifo.nasm
> > b/MdePkg/Library/BaseIoLibIntrinsic/Ia32/IoFifo.nasm
> > deleted file mode 100644
> > index a4ae1a0053..0000000000
> > --- a/MdePkg/Library/BaseIoLibIntrinsic/Ia32/IoFifo.nasm
> > +++ /dev/null
> > @@ -1,131 +0,0 @@
> > -;--------------------------------------------------------------------
> --
> > --------
> > -;
> > -; Copyright (c) 2006 - 2012, Intel Corporation. All rights
> > reserved.<BR> -; Copyright (c) 2017, AMD Incorporated. All rights
> > reserved.<BR> -; -; SPDX-License-Identifier: BSD-2-Clause-Patent -;
> > -;--------------------------------------------------------------------
> --
> > --------
> > -
> > - SECTION .text
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoReadFifo8 (
> > -; IN UINTN Port,
> > -; IN UINTN Size,
> > -; OUT VOID *Buffer
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoReadFifo8)
> > -ASM_PFX(IoReadFifo8):
> > - push edi
> > - cld
> > - mov dx, [esp + 8]
> > - mov ecx, [esp + 12]
> > - mov edi, [esp + 16]
> > -rep insb
> > - pop edi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoReadFifo16 (
> > -; IN UINTN Port,
> > -; IN UINTN Size,
> > -; OUT VOID *Buffer
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoReadFifo16)
> > -ASM_PFX(IoReadFifo16):
> > - push edi
> > - cld
> > - mov dx, [esp + 8]
> > - mov ecx, [esp + 12]
> > - mov edi, [esp + 16]
> > -rep insw
> > - pop edi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoReadFifo32 (
> > -; IN UINTN Port,
> > -; IN UINTN Size,
> > -; OUT VOID *Buffer
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoReadFifo32)
> > -ASM_PFX(IoReadFifo32):
> > - push edi
> > - cld
> > - mov dx, [esp + 8]
> > - mov ecx, [esp + 12]
> > - mov edi, [esp + 16]
> > -rep insd
> > - pop edi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoWriteFifo8 (
> > -; IN UINTN Port,
> > -; IN UINTN Size,
> > -; IN VOID *Buffer
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoWriteFifo8)
> > -ASM_PFX(IoWriteFifo8):
> > - push esi
> > - cld
> > - mov dx, [esp + 8]
> > - mov ecx, [esp + 12]
> > - mov esi, [esp + 16]
> > -rep outsb
> > - pop esi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoWriteFifo16 (
> > -; IN UINTN Port,
> > -; IN UINTN Size,
> > -; IN VOID *Buffer
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoWriteFifo16)
> > -ASM_PFX(IoWriteFifo16):
> > - push esi
> > - cld
> > - mov dx, [esp + 8]
> > - mov ecx, [esp + 12]
> > - mov esi, [esp + 16]
> > -rep outsw
> > - pop esi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoWriteFifo32 (
> > -; IN UINTN Port,
> > -; IN UINTN Size,
> > -; IN VOID *Buffer
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoWriteFifo32)
> > -ASM_PFX(IoWriteFifo32):
> > - push esi
> > - cld
> > - mov dx, [esp + 8]
> > - mov ecx, [esp + 12]
> > - mov esi, [esp + 16]
> > -rep outsd
> > - pop esi
> > - ret
> > -
> > diff --git a/MdePkg/Library/BaseIoLibIntrinsic/IoLibFifo.c
> > b/MdePkg/Library/BaseIoLibIntrinsic/IoLibFifo.c
> > new file mode 100644
> > index 0000000000..bd1d372d0f
> > --- /dev/null
> > +++ b/MdePkg/Library/BaseIoLibIntrinsic/IoLibFifo.c
> > @@ -0,0 +1,220 @@
> > +/** @file
> > + IoFifo read/write routines.
> > +
> > + Copyright (c) 2021 - 2023, Intel Corporation. All rights
> > + reserved.<BR>
> > + SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > +**/
> > +
> > +#include "BaseIoLibIntrinsicInternal.h"
> > +#include <Uefi/UefiBaseType.h>
> > +
> > +/**
> > + Reads an 8-bit I/O port fifo into a block of memory.
> > +
> > + Reads the 8-bit I/O fifo port specified by Port.
> > + The port is read Count times, and the read data is stored in the
> > + provided Buffer.
> > +
> > + This function must guarantee that all I/O read and write operations
> > + are serialized.
> > +
> > + If 8-bit I/O port operations are not supported, then ASSERT().
> > +
> > + In TDX a serial of TdIoRead8 is invoked to read the I/O port fifo.
> > +
> > + @param Port The I/O port to read.
> > + @param Count The number of times to read I/O port.
> > + @param Buffer The buffer to store the read data into.
> > +
> > +**/
> > +VOID
> > +EFIAPI
> > +IoReadFifo8 (
> > + IN UINTN Port,
> > + IN UINTN Count,
> > + OUT VOID *Buffer
> > + )
> > +{
> > + UINT8 *Buffer8;
> > +
> > + Buffer8 = (UINT8 *)Buffer;
> > + while (Count-- > 0) {
> > + *Buffer8++ = IoRead8 (Port);
> > + }
> > +}
> > +
> > +/**
> > + Writes a block of memory into an 8-bit I/O port fifo.
> > +
> > + Writes the 8-bit I/O fifo port specified by Port.
> > + The port is written Count times, and the write data is retrieved
> > + from the provided Buffer.
> > +
> > + This function must guarantee that all I/O write and write
> operations
> > + are serialized.
> > +
> > + If 8-bit I/O port operations are not supported, then ASSERT().
> > +
> > + In TDX a serial of TdIoWrite8 is invoked to write data to the I/O
> > port.
> > +
> > + @param Port The I/O port to write.
> > + @param Count The number of times to write I/O port.
> > + @param Buffer The buffer to retrieve the write data from.
> > +
> > +**/
> > +VOID
> > +EFIAPI
> > +IoWriteFifo8 (
> > + IN UINTN Port,
> > + IN UINTN Count,
> > + IN VOID *Buffer
> > + )
> > +{
> > + UINT8 *Buffer8;
> > +
> > + Buffer8 = (UINT8 *)Buffer;
> > + while (Count-- > 0) {
> > + IoWrite8 (Port, *Buffer8++);
> > + }
> > +}
> > +
> > +/**
> > + Reads a 16-bit I/O port fifo into a block of memory.
> > +
> > + Reads the 16-bit I/O fifo port specified by Port.
> > + The port is read Count times, and the read data is stored in the
> > + provided Buffer.
> > +
> > + This function must guarantee that all I/O read and write operations
> > + are serialized.
> > +
> > + If 16-bit I/O port operations are not supported, then ASSERT().
> > +
> > + In TDX a serial of TdIoRead16 is invoked to read data from the I/O
> > port.
> > +
> > + @param Port The I/O port to read.
> > + @param Count The number of times to read I/O port.
> > + @param Buffer The buffer to store the read data into.
> > +
> > +**/
> > +VOID
> > +EFIAPI
> > +IoReadFifo16 (
> > + IN UINTN Port,
> > + IN UINTN Count,
> > + OUT VOID *Buffer
> > + )
> > +{
> > + UINT16 *Buffer16;
> > +
> > + Buffer16 = (UINT16 *)Buffer;
> > + while (Count-- > 0) {
> > + *Buffer16++ = IoRead16 (Port);
> > + }
> > +}
> > +
> > +/**
> > + Writes a block of memory into a 16-bit I/O port fifo.
> > +
> > + Writes the 16-bit I/O fifo port specified by Port.
> > + The port is written Count times, and the write data is retrieved
> > + from the provided Buffer.
> > +
> > + This function must guarantee that all I/O write and write
> operations
> > + are serialized.
> > +
> > + If 16-bit I/O port operations are not supported, then ASSERT().
> > +
> > + In TDX a serial of TdIoWrite16 is invoked to write data to the I/O
> > port.
> > +
> > + @param Port The I/O port to write.
> > + @param Count The number of times to write I/O port.
> > + @param Buffer The buffer to retrieve the write data from.
> > +
> > +**/
> > +VOID
> > +EFIAPI
> > +IoWriteFifo16 (
> > + IN UINTN Port,
> > + IN UINTN Count,
> > + IN VOID *Buffer
> > + )
> > +{
> > + UINT16 *Buffer16;
> > +
> > + Buffer16 = (UINT16 *)Buffer;
> > + while (Count-- > 0) {
> > + IoWrite16 (Port, *Buffer16++);
> > + }
> > +}
> > +
> > +/**
> > + Reads a 32-bit I/O port fifo into a block of memory.
> > +
> > + Reads the 32-bit I/O fifo port specified by Port.
> > + The port is read Count times, and the read data is stored in the
> > + provided Buffer.
> > +
> > + This function must guarantee that all I/O read and write operations
> > + are serialized.
> > +
> > + If 32-bit I/O port operations are not supported, then ASSERT().
> > +
> > + In TDX a serial of TdIoRead32 is invoked to read data from the I/O
> > port.
> > +
> > + @param Port The I/O port to read.
> > + @param Count The number of times to read I/O port.
> > + @param Buffer The buffer to store the read data into.
> > +
> > +**/
> > +VOID
> > +EFIAPI
> > +IoReadFifo32 (
> > + IN UINTN Port,
> > + IN UINTN Count,
> > + OUT VOID *Buffer
> > + )
> > +{
> > + UINT32 *Buffer32;
> > +
> > + Buffer32 = (UINT32 *)Buffer;
> > + while (Count-- > 0) {
> > + *Buffer32++ = IoRead32 (Port);
> > + }
> > +}
> > +
> > +/**
> > + Writes a block of memory into a 32-bit I/O port fifo.
> > +
> > + Writes the 32-bit I/O fifo port specified by Port.
> > + The port is written Count times, and the write data is retrieved
> > + from the provided Buffer.
> > +
> > + This function must guarantee that all I/O write and write
> operations
> > + are serialized.
> > +
> > + If 32-bit I/O port operations are not supported, then ASSERT().
> > +
> > + In TDX a serial of TdIoWrite32 is invoked to write data to the I/O
> > port.
> > +
> > + @param Port The I/O port to write.
> > + @param Count The number of times to write I/O port.
> > + @param Buffer The buffer to retrieve the write data from.
> > +
> > +**/
> > +VOID
> > +EFIAPI
> > +IoWriteFifo32 (
> > + IN UINTN Port,
> > + IN UINTN Count,
> > + IN VOID *Buffer
> > + )
> > +{
> > + UINT32 *Buffer32;
> > +
> > + Buffer32 = (UINT32 *)Buffer;
> > + while (Count-- > 0) {
> > + IoWrite32 (Port, *Buffer32++);
> > + }
> > +}
> > diff --git a/MdePkg/Library/BaseIoLibIntrinsic/X64/IoFifo.nasm
> > b/MdePkg/Library/BaseIoLibIntrinsic/X64/IoFifo.nasm
> > deleted file mode 100644
> > index d459072f6e..0000000000
> > --- a/MdePkg/Library/BaseIoLibIntrinsic/X64/IoFifo.nasm
> > +++ /dev/null
> > @@ -1,120 +0,0 @@
> > -;--------------------------------------------------------------------
> --
> > --------
> > -;
> > -; Copyright (c) 2006 - 2012, Intel Corporation. All rights
> > reserved.<BR> -; Copyright (c) 2017, AMD Incorporated. All rights
> > reserved.<BR> -; -; SPDX-License-Identifier: BSD-2-Clause-Patent -;
> > -;--------------------------------------------------------------------
> --
> > --------
> > -
> > - DEFAULT REL
> > - SECTION .text
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoReadFifo8 (
> > -; IN UINTN Port, // rcx
> > -; IN UINTN Size, // rdx
> > -; OUT VOID *Buffer // r8
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoReadFifo8)
> > -ASM_PFX(IoReadFifo8):
> > - cld
> > - xchg rcx, rdx
> > - xchg rdi, r8 ; rdi: buffer address; r8: save rdi
> > -rep insb
> > - mov rdi, r8 ; restore rdi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoReadFifo16 (
> > -; IN UINTN Port, // rcx
> > -; IN UINTN Size, // rdx
> > -; OUT VOID *Buffer // r8
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoReadFifo16)
> > -ASM_PFX(IoReadFifo16):
> > - cld
> > - xchg rcx, rdx
> > - xchg rdi, r8 ; rdi: buffer address; r8: save rdi
> > -rep insw
> > - mov rdi, r8 ; restore rdi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoReadFifo32 (
> > -; IN UINTN Port, // rcx
> > -; IN UINTN Size, // rdx
> > -; OUT VOID *Buffer // r8
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoReadFifo32)
> > -ASM_PFX(IoReadFifo32):
> > - cld
> > - xchg rcx, rdx
> > - xchg rdi, r8 ; rdi: buffer address; r8: save rdi
> > -rep insd
> > - mov rdi, r8 ; restore rdi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoWriteFifo8 (
> > -; IN UINTN Port, // rcx
> > -; IN UINTN Size, // rdx
> > -; IN VOID *Buffer // r8
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoWriteFifo8)
> > -ASM_PFX(IoWriteFifo8):
> > - cld
> > - xchg rcx, rdx
> > - xchg rsi, r8 ; rsi: buffer address; r8: save rsi
> > -rep outsb
> > - mov rsi, r8 ; restore rsi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoWriteFifo16 (
> > -; IN UINTN Port, // rcx
> > -; IN UINTN Size, // rdx
> > -; IN VOID *Buffer // r8
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoWriteFifo16)
> > -ASM_PFX(IoWriteFifo16):
> > - cld
> > - xchg rcx, rdx
> > - xchg rsi, r8 ; rsi: buffer address; r8: save rsi
> > -rep outsw
> > - mov rsi, r8 ; restore rsi
> > - ret
> > -
> > -;--------------------------------------------------------------------
> --
> > --------
> > -; VOID
> > -; EFIAPI
> > -; IoWriteFifo32 (
> > -; IN UINTN Port, // rcx
> > -; IN UINTN Size, // rdx
> > -; IN VOID *Buffer // r8
> > -; );
> > -;--------------------------------------------------------------------
> --
> > --------
> > -global ASM_PFX(IoWriteFifo32)
> > -ASM_PFX(IoWriteFifo32):
> > - cld
> > - xchg rcx, rdx
> > - xchg rsi, r8 ; rsi: buffer address; r8: save rsi
> > -rep outsd
> > - mov rsi, r8 ; restore rsi
> > - ret
> > -
> > --
> > 2.31.1.windows.1
> >
> >
> >
> >
> >
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#112327): https://edk2.groups.io/g/devel/message/112327
Mute This Topic: https://groups.io/mt/103009916/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/xyzzy [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
prev parent reply other threads:[~2023-12-11 21:12 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-09 2:49 [edk2-devel] [PATCH 0/2] Remove string IO instruction in BaseIoLibIntrinsic.inf duntan
2023-11-09 2:49 ` [edk2-devel] [PATCH 1/2] MdePkg: Change IoLibFifo.c to IoLibFifoCc.c duntan
2023-11-09 2:49 ` [edk2-devel] [PATCH 2/2] MdePkg:simplify Fifo API in BaseIoLibIntrinsic duntan
2023-11-09 5:56 ` [edk2-devel] [PATCH 0/2] Remove string IO instruction in BaseIoLibIntrinsic.inf Ni, Ray
2023-11-13 13:07 ` Laszlo Ersek
2023-11-27 10:14 ` duntan
[not found] ` <1795D4A7BE9E02F3.6123@groups.io>
2023-12-06 9:25 ` [edk2-devel] [PATCH 1/2] MdePkg: Change IoLibFifo.c to IoLibFifoCc.c duntan
[not found] ` <1795D4A7D7819C64.15940@groups.io>
2023-12-06 9:26 ` [edk2-devel] [PATCH 2/2] MdePkg:simplify Fifo API in BaseIoLibIntrinsic duntan
2023-12-11 17:34 ` Michael D Kinney
2023-12-11 21:12 ` Michael D Kinney [this message]
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=CO1PR11MB4929B042C5F119EA0411E392D28FA@CO1PR11MB4929.namprd11.prod.outlook.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