Hi Jiewen, Yes. This what we expect to upstream the code first. We will send UEFI/PI ECR for review once I upload RISC-V code to branch. Thanks Abner
-----Original Message----- From: Yao, Jiewen [mailto:[email protected]] Sent: Monday, May 09, 2016 9:37 AM To: Chang, Abner (HPS SW/FW Technologist) <[email protected]>; Justen, Jordan L <[email protected]>; [email protected] Cc: Gao, Liming <[email protected]> Subject: RE: [edk2] [PATCH] MdeModulePkg/DxeIplPeim: RISC-V arch DxeIpl. Hi Abner I think it is great to have more arch for UEFI. Thanks for your great contribution. As you mentioned, this RISC-V seems not in public UEFI standard yet, code might be subject to change. If so, do you think it might be a better idea to check in this as staging tree, which follow EDKII staging process? You can find link here https://github.com/tianocore/edk2-staging It is still public available. And you may find 2 examples (HTTPS-TLS, Customized-Secure-Boot) there. https://github.com/tianocore/edk2-staging/branches Once RISC-V is added to UEFI spec officially, we can move support from staging tree to trunk. Thank you Yao Jiewen > -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Chang, Abner (HPS SW/FW Technologist) > Sent: Sunday, May 8, 2016 7:19 PM > To: Justen, Jordan L <[email protected]>; > [email protected] > Cc: Gao, Liming <[email protected]> > Subject: Re: [edk2] [PATCH] MdeModulePkg/DxeIplPeim: RISC-V arch DxeIpl. > > Hi Jordan, > The UEFI/PI ECR for RISC-V is ready but not yet send to UEFI for > review. I have been told to upstream RISC-V code first and then submit > the spec. I will confirm this again. > Below response to your comments, > > --- > > MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 6 +- > > MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c | 79 > > ++++++++++++++++++++++ > >>>Is it Riscv64 or RiscV64? > >>>Like MdePkg, I think MdeModulePkg only upports achitectures in the > UEFI spec. > > This is typo, should be RiscV64. RISC-V arch UEFI spec is ready for review. > > > > > --- > > RiscVPkg/Include/RiscV.h | 105 +++ > > .../PeiServicesTablePointer.c | 121 +++ > > .../PeiServicesTablePointerLib.inf | 46 ++ > > .../PeiServicesTablePointerLib.uni | Bin 0 -> 2520 > bytes > > > >>> utf-8. (See other my other email.) > >>> > >>>I think this library should live in MdePkg, except MdePkg only > >>>supports architectures that are in the UEFI spec. > PeiServerTablePointer lib is very processor depends. PI spec changes > for this is ready for review as well. > > >>> RiscVPkg, > >>>This package seems to be mash up of things that possibly should be > >>>in MdePkg, UefiCpuPkg, a chipset package, and possibly platform > packages. > >>> > Modules and libraries under RiscVPkg are all processor specific. Like > Timer is provided by RISC-V processor itself instead of using > something else on platform. ResetVector, Sec, exception and etc. are all the > same. > UefiCpuPkg seems to me still not clean enough for common CPU usage. > Like sec and ResetVector, we still have to use the modules from other > processor package. So put RISC-V modules under its own package is mush > clean in my opinion for now. > > >>>What is the status of the QEMU port? > >>>I don't think we should put this upstream into EDK II until QEMU > >>>has it upstream. Maybe https://github.com/tianocore/edk2-platforms > >>>in a ovmf-riscv branch? > There is no official QEMU supports RISC-V yet. The QEMU which supports > RISC-V QEMU is on RISC-V Github. However, I have another RISC-V QEMU > port for PC/AT which uses PCI as the platform bus spec because RISC-V > platform spec is not yet ready. > The RISC-V QEMU PC/AT port is on my github. The detail is mentioned in > the readme file in RiscVVirtPkg. You also can refer to this link > https://github.com/AbnerChang/RiscVQemuPcat > > >>>What would prevent this from living under OvmfPkg? Say > >>>OvmfPkg/OvmfPkgRiscV64.dsc? > I think it should be no problem to use OvmfPkg as common > processor/platform emulator. Just you still can see few Intel things. > ARM QEMU implementation must be considered as well if we move RISC-V > to OvmfPkg, thus we can have the consistent implementation. > RISC-V QEMU implementation just follows ARM QEMU implement, that is to > have a separate package. But I agree with you that all > processors/platforms emulator should be under OvmfPkg. > > >>>This should be utf-8: > >>>BaseTools/Scripts/ConvertUni.py > I will fix this. > > I think I set the configurations when submit patches. Will figure it out. > Thanks > Abner > > -----Original Message----- > From: Jordan Justen [mailto:[email protected]] > Sent: Sunday, May 08, 2016 1:53 PM > To: Chang, Abner (HPS SW/FW Technologist) <[email protected]>; > [email protected] > Cc: [email protected] > Subject: Re: [edk2] [PATCH] MdeModulePkg/DxeIplPeim: RISC-V arch DxeIpl. > > On 2016-05-07 21:23:36, Abner Chang wrote: > > From: AbnerChang <[email protected]> > > > > git config settings. :) > > > The implementation of RISC-V DxeIpl. > > > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Abner Chang<[email protected]> > > space before < > > > --- > > MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 6 +- > > MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c | 79 > > ++++++++++++++++++++++ > > Is it Riscv64 or RiscV64? > > Like MdePkg, I think MdeModulePkg only supports achitectures in the > UEFI spec. > > -Jordan > > > 2 files changed, 84 insertions(+), 1 deletion(-) create mode > > 100644 MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c > > > > diff --git a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > > b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > > index 04ad928..13c0852 100644 > > --- a/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > > +++ b/MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf > > @@ -6,6 +6,7 @@ > > # needed to run the DXE Foundation. > > # > > # Copyright (c) 2006 - 2015, Intel Corporation. All rights > > reserved.<BR> > > +# Copyright (c) 2016, Hewlett Packard Enterprise Development LP. > > +All rights reserved.<BR> > > # This program and the accompanying materials # are licensed and > > made available under the terms and conditions of the BSD License # > > which accompanies this distribution. The full text of the license > > may be found at @@ -29,7 +30,7 @@ # # The following information is > > for reference only and not required by the build tools. > > # > > -# VALID_ARCHITECTURES = IA32 X64 IPF EBC (EBC is for > build only) AARCH64 > > +# VALID_ARCHITECTURES = IA32 X64 IPF EBC (EBC is for > build only) AARCH64 RISCV64 > > # > > > > [Sources] > > @@ -57,6 +58,9 @@ > > [Sources.ARM, Sources.AARCH64] > > Arm/DxeLoadFunc.c > > > > +[Sources.RISCV64] > > + Riscv64/DxeLoadFunc.c > > + > > [Packages] > > MdePkg/MdePkg.dec > > MdeModulePkg/MdeModulePkg.dec > > diff --git a/MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c > > b/MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c > > new file mode 100644 > > index 0000000..6b42e44 > > --- /dev/null > > +++ b/MdeModulePkg/Core/DxeIplPeim/Riscv64/DxeLoadFunc.c > > @@ -0,0 +1,79 @@ > > +/** @file > > + RISC-V specific functionality for DxeLoad. > > + > > + Copyright (c) 2016, Hewlett Packard Enterprise Development LP. > > + All rights reserved.<BR> > > + > > + This program and the accompanying materials are licensed and > > + made available under the terms and conditions of the BSD License > > + which accompanies this distribution. The full text of the license > > + may be found at http://opensource.org/licenses/bsd-license.php > > + > > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS > IS" > > +BASIS, > > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > EXPRESS OR IMPLIED. > > +**/ > > + > > +#include "DxeIpl.h" > > + > > +typedef > > +VOID* > > +(EFIAPI *DXEENTRYPOINT) ( > > + IN VOID *HobStart > > + ); > > + > > +/** > > + Transfers control to DxeCore. > > + > > + This function performs a CPU architecture specific operations to > execute > > + the entry point of DxeCore with the parameters of HobList. > > + It also installs EFI_END_OF_PEI_PPI to signal the end of PEI phase. > > + > > + @param DxeCoreEntryPoint The entry point of DxeCore. > > + @param HobList The start of HobList passed to > DxeCore. > > + > > +**/ > > +VOID > > +HandOffToDxeCore ( > > + IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint, > > + IN EFI_PEI_HOB_POINTERS HobList > > + ) > > +{ > > + VOID *BaseOfStack; > > + VOID *TopOfStack; > > + EFI_STATUS Status; > > + // > > + // > > + // Allocate 128KB for the Stack > > + // > > + BaseOfStack = AllocatePages (EFI_SIZE_TO_PAGES (STACK_SIZE)); > > + ASSERT (BaseOfStack != NULL); > > + > > + // > > + // Compute the top of the stack we were allocated. Pre-allocate a > > + UINTN // for safety. > > + // > > + TopOfStack = (VOID *) ((UINTN) BaseOfStack + EFI_SIZE_TO_PAGES > > + (STACK_SIZE) * EFI_PAGE_SIZE - CPU_STACK_ALIGNMENT); TopOfStack > = > > + ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT); > > + > > + // > > + // End of PEI phase signal > > + // > > + Status = PeiServicesInstallPpi (&gEndOfPeiSignalPpi); > > + ASSERT_EFI_ERROR (Status); > > + > > + // > > + // Update the contents of BSP stack HOB to reflect the real stack > > + info > passed to DxeCore. > > + // > > + UpdateStackHob ((EFI_PHYSICAL_ADDRESS)(UINTN) BaseOfStack, > > + STACK_SIZE); > > + > > + DEBUG ((EFI_D_INFO, "DXE Core new stack at %x, stack pointer at > > + %x\n", BaseOfStack, TopOfStack)); > > + > > + // > > + // Transfer the control to the entry point of DxeCore. > > + // > > + SwitchStack ( > > + (SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint, > > + HobList.Raw, > > + NULL, > > + TopOfStack > > + ); > > +} > > -- > > 1.9.5.msysgit.0 > > > > _______________________________________________ > > edk2-devel mailing list > > [email protected] > > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

