public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "xianglai" <lixianglai@loongson.cn>
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>,
	Bibo Mao <maobibo@loongson.cn>, Chao Li <lichao@loongson.cn>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Liming Gao <gaoliming@byosoft.com.cn>,
	Michael D Kinney <michael.d.kinney@intel.com>
Subject: [edk2-platforms][PATCH V6 00/16] Platform: Add Loongson support.
Date: Thu, 17 Nov 2022 10:39:26 +0800	[thread overview]
Message-ID: <cover.1668652102.git.lixianglai@loongson.cn> (raw)

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 <ardb+tianocore@kernel.org>
Cc: Bibo Mao <maobibo@loongson.cn>
Cc: Chao Li <lichao@loongson.cn>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Michael D Kinney <michael.d.kinney@intel.com>

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


             reply	other threads:[~2022-11-17  2:40 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-17  2:39 xianglai [this message]
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 01/16] Platform/Loongson: Add Serial Port library xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 02/16] Platform/Loongson: Support SEC xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 03/16] Platform/Loongson: Add PeiServicesTablePointerLib xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 04/16] Platform/Loongson: Add QemuFwCfgLib xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 05/16] Platform/Loongson: Add MmuLib xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 06/16] Platform/Loongson: Add StableTimerLib xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 07/16] Platform/Loongson: Support PEI phase xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 08/16] Platform/Loongson: Add CPU DXE driver xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 09/16] Platform/Loongson: Add PciCpuIoDxe driver xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 10/16] Platform/Loongson: Add timer Dxe driver xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 11/16] Platform/Loongson: Add RealTime Clock lib xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 12/16] Platform/Loongson: Add Platform Boot Manager Lib xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 13/16] Platform/Loongson: Add Reset System Lib xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 14/16] Platform/Loongson: Add Hob Dxe Lib xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 15/16] Platform/Loongson: Support Dxe xianglai
2022-11-17  2:39 ` [edk2-platforms][PATCH V6 16/16] Platform/Loongson: Add Readme xianglai
2022-11-21  9:08 ` [edk2-platforms][PATCH V6 00/16] Platform: Add Loongson support Chao Li

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=cover.1668652102.git.lixianglai@loongson.cn \
    --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