Re: [edk2-devel] [PATCH v6 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V

2023-04-06 Thread Andrei Warkentin
Thanks Sunil, I have in fact missed your email.

Will apply your feedback, retest and resend.

A

> -Original Message-
> From: Sunil V L 
> Sent: Thursday, April 6, 2023 12:00 AM
> To: Warkentin, Andrei 
> Cc: devel@edk2.groups.io; Daniel Schaefer ;
> Kinney, Michael D ; Gao, Liming
> ; Liu, Zhiguang ; Gerd
> Hoffmann 
> Subject: Re: [PATCH v6 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V
> 
> Hi Andrei,
> 
> I had couple of questions on previous version of this patch. Adding them
> inline again in case you had missed them. Please check if they are valid.
> 
> Also, I think it would be better to have single directory
> BaseSerialPortLibRiscVSbiLib and inside that we can have both INF files.
> This way we can share UNI files etc between both libraries.
> 
> On Tue, Apr 04, 2023 at 11:43:58AM -0500, Andrei Warkentin wrote:
> > These are implementations of SerialPortLib using SBI console services.
> > - BaseSerialPortLibRiscVSbiLib is appropriate for SEC/PEI (XIP)
> > environments
> > - BaseSerialPortLibRiscVSbiLibRam is appropriate for PrePI/DXE
> > environments
> >
> > Tested with:
> > - Qemu RiscVVirt (non-DBCN case, backed by UART)
> > - TinyEMU + RiscVVirt (non-DBCN case, HTIF)
> > - TinyEMU + RiscVVirt (DBCN case, HTIF)
> >
> > Cc: Daniel Schaefer 
> > Cc: Sunil V L 
> > Cc: Michael D Kinney 
> > Cc: Liming Gao 
> > Cc: Zhiguang Liu 
> > Acked-by: Gerd Hoffmann 
> > Signed-off-by: Andrei Warkentin 
> > ---
> >  MdePkg/MdePkg.dsc  
> > |   2 +
> >
> MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.in
> f   |  39 +++
> >
> MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiL
> ibRam.inf |  36 +++
> >
> MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.c
> | 233 
> >
> MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiL
> ibRam.c   | 288 
> >
> MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.u
> ni   |  16 ++
> >
> > MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVS
> > biLibRam.uni |  16 ++
> >  7 files changed, 630 insertions(+)
> >
> > diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc index
> > 0ac7618b4623..ceccc078ff04 100644
> > --- a/MdePkg/MdePkg.dsc
> > +++ b/MdePkg/MdePkg.dsc
> > @@ -192,5 +192,7 @@ [Components.ARM, Components.AARCH64]
> >
> >  [Components.RISCV64]
> >MdePkg/Library/BaseRiscVSbiLib/BaseRiscVSbiLib.inf
> > +
> > + MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSb
> > + iLib.inf
> > + MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRisc
> > + VSbiLibRam.inf
> >
> >  [BuildOptions]
> > diff --git
> > a/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSb
> > iLib.inf
> > b/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSb
> > iLib.inf
> > new file mode 100644
> > index ..09cf59f190f6
> > --- /dev/null
> > +++ b/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRis
> > +++ cVSbiLib.inf
> > @@ -0,0 +1,39 @@
> > +## @file
> > +#  Serial Port Library backed by SBI console.
> > +#
> > +#  Meant for SEC and PEI (XIP) environments.
> > +#
> > +#  Due to limitations of SBI console interface and XIP environments #
> > +(on use of globals), this library instance does not implement reading
> > +#  and polling the serial port. See PrePiDxeSerialPortLibRiscVSbi for
> > +#  the full-featured variant meant for PrePi and DXE environments.
> > +#
> > +#  Copyright (c) 2023, Intel Corporation. All rights reserved. #
> > +#  SPDX-License-Identifier: BSD-2-Clause-Patent # # ##
> > +
> > +[Defines]
> > +  INF_VERSION= 0x0001001B
> > +  BASE_NAME  = BaseSerialPortLibRiscVSbiLib
> > +  MODULE_UNI_FILE= BaseSerialPortLibRiscVSbiLib.uni
> > +  FILE_GUID  = 639fad38-4bfd-4eb9-9f09-e97c7947d480
> > +  MODULE_TYPE= BASE
> > +  VERSION_STRING = 1.0
> > +  LIBRARY_CLASS  = SerialPortLib | SEC PEI_CORE PEIM
> > +
> > +
> > +#
> > +#  VALID_ARCHITECTURES   = RISCV64
> > +#
> > +
> > +[Sources]
> > +  BaseSerialPortLibRiscVSbiLib.c
> > +
> > +[Packages]
> > +  MdePkg/MdePkg.dec
> > +
> > +[LibraryClasses]
> > +  RiscVSbiLib
> > diff --git
> > a/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRisc
> > VSbiLibRam.inf
> > b/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRisc
> > VSbiLibRam.inf
> > new file mode 100644
> > index ..b7ad1548a309
> > --- /dev/null
> > +++ b/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLib
> > +++ RiscVSbiLibRam.inf
> > @@ -0,0 +1,36 @@
> > +## @file
> > +#  Serial Port Library backed by SBI console.
> > +#
> > +#  Meant for PrePi and DXE environments (where globals are allowed).
> > +See #  BaseSerialPortLibRiscVSbiLib for a reduced variant 

Re: [edk2-devel] [PATCH v6 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V

2023-04-05 Thread Sunil V L
Hi Andrei,

I had couple of questions on previous version of this patch. Adding them
inline again in case you had missed them. Please check if they are
valid.

Also, I think it would be better to have single directory
BaseSerialPortLibRiscVSbiLib and inside that we can have both INF files.
This way we can share UNI files etc between both libraries.

On Tue, Apr 04, 2023 at 11:43:58AM -0500, Andrei Warkentin wrote:
> These are implementations of SerialPortLib using SBI console services.
> - BaseSerialPortLibRiscVSbiLib is appropriate for SEC/PEI (XIP) environments
> - BaseSerialPortLibRiscVSbiLibRam is appropriate for PrePI/DXE environments
> 
> Tested with:
> - Qemu RiscVVirt (non-DBCN case, backed by UART)
> - TinyEMU + RiscVVirt (non-DBCN case, HTIF)
> - TinyEMU + RiscVVirt (DBCN case, HTIF)
> 
> Cc: Daniel Schaefer 
> Cc: Sunil V L 
> Cc: Michael D Kinney 
> Cc: Liming Gao 
> Cc: Zhiguang Liu 
> Acked-by: Gerd Hoffmann 
> Signed-off-by: Andrei Warkentin 
> ---
>  MdePkg/MdePkg.dsc
>   |   2 +
>  MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf 
>   |  39 +++
>  
> MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
>  |  36 +++
>  MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.c   
>   | 233 
>  
> MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.c
>| 288 
>  MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.uni 
>   |  16 ++
>  
> MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.uni
>  |  16 ++
>  7 files changed, 630 insertions(+)
> 
> diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc
> index 0ac7618b4623..ceccc078ff04 100644
> --- a/MdePkg/MdePkg.dsc
> +++ b/MdePkg/MdePkg.dsc
> @@ -192,5 +192,7 @@ [Components.ARM, Components.AARCH64]
>  
>  [Components.RISCV64]
>MdePkg/Library/BaseRiscVSbiLib/BaseRiscVSbiLib.inf
> +  
> MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf
> +  
> MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
>  
>  [BuildOptions]
> diff --git 
> a/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf
>  
> b/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf
> new file mode 100644
> index ..09cf59f190f6
> --- /dev/null
> +++ 
> b/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf
> @@ -0,0 +1,39 @@
> +## @file
> +#  Serial Port Library backed by SBI console.
> +#
> +#  Meant for SEC and PEI (XIP) environments.
> +#
> +#  Due to limitations of SBI console interface and XIP environments
> +#  (on use of globals), this library instance does not implement reading
> +#  and polling the serial port. See PrePiDxeSerialPortLibRiscVSbi for
> +#  the full-featured variant meant for PrePi and DXE environments.
> +#
> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.
> +#
> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +#
> +##
> +
> +[Defines]
> +  INF_VERSION= 0x0001001B
> +  BASE_NAME  = BaseSerialPortLibRiscVSbiLib
> +  MODULE_UNI_FILE= BaseSerialPortLibRiscVSbiLib.uni
> +  FILE_GUID  = 639fad38-4bfd-4eb9-9f09-e97c7947d480
> +  MODULE_TYPE= BASE
> +  VERSION_STRING = 1.0
> +  LIBRARY_CLASS  = SerialPortLib | SEC PEI_CORE PEIM
> +
> +
> +#
> +#  VALID_ARCHITECTURES   = RISCV64
> +#
> +
> +[Sources]
> +  BaseSerialPortLibRiscVSbiLib.c
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +
> +[LibraryClasses]
> +  RiscVSbiLib
> diff --git 
> a/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
>  
> b/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
> new file mode 100644
> index ..b7ad1548a309
> --- /dev/null
> +++ 
> b/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
> @@ -0,0 +1,36 @@
> +## @file
> +#  Serial Port Library backed by SBI console.
> +#
> +#  Meant for PrePi and DXE environments (where globals are allowed). See
> +#  BaseSerialPortLibRiscVSbiLib for a reduced variant appropriate for SEC
> +#  and PEI (XIP) environments.
> +#
> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.
> +#
> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +#
> +##
> +
> +[Defines]
> +  INF_VERSION= 0x0001001B
> +  BASE_NAME  = BaseSerialPortLibRiscVSbiLibRam
> +  MODULE_UNI_FILE= BaseSerialPortLibRiscVSbiLibRam.uni
> +  FILE_GUID  = 872af743-ab56-45b4-a065-602567f4820c
> +  MODULE_TYPE= BASE
> +  VERSION_STRING = 1.0
> +  LIBRARY_CLASS  = SerialPortLib | SEC DXE_CORE 

[edk2-devel] [PATCH v6 2/3] MdePkg: add SBI-based SerialPortLib for RISC-V

2023-04-04 Thread Andrei Warkentin
These are implementations of SerialPortLib using SBI console services.
- BaseSerialPortLibRiscVSbiLib is appropriate for SEC/PEI (XIP) environments
- BaseSerialPortLibRiscVSbiLibRam is appropriate for PrePI/DXE environments

Tested with:
- Qemu RiscVVirt (non-DBCN case, backed by UART)
- TinyEMU + RiscVVirt (non-DBCN case, HTIF)
- TinyEMU + RiscVVirt (DBCN case, HTIF)

Cc: Daniel Schaefer 
Cc: Sunil V L 
Cc: Michael D Kinney 
Cc: Liming Gao 
Cc: Zhiguang Liu 
Acked-by: Gerd Hoffmann 
Signed-off-by: Andrei Warkentin 
---
 MdePkg/MdePkg.dsc  
|   2 +
 MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf   
|  39 +++
 
MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
 |  36 +++
 MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.c 
| 233 
 
MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.c
   | 288 
 MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.uni   
|  16 ++
 
MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.uni
 |  16 ++
 7 files changed, 630 insertions(+)

diff --git a/MdePkg/MdePkg.dsc b/MdePkg/MdePkg.dsc
index 0ac7618b4623..ceccc078ff04 100644
--- a/MdePkg/MdePkg.dsc
+++ b/MdePkg/MdePkg.dsc
@@ -192,5 +192,7 @@ [Components.ARM, Components.AARCH64]
 
 [Components.RISCV64]
   MdePkg/Library/BaseRiscVSbiLib/BaseRiscVSbiLib.inf
+  MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf
+  
MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
 
 [BuildOptions]
diff --git 
a/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf 
b/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf
new file mode 100644
index ..09cf59f190f6
--- /dev/null
+++ 
b/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.inf
@@ -0,0 +1,39 @@
+## @file
+#  Serial Port Library backed by SBI console.
+#
+#  Meant for SEC and PEI (XIP) environments.
+#
+#  Due to limitations of SBI console interface and XIP environments
+#  (on use of globals), this library instance does not implement reading
+#  and polling the serial port. See PrePiDxeSerialPortLibRiscVSbi for
+#  the full-featured variant meant for PrePi and DXE environments.
+#
+#  Copyright (c) 2023, Intel Corporation. All rights reserved.
+#
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+#
+##
+
+[Defines]
+  INF_VERSION= 0x0001001B
+  BASE_NAME  = BaseSerialPortLibRiscVSbiLib
+  MODULE_UNI_FILE= BaseSerialPortLibRiscVSbiLib.uni
+  FILE_GUID  = 639fad38-4bfd-4eb9-9f09-e97c7947d480
+  MODULE_TYPE= BASE
+  VERSION_STRING = 1.0
+  LIBRARY_CLASS  = SerialPortLib | SEC PEI_CORE PEIM
+
+
+#
+#  VALID_ARCHITECTURES   = RISCV64
+#
+
+[Sources]
+  BaseSerialPortLibRiscVSbiLib.c
+
+[Packages]
+  MdePkg/MdePkg.dec
+
+[LibraryClasses]
+  RiscVSbiLib
diff --git 
a/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
 
b/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
new file mode 100644
index ..b7ad1548a309
--- /dev/null
+++ 
b/MdePkg/Library/BaseSerialPortLibRiscVSbiLibRam/BaseSerialPortLibRiscVSbiLibRam.inf
@@ -0,0 +1,36 @@
+## @file
+#  Serial Port Library backed by SBI console.
+#
+#  Meant for PrePi and DXE environments (where globals are allowed). See
+#  BaseSerialPortLibRiscVSbiLib for a reduced variant appropriate for SEC
+#  and PEI (XIP) environments.
+#
+#  Copyright (c) 2023, Intel Corporation. All rights reserved.
+#
+#  SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+#
+##
+
+[Defines]
+  INF_VERSION= 0x0001001B
+  BASE_NAME  = BaseSerialPortLibRiscVSbiLibRam
+  MODULE_UNI_FILE= BaseSerialPortLibRiscVSbiLibRam.uni
+  FILE_GUID  = 872af743-ab56-45b4-a065-602567f4820c
+  MODULE_TYPE= BASE
+  VERSION_STRING = 1.0
+  LIBRARY_CLASS  = SerialPortLib | SEC DXE_CORE DXE_DRIVER 
DXE_RUNTIME_DRIVER UEFI_DRIVER UEFI_APPLICATION
+
+
+#
+#  VALID_ARCHITECTURES   = RISCV64
+#
+
+[Sources]
+  BaseSerialPortLibRiscVSbiLibRam.c
+
+[Packages]
+  MdePkg/MdePkg.dec
+
+[LibraryClasses]
+  RiscVSbiLib
diff --git 
a/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.c 
b/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.c
new file mode 100644
index ..0ad5931be3ae
--- /dev/null
+++ b/MdePkg/Library/BaseSerialPortLibRiscVSbiLib/BaseSerialPortLibRiscVSbiLib.c
@@ -0,0 +1,233 @@
+/** @file
+  Serial Port Library backed by SBI console.
+
+  Meant for SEC and PEI (XIP) environments.
+
+  Due to