Hi Mike and Liming, After the LoongArch EDK2 base code was merged, I become one of the maintainers of LoongArch, but I don't have push permissions in the EDK2 Platformes repo. How do we get the push permissions in EDK2 LoongArch folder and EDK2 Platformes repo? LoongArch Maintainers: M: Chao Li [kilaterlee] M: Baoqi Zhang [zhangbaoqi-ls] R: Dongyan Qian [MarsDoge] Thanks, Chao -------- On 11月 17 2022, at 10:39 上午, xianglai li wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4054 > > The uploaded code generates firmware to support Linux launching on the LoongArch platform under qemu, > So it will run in a virtual machine. > > LoongArch is the general processor architecture of Loongson. > You can get the latest LoongArch documents or LoongArch tools at https://github.com/loongson/. > > You can also view the code through the Loongson community. > The edk2 code in Loongson community: > https://github.com/loongson/edk2/tree/LoongArch > The edk2-platform code in Loonson community: > https://github.com/loongson/edk2-platforms > The qemu code in Loongson community: > https://gitlab.com/qemu-project/qemu.git > The LoongArch Documentation in Loongson community: > https://github.com/loongson/LoongArch-Documentation/tree/main/docs > The all patches at: > https://github.com/loongson/edk2-platforms/tree/devel-LoongArch-patch > > v2 changes: > - Remove the inline assembly from StableTimerLib. > - troubleshoot TAB strings, convert TAB characters to spaces. > - remove smm related code, loongarch has no smm mode. > > v3 changes: > - delete ExtractHandler related code. > - Boot UEFI with low 256M memory. > - Modify common interrupt handling. > > v4 changes: > - Remove qemu flash related code. > - Modify fdt base address. > > v5 changes: > - Add Udf driver support. > - Split readme file into a separate patch. > - Modify the code style > - delete extra blank lines > - use the assembly function definition macros in MdePkg > - sort out the PCD variable Token value. > > v6 changes: > - Obtain the serial port base address by resolving fdt. > - Obtain the RTC base address by resolving fdt. > - Use the public 16550 serial port driver. > - Add Dxe Hob lib. > > Cc: Ard Biesheuvel > Cc: Bibo Mao > Cc: Chao Li > Cc: Leif Lindholm > Cc: Liming Gao > Cc: Michael D Kinney > > xianglai li (16): > Platform/Loongson: Add Serial Port library > Platform/Loongson: Support SEC > Platform/Loongson: Add PeiServicesTablePointerLib. > Platform/Loongson: Add QemuFwCfgLib. > Platform/Loongson: Add MmuLib. > Platform/Loongson: Add StableTimerLib. > Platform/Loongson: Support PEI phase. > Platform/Loongson: Add CPU DXE driver. > Platform/Loongson: Add PciCpuIoDxe driver. > Platform/Loongson: Add timer Dxe driver. > Platform/Loongson: Add RealTime Clock lib. > Platform/Loongson: Add Platform Boot Manager Lib. > Platform/Loongson: Add Reset System Lib. > Platform/Loongson: Add Hob Dxe Lib. > Platform/Loongson: Support Dxe > Platform/Loongson: Add Readme. > > .../LoongArchQemuPkg/Drivers/CpuDxe/CpuDxe.c | 367 +++++++ > .../LoongArchQemuPkg/Drivers/CpuDxe/CpuDxe.h | 199 ++++ > .../Drivers/CpuDxe/CpuDxe.inf | 59 ++ > .../Drivers/CpuDxe/LoongArch64/Exception.c | 335 +++++++ > .../Drivers/CpuDxe/LoongArch64/Fpu.S | 97 ++ > .../Drivers/CpuDxe/LoongArch64/LoongArch.S | 321 +++++++ > .../Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.c | 538 +++++++++++ > .../Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.h | 207 ++++ > .../Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.inf | 44 + > .../Drivers/StableTimerDxe/Timer.c | 388 ++++++++ > .../Drivers/StableTimerDxe/Timer.h | 172 ++++ > .../Drivers/StableTimerDxe/TimerConfig.S | 38 + > .../Drivers/StableTimerDxe/TimerDxe.inf | 44 + > .../Include/Guid/Early16550UartBaseAddress.h | 22 + > .../LoongArchQemuPkg/Include/Library/Cpu.h | 237 +++++ > .../LoongArchQemuPkg/Include/Library/MmuLib.h | 85 ++ > .../Include/Library/QemuFwCfgLib.h | 174 ++++ > .../Include/Library/StableTimer.h | 59 ++ > .../Fdt16550SerialPortHookLib.c | 57 ++ > .../Fdt16550SerialPortHookLib.inf | 38 + > .../LsRealTimeClockLib/LsRealTimeClock.h | 40 + > .../LsRealTimeClockLib/LsRealTimeClockLib.c | 335 +++++++ > .../LsRealTimeClockLib/LsRealTimeClockLib.inf | 47 + > .../LoongArchQemuPkg/Library/MmuLib/Mmu.S | 155 +++ > .../Library/MmuLib/MmuBaseLib.inf | 40 + > .../Library/MmuLib/MmuBaseLibPei.inf | 47 + > .../Library/MmuLib/MmuLibCore.c | 831 ++++++++++++++++ > .../Library/MmuLib/MmuLibCore.h | 40 + > .../Library/MmuLib/MmuLibCorePei.c | 231 +++++ > .../LoongArchQemuPkg/Library/MmuLib/mmu.h | 190 ++++ > .../LoongArchQemuPkg/Library/MmuLib/page.h | 280 ++++++ > .../LoongArchQemuPkg/Library/MmuLib/pte.h | 57 ++ > .../PeiServicesTablePointer.c | 79 ++ > .../PeiServicesTablePointer.h | 39 + > .../PeiServicesTablePointerLib.S | 40 + > .../PeiServicesTablePointerLib.inf | 32 + > .../PlatformBootManagerLib/PlatformBm.c | 742 +++++++++++++++ > .../PlatformBootManagerLib/PlatformBm.h | 112 +++ > .../PlatformBootManagerLib.inf | 75 ++ > .../PlatformBootManagerLib/QemuKernel.c | 81 ++ > .../QemuFwCfgLib/QemuFwCfgLibInternal.h | 63 ++ > .../Library/QemuFwCfgLib/QemuFwCfgPei.c | 117 +++ > .../Library/QemuFwCfgLib/QemuFwCfgPeiLib.c | 463 +++++++++ > .../Library/QemuFwCfgLib/QemuFwCfgPeiLib.inf | 46 + > .../BaseResetSystemAcpiGed.c | 146 +++ > .../BaseResetSystemAcpiGedLib.inf | 37 + > .../DxeResetSystemAcpiGed.c | 257 +++++ > .../DxeResetSystemAcpiGedLib.inf | 41 + > .../ResetSystemAcpiLib/ResetSystemAcpiGed.c | 128 +++ > .../ResetSystemAcpiLib/ResetSystemAcpiGed.h | 23 + > .../SerialPortLib/EarlySerialPortLib16550.c | 900 ++++++++++++++++++ > .../SerialPortLib/EarlySerialPortLib16550.inf | 46 + > .../Library/StableTimerLib/Count.S | 52 + > .../Library/StableTimerLib/TimerLib.c | 236 +++++ > .../Library/StableTimerLib/TimerLib.inf | 32 + > .../Library/VirtDxeHobLib/HobLib.c | 590 ++++++++++++ > .../Library/VirtDxeHobLib/VirtDxeHobLib.inf | 34 + > .../Loongson/LoongArchQemuPkg/Loongson.dec | 76 ++ > .../Loongson/LoongArchQemuPkg/Loongson.dsc | 647 +++++++++++++ > .../Loongson/LoongArchQemuPkg/Loongson.fdf | 347 +++++++ > .../LoongArchQemuPkg/Loongson.fdf.inc | 29 + > .../LoongArchQemuPkg/PlatformPei/Fv.c | 58 ++ > .../LoongArchQemuPkg/PlatformPei/MemDetect.c | 104 ++ > .../LoongArchQemuPkg/PlatformPei/Platform.c | 433 +++++++++ > .../LoongArchQemuPkg/PlatformPei/Platform.h | 86 ++ > .../PlatformPei/PlatformPei.inf | 74 ++ > Platform/Loongson/LoongArchQemuPkg/Readme.md | 60 ++ > .../LoongArchQemuPkg/Sec/LoongArch64/Start.S | 84 ++ > .../Loongson/LoongArchQemuPkg/Sec/SecMain.c | 494 ++++++++++ > .../Loongson/LoongArchQemuPkg/Sec/SecMain.inf | 51 + > Readme.md | 9 + > 71 files changed, 12737 insertions(+) > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/CpuDxe/CpuDxe.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/CpuDxe/CpuDxe.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/CpuDxe/CpuDxe.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/CpuDxe/LoongArch64/Exception.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/CpuDxe/LoongArch64/Fpu.S > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/CpuDxe/LoongArch64/LoongArch.S > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/StableTimerDxe/Timer.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/StableTimerDxe/Timer.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/StableTimerDxe/TimerConfig.S > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Drivers/StableTimerDxe/TimerDxe.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Include/Guid/Early16550UartBaseAddress.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Include/Library/Cpu.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Include/Library/MmuLib.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Include/Library/QemuFwCfgLib.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Include/Library/StableTimer.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/Fdt16550SerialPortHookLib/Fdt16550SerialPortHookLib.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/Fdt16550SerialPortHookLib/Fdt16550SerialPortHookLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/LsRealTimeClockLib/LsRealTimeClock.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/LsRealTimeClockLib/LsRealTimeClockLib.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/LsRealTimeClockLib/LsRealTimeClockLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/Mmu.S > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/MmuBaseLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/MmuBaseLibPei.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/MmuLibCore.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/MmuLibCore.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/MmuLibCorePei.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/mmu.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/page.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/MmuLib/pte.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.S > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/PlatformBootManagerLib/PlatformBm.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/PlatformBootManagerLib/PlatformBm.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/PlatformBootManagerLib/QemuKernel.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/QemuFwCfgLib/QemuFwCfgLibInternal.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/QemuFwCfgLib/QemuFwCfgPei.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/QemuFwCfgLib/QemuFwCfgPeiLib.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/QemuFwCfgLib/QemuFwCfgPeiLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/ResetSystemAcpiLib/BaseResetSystemAcpiGed.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/ResetSystemAcpiLib/BaseResetSystemAcpiGedLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/ResetSystemAcpiLib/DxeResetSystemAcpiGed.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/ResetSystemAcpiLib/DxeResetSystemAcpiGedLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/ResetSystemAcpiLib/ResetSystemAcpiGed.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/ResetSystemAcpiLib/ResetSystemAcpiGed.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/SerialPortLib/EarlySerialPortLib16550.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/SerialPortLib/EarlySerialPortLib16550.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/StableTimerLib/Count.S > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/StableTimerLib/TimerLib.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/StableTimerLib/TimerLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/VirtDxeHobLib/HobLib.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Library/VirtDxeHobLib/VirtDxeHobLib.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Loongson.dec > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Loongson.dsc > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Loongson.fdf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc > create mode 100644 Platform/Loongson/LoongArchQemuPkg/PlatformPei/Fv.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/PlatformPei/Platform.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/PlatformPei/Platform.h > create mode 100644 Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Readme.md > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Sec/LoongArch64/Start.S > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Sec/SecMain.c > create mode 100644 Platform/Loongson/LoongArchQemuPkg/Sec/SecMain.inf > > -- > 2.31.1 >