public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Gao, Liming" <liming.gao@intel.com>
To: "Duran, Leo" <leo.duran@amd.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Kinney, Michael D" <michael.d.kinney@intel.com>,
	"Justen, Jordan L" <jordan.l.justen@intel.com>,
	"Singh, Brijesh" <brijesh.singh@amd.com>,
	"Fan, Jeff" <jeff.fan@intel.com>,
	"lersek@redhat.com" <lersek@redhat.com>
Subject: Re: [PATCH 0/8] IoLib class library
Date: Thu, 12 Jan 2017 04:25:43 +0000	[thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CDAD7@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <DM5PR12MB12437B22BB35638BB42C51C1F9790@DM5PR12MB1243.namprd12.prod.outlook.com>

Leo:
  Current IO driver does support EfiCpuIoWidthFifoUint#, although CpuIo and PeiCpuIo driver doesn't support the optimized FifoIo operation. So, I think rework IoLib instance has no risk. 

Thanks
Liming
>-----Original Message-----
>From: Duran, Leo [mailto:leo.duran@amd.com]
>Sent: Thursday, January 12, 2017 9:51 AM
>To: Gao, Liming <liming.gao@intel.com>; edk2-devel@lists.01.org
>Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Justen, Jordan L
><jordan.l.justen@intel.com>; Singh, Brijesh <brijesh.singh@amd.com>; Fan,
>Jeff <jeff.fan@intel.com>; lersek@redhat.com
>Subject: RE: [edk2] [PATCH 0/8] IoLib class library
>
>Ummh...
>
>> -----Original Message-----
>> From: Gao, Liming [mailto:liming.gao@intel.com]
>> Sent: Wednesday, January 11, 2017 7:39 PM
>> To: Duran, Leo <leo.duran@amd.com>; edk2-devel@lists.01.org
>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Justen, Jordan L
>> <jordan.l.justen@intel.com>; Singh, Brijesh <brijesh.singh@amd.com>; Fan,
>> Jeff <jeff.fan@intel.com>; lersek@redhat.com
>> Subject: RE: [edk2] [PATCH 0/8] IoLib class library
>>
>> Leo:
>>   I suggest you rework IoLib instances PeiIoLib, DxeIoLibCpuIo,
>> DxeIoLibCpuIo2 library instance first. Then, later you only need to change
>> CpuIo PEIM and driver, don't need to change library instances again.
>>
>> Thanks
>> Liming
>[Duran, Leo]
>If I rework the IoLib instances to use EfiCpuIoWidthFifoUint#, the I/O driver
>will *not* do the right thing, so the  expected IoLib functionality will be
>broken.
>Basically, the I/O driver needs to properly support EfiCpuIoWidthFifoUint#
>types in order for the IoLib instances to work correctly using that type.
>
>In contrast, albeit not optimal, the changes I've already made to the IoLIb
>instances will function correctly with the exiting I/O driver.
>
>So it seems like the order t=f changes needs to be:
>1) Update I/O driver to support EfiCpuIoWidthFifoUint# types
>2) Then update IoLib instances to use EfiCpuIoWidthFifoUint# types
>
>But perhaps my unders5tanding of the current implementation is flawed?
>
>Leo.
>
>> -----Original Message-----
>> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
>> Duran, Leo
>> Sent: Thursday, January 12, 2017 9:35 AM
>> To: Gao, Liming <liming.gao@intel.com>; edk2-devel@lists.01.org
>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Justen, Jordan L
>> <jordan.l.justen@intel.com>; Singh, Brijesh <brijesh.singh@amd.com>; Fan,
>> Jeff <jeff.fan@intel.com>; lersek@redhat.com
>> Subject: Re: [edk2] [PATCH 0/8] IoLib class library
>>
>> How about this instead:
>>
>> 1) I submit a "v2" to take care of the code-style issue, while making all
>> instances of IoLib fully functional & complaint with the complete IoLib API.
>> 2) At a later time (soon, I promise), I submit a patch for CpuIo2Dxe to
>> properly support FiFo types and also rework the IoLib instances to use
>> EfiCpuIoWidthFifoUint#.
>>
>> Is that a deal?
>> Leo
>>
>> > -----Original Message-----
>> > From: Gao, Liming [mailto:liming.gao@intel.com]
>> > Sent: Wednesday, January 11, 2017 7:22 PM
>> > To: Duran, Leo <leo.duran@amd.com>; edk2-devel@lists.01.org
>> > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Justen, Jordan L
>> > <jordan.l.justen@intel.com>; Singh, Brijesh <brijesh.singh@amd.com>;
>> > Fan, Jeff <jeff.fan@intel.com>; lersek@redhat.com
>> > Subject: RE: [edk2] [PATCH 0/8] IoLib class library
>> >
>> > Leo:
>> >   CpuIo2Dxe supports FifoIo operation, because original logic includes
>> > FifoIo implementation. CpuIoCheckParameter() checks the parameter,
>> > doesn't performance operation. And, 64bit IO operation is not
>> > supported. You add three APIs for 8, 16 and 32 Io operation. So, there is no
>> lose functionality.
>> > Last, OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);
>> It
>> > still supports all Width.
>> >
>> >  Besides, I understand your work scope for IO library update. You can
>> > focus on my comment 1. If you have no bandwidth, you can submit
>> > bugzillar for comment 2 to update PeiCpuIo and DxeCpuIo driver to base
>> > on IoLib to implement FifoIo APIs.
>> >
>> > Thanks
>> > Liming
>> > -----Original Message-----
>> > From: Duran, Leo [mailto:leo.duran@amd.com]
>> > Sent: Thursday, January 12, 2017 12:29 AM
>> > To: Gao, Liming <liming.gao@intel.com>; edk2-devel@lists.01.org
>> > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Justen, Jordan L
>> > <jordan.l.justen@intel.com>; Singh, Brijesh <brijesh.singh@amd.com>;
>> > Fan, Jeff <jeff.fan@intel.com>; lersek@redhat.com
>> > Subject: RE: [edk2] [PATCH 0/8] IoLib class library
>> >
>> > Liming,
>> >
>> > However, here are some issues with trying to use Fifo types via the
>> > I/O
>> > protocol:
>> > 1) CpuIo2Dxe.c - CpuIoCheckParameter(): Count is forced to 1 for Fifo
>> types:
>> >   //
>> >   // For FIFO type, the target address won't increase during the access,
>> >   // so treat Count as 1
>> >   //
>> >   if (Width >= EfiCpuIoWidthFifoUint8 && Width <=
>> > EfiCpuIoWidthFifoUint64) {
>> >     Count = 1;
>> >   }
>> >
>> > 2) CpuIo2Dxe.c - CpuIoCheckParameter():Fifo types are
>> > eliminated/truncated:
>> >   //
>> >   // Check to see if Width is in the valid range for I/O Port operations
>> >   //
>> >   Width = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);
>> >   if (!MmioOperation && (Width == EfiCpuIoWidthUint64)) {
>> >     return EFI_INVALID_PARAMETER;
>> >   }
>> >
>> > 3) CpuIo2Dxe.c - CpuIoServiceRead()/CpuIoServiceWrite():
>> > OperationWidth is only serviced for these cases: EfiCpuIoWidthUint8,
>> > EfiCpuIoWidthUint16, and EfiCpuIoWidthUint32 So the Fifo types are not
>> > serviced.
>> >
>> >
>> > > -----Original Message-----
>> > > From: Gao, Liming [mailto:liming.gao@intel.com]
>> > > Sent: Tuesday, January 10, 2017 10:07 PM
>> > > To: Duran, Leo <leo.duran@amd.com>; edk2-devel@lists.01.org
>> > > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Justen, Jordan L
>> > > <jordan.l.justen@intel.com>; Singh, Brijesh <brijesh.singh@amd.com>;
>> > > Fan, Jeff <jeff.fan@intel.com>; lersek@redhat.com
>> > > Subject: RE: [edk2] [PATCH 0/8] IoLib class library
>> > >
>> > > Leo:
>> > > edk2\UefiCpuPkg\CpuIo2Dxe\CpuIo2Dxe.c CpuIoServiceRead() bases
>on
>> > > IoReadFifo8() for EfiCpuIoWidthFifoUint8 width. So, IoLibCupIo2
>> > > library instance IoReadFifo8() implementation can call
>> > > mCpuIo->Io.Read (mCpuIo, EfiCpuIoWidthFifoUint8, Port, Count,
>> > > Buffer);
>> > >
>> > > Thanks
>> > > Liming
>> > > -----Original Message-----
>> > > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf
>> > > Of Duran, Leo
>> > > Sent: Wednesday, January 11, 2017 11:37 AM
>> > > To: Gao, Liming <liming.gao@intel.com>; edk2-devel@lists.01.org
>> > > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Justen, Jordan L
>> > > <jordan.l.justen@intel.com>; Singh, Brijesh <brijesh.singh@amd.com>;
>> > > Fan, Jeff <jeff.fan@intel.com>; lersek@redhat.com
>> > > Subject: Re: [edk2] [PATCH 0/8] IoLib class library
>> > >
>> > > Liming...
>> > >
>> > > > -----Original Message-----
>> > > > From: Gao, Liming [mailto:liming.gao@intel.com]
>> > > > Sent: Tuesday, January 10, 2017 7:42 PM
>> > > > To: Duran, Leo <leo.duran@amd.com>; edk2-devel@lists.01.org
>> > > > Cc: Singh, Brijesh <brijesh.singh@amd.com>; Justen, Jordan L
>> > > > <jordan.l.justen@intel.com>; Kinney, Michael D
>> > > > <michael.d.kinney@intel.com>; lersek@redhat.com; Fan, Jeff
>> > > > <jeff.fan@intel.com>
>> > > > Subject: RE: [edk2] [PATCH 0/8] IoLib class library
>> > > >
>> > > > Leo:
>> > > >   Thanks for your update. Here is my comments.
>> > > > 1) PeiIoLib, DxeIoLibCpuIo, DxeIoLibCpuIo2 library instance can
>> > > > base on CPU IO service to do FifoIo operation. They don't
>> > > > implement them
>> > > again.
>> > > > 2) IntelFrameworkModulePkg CpuIoDxe and UefiCpuPkg CpuIoPei
>> driver
>> > > can
>> > > > be updated to base on FifoIo API for their FifoIo implementation.
>> > >
>> > > [Duran, Leo] I actually considered that, but the CPU I/O driver does
>> > > not provide FiFiIo service in its implementation of the
>> > EFI_CPU_IO2_PROTOCOL.
>> > > The CPU I/O driver does use the Fifo routines internally, and it
>> > > does so when that caller request IoRead/IoWrite... see the CPU I/O
>> > > service
>> > routines below.
>> > >
>> > > > 3) One coding style issue. We don't assign value to the variable
>> > declaration.
>> > > > UINT8 *Buffer8 = (UINT8 *)Buffer;
>> > > > ==>
>> > > > UINT8 *Buffer8;
>> > > > Buffer8 = (UINT8 *)Buffer;
>> > >
>> > > [Duran, Leo] OK, I'll change that.
>> > >
>> > > >
>> > > > Thanks
>> > > > Liming
>> > > [Duran, Leo]
>> > >
>> > > EFI_STATUS
>> > > EFIAPI
>> > > CpuIoServiceRead (
>> > >   IN  EFI_CPU_IO2_PROTOCOL       *This,
>> > >   IN  EFI_CPU_IO_PROTOCOL_WIDTH  Width,
>> > >   IN  UINT64                     Address,
>> > >   IN  UINTN                      Count,
>> > >   OUT VOID                       *Buffer
>> > >   )
>> > > {
>> > >   EFI_STATUS                 Status;
>> > >   UINT8                      InStride;
>> > >   UINT8                      OutStride;
>> > >   EFI_CPU_IO_PROTOCOL_WIDTH  OperationWidth;
>> > >   UINT8                      *Uint8Buffer;
>> > >
>> > >   Status = CpuIoCheckParameter (FALSE, Width, Address, Count, Buffer);
>> > >   if (EFI_ERROR (Status)) {
>> > >     return Status;
>> > >   }
>> > >
>> > >   //
>> > >   // Select loop based on the width of the transfer
>> > >   //
>> > >   InStride = mInStride[Width];
>> > >   OutStride = mOutStride[Width];
>> > >   OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);
>> > >
>> > > #if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
>> > >   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;
>> > >     }
>> > >   }
>> > > #endif
>> > >
>> > >   for (Uint8Buffer = Buffer; Count > 0; Address += InStride,
>> > > Uint8Buffer += OutStride, Count--) {
>> > >     if (OperationWidth == EfiCpuIoWidthUint8) {
>> > >       *Uint8Buffer = IoRead8 ((UINTN)Address);
>> > >     } else if (OperationWidth == EfiCpuIoWidthUint16) {
>> > >       *((UINT16 *)Uint8Buffer) = IoRead16 ((UINTN)Address);
>> > >     } else if (OperationWidth == EfiCpuIoWidthUint32) {
>> > >       *((UINT32 *)Uint8Buffer) = IoRead32 ((UINTN)Address);
>> > >     }
>> > >   }
>> > >
>> > >   return EFI_SUCCESS;
>> > > }
>> > >
>> > > EFI_STATUS
>> > > EFIAPI
>> > > CpuIoServiceWrite (
>> > >   IN EFI_CPU_IO2_PROTOCOL       *This,
>> > >   IN EFI_CPU_IO_PROTOCOL_WIDTH  Width,
>> > >   IN UINT64                     Address,
>> > >   IN UINTN                      Count,
>> > >   IN VOID                       *Buffer
>> > >   )
>> > > {
>> > >   EFI_STATUS                 Status;
>> > >   UINT8                      InStride;
>> > >   UINT8                      OutStride;
>> > >   EFI_CPU_IO_PROTOCOL_WIDTH  OperationWidth;
>> > >   UINT8                      *Uint8Buffer;
>> > >
>> > >   //
>> > >   // Make sure the parameters are valid
>> > >   //
>> > >   Status = CpuIoCheckParameter (FALSE, Width, Address, Count, Buffer);
>> > >   if (EFI_ERROR (Status)) {
>> > >     return Status;
>> > >   }
>> > >
>> > >   //
>> > >   // Select loop based on the width of the transfer
>> > >   //
>> > >   InStride = mInStride[Width];
>> > >   OutStride = mOutStride[Width];
>> > >   OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);
>> > >
>> > > #if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64)
>> > >   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;
>> > >     }
>> > >   }
>> > > #endif
>> > >
>> > >   for (Uint8Buffer = (UINT8 *)Buffer; Count > 0; Address +=
>> > > InStride, Uint8Buffer += OutStride, Count--) {
>> > >     if (OperationWidth == EfiCpuIoWidthUint8) {
>> > >       IoWrite8 ((UINTN)Address, *Uint8Buffer);
>> > >     } else if (OperationWidth == EfiCpuIoWidthUint16) {
>> > >       IoWrite16 ((UINTN)Address, *((UINT16 *)Uint8Buffer));
>> > >     } else if (OperationWidth == EfiCpuIoWidthUint32) {
>> > >       IoWrite32 ((UINTN)Address, *((UINT32 *)Uint8Buffer));
>> > >     }
>> > >   }
>> > >
>> > >   return EFI_SUCCESS;
>> > > }
>> > > > -----Original Message-----
>> > > > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On
>> > > > Behalf Of Leo Duran
>> > > > Sent: Wednesday, January 11, 2017 7:56 AM
>> > > > To: edk2-devel@lists.01.org
>> > > > Cc: brijesh.singh@amd.com; Justen, Jordan L
>> > > > <jordan.l.justen@intel.com>; Gao, Liming <liming.gao@intel.com>;
>> > > > Leo Duran <leo.duran@amd.com>; Kinney, Michael D
>> > > > <michael.d.kinney@intel.com>; lersek@redhat.com; Fan, Jeff
>> > > > <jeff.fan@intel.com>
>> > > > Subject: [edk2] [PATCH 0/8] IoLib class library
>> > > >
>> > > > The UefiCpuPkg/CpuIo2Dxe driver and the QemuCfgLib library have
>> > > > duplicate implementations of I/O Fifo routines. The patch series
>> > > > moves the I/O Fifo routines into the BaseIoLibIntrinsic library
>> > > > and expands the IoLib class to include the ported I/O Fifo routines.
>> > > >
>> > > > The Fifo routines moved from the UefiCpuPkg/CpuIo2Dxe driver
>> > > > support
>> > > > IA32 and X64 natively, and other architectures are supported by
>> > > > simply looping through the basic IoRead/IoWrite routines as
>> appropiate.
>> > > >
>> > > > The intent of this patch series is twofold:
>> > > > 1) Integrate I/O Fifo routines into the IoLib class library.
>> > > > 2) Allow override of IoLib as may be required to support specific
>> > > > hardware implementations, such as AMD's Secure Encrypted
>> > > > Virtualization
>> > > (SEV).
>> > > >
>> > > > Leo Duran (8):
>> > > >   MdePkg: Expand BaseIoLibIntrinsic (IoLib class) library
>> > > >   MdePkg/DxeIoLibCpuIo2: Add new Fifo routines in IoLib class
>> > > >   MdePkg/DxeIoLibEsal: Add new Fifo routines in IoLib class
>> > > >   MdePkg/PeiIoLibCpuIo: Add new Fifo routines in IoLib class
>> > > >   MdePkg/SmmIoLibSmmCpuIo2: Add new Fifo routines in IoLib class
>> > > >   IntelFrameworkPkg/DxeIoLibCpuIo: Add new Fifo routines in IoLib
>> class
>> > > >   UefiCpuPkg: Modify CpuIo2Dxe to use new IoLib class library
>> > > >   OvmfPkg: Modify QemuFwCfgLib to use new IoLib class library
>> > > >
>> > > >  IntelFrameworkPkg/Library/DxeIoLibCpuIo/IoLib.c    | 203
>> > > > +++++++++++++++++++++
>> > > >  MdePkg/Include/Library/IoLib.h                     | 158 ++++++++++++++++
>> > > >  .../BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf      |   6 +-
>> > > >  .../Library/BaseIoLibIntrinsic}/Ia32/IoFifo.asm    |   1 +
>> > > >  .../Library/BaseIoLibIntrinsic}/Ia32/IoFifo.nasm   |   1 +
>> > > >  MdePkg/Library/BaseIoLibIntrinsic/IoLibArm.c       | 182
>> > > > ++++++++++++++++++
>> > > >  MdePkg/Library/BaseIoLibIntrinsic/IoLibEbc.c       | 179
>> > > > ++++++++++++++++++
>> > > >  MdePkg/Library/BaseIoLibIntrinsic/IoLibIpf.c       | 201
>> > > > ++++++++++++++++++++
>> > > >  .../Library/BaseIoLibIntrinsic}/X64/IoFifo.asm     |   1 +
>> > > >  .../Library/BaseIoLibIntrinsic}/X64/IoFifo.nasm    |   1 +
>> > > >  MdePkg/Library/DxeIoLibCpuIo2/IoLib.c              | 203
>> > > > +++++++++++++++++++++
>> > > >  MdePkg/Library/DxeIoLibEsal/IoLib.c                | 203
>> > > > +++++++++++++++++++++
>> > > >  MdePkg/Library/PeiIoLibCpuIo/IoLib.c               | 203
>> > > > +++++++++++++++++++++
>> > > >  MdePkg/Library/SmmIoLibSmmCpuIo2/IoLib.c           | 203
>> > > > +++++++++++++++++++++
>> > > >  OvmfPkg/Library/QemuFwCfgLib/Ia32/IoLibExAsm.nasm  |  55 ------
>> > > >  OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.c        |  54 +-----
>> > > >  OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf      |   7 +-
>> > > >  OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf   |   7 +-
>> > > >  OvmfPkg/Library/QemuFwCfgLib/X64/IoLibExAsm.nasm   |  52 ------
>> > > >  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.c                   |   3 +-
>> > > >  UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf                 |  11 +-
>> > > >  UefiCpuPkg/CpuIo2Dxe/IoFifo.h                      | 176 ------------------
>> > > >  22 files changed, 1751 insertions(+), 359 deletions(-)  rename
>> > > > {UefiCpuPkg/CpuIo2Dxe =>
>> > > > MdePkg/Library/BaseIoLibIntrinsic}/Ia32/IoFifo.asm (94%)  rename
>> > > > {UefiCpuPkg/CpuIo2Dxe =>
>> > > > MdePkg/Library/BaseIoLibIntrinsic}/Ia32/IoFifo.nasm (94%)  rename
>> > > > {UefiCpuPkg/CpuIo2Dxe =>
>> > > > MdePkg/Library/BaseIoLibIntrinsic}/X64/IoFifo.asm (95%)  rename
>> > > > {UefiCpuPkg/CpuIo2Dxe =>
>> > > > MdePkg/Library/BaseIoLibIntrinsic}/X64/IoFifo.nasm (95%)  delete
>> > > > mode
>> > > > 100644 OvmfPkg/Library/QemuFwCfgLib/Ia32/IoLibExAsm.nasm
>> > > >  delete mode 100644
>> > > > OvmfPkg/Library/QemuFwCfgLib/X64/IoLibExAsm.nasm
>> > > >  delete mode 100644 UefiCpuPkg/CpuIo2Dxe/IoFifo.h
>> > > >
>> > > > --
>> > > > 1.9.1
>> > > >
>> > > > _______________________________________________
>> > > > edk2-devel mailing list
>> > > > edk2-devel@lists.01.org
>> > > > https://lists.01.org/mailman/listinfo/edk2-devel
>> > > _______________________________________________
>> > > edk2-devel mailing list
>> > > edk2-devel@lists.01.org
>> > > https://lists.01.org/mailman/listinfo/edk2-devel
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel


  reply	other threads:[~2017-01-12  4:25 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-10 23:55 [PATCH 0/8] IoLib class library Leo Duran
2017-01-10 23:55 ` [PATCH 1/8] MdePkg: Expand BaseIoLibIntrinsic (IoLib class) library Leo Duran
2017-01-12  1:33   ` Fan, Jeff
2017-01-12  1:36     ` Duran, Leo
2017-01-10 23:55 ` [PATCH 2/8] MdePkg/DxeIoLibCpuIo2: Add new Fifo routines in IoLib class Leo Duran
2017-01-10 23:55 ` [PATCH 3/8] MdePkg/DxeIoLibEsal: " Leo Duran
2017-01-10 23:55 ` [PATCH 4/8] MdePkg/PeiIoLibCpuIo: " Leo Duran
2017-01-10 23:55 ` [PATCH 5/8] MdePkg/SmmIoLibSmmCpuIo2: " Leo Duran
2017-01-10 23:55 ` [PATCH 6/8] IntelFrameworkPkg/DxeIoLibCpuIo: " Leo Duran
2017-01-10 23:55 ` [PATCH 7/8] UefiCpuPkg: Modify CpuIo2Dxe to use new IoLib class library Leo Duran
2017-01-10 23:55 ` [PATCH 8/8] OvmfPkg: Modify QemuFwCfgLib " Leo Duran
2017-01-11  1:41 ` [PATCH 0/8] " Gao, Liming
2017-01-11  1:45   ` Fan, Jeff
2017-01-11  1:52     ` Gao, Liming
2017-01-11  3:37   ` Duran, Leo
2017-01-11  4:06     ` Gao, Liming
2017-01-11 16:29       ` Duran, Leo
2017-01-12  1:22         ` Gao, Liming
2017-01-12  1:34           ` Duran, Leo
2017-01-12  1:39             ` Gao, Liming
2017-01-12  1:51               ` Duran, Leo
2017-01-12  4:25                 ` Gao, Liming [this message]
2017-01-12 17:13                   ` Jordan Justen
2017-01-17  2:50                   ` Gao, Liming
2017-01-12  0:25       ` Duran, Leo

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=4A89E2EF3DFEDB4C8BFDE51014F606A14D6CDAD7@shsmsx102.ccr.corp.intel.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