From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id F28209414A6 for ; Fri, 3 Nov 2023 07:08:29 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=8JBvR66xNLOSTjBRXO5z4yjVEFYyKRDXYtxQkrdVm1Q=; c=relaxed/simple; d=groups.io; h=Message-ID:Date:MIME-Version:User-Agent:Subject:To:Cc:References:From:In-Reply-To:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type; s=20140610; t=1698995308; v=1; b=Fgkhh47kIfdkRa7M8h9kizQUgueSiJgZTof8cyojcXmvBVrETGFXOdkv69jzD9gyoOr7ldMF HSOz0mnetSUzugv/5ivisfFf6rLOuSta4YHUKo2nGbgLGE65H21JI6q7hwE07JJTghZ9Z9lOdi4 FaDuBHjIEouQOMQaVAiLprf0= X-Received: by 127.0.0.2 with SMTP id 5kC0YY7687511xKnc66qyFdj; Fri, 03 Nov 2023 00:08:28 -0700 X-Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by mx.groups.io with SMTP id smtpd.web10.36388.1698995307072849092 for ; Fri, 03 Nov 2023 00:08:28 -0700 X-Received: from loongson.cn (unknown [10.40.24.149]) by gateway (Coremail) with SMTP id _____8AxXOpinERl+6o2AA--.14369S3; Fri, 03 Nov 2023 15:08:18 +0800 (CST) X-Received: from [10.40.24.149] (unknown [10.40.24.149]) by localhost.localdomain (Coremail) with SMTP id AQAAf8AxH91dnERlDv44AA--.60091S3; Fri, 03 Nov 2023 15:08:14 +0800 (CST) Message-ID: <0a6b9701-4e48-451e-bc7e-3a683abc2246@loongson.cn> Date: Fri, 3 Nov 2023 15:08:13 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [edk2-devel] [PATCH v1 00/29] Enable LoongArch virtual machine in edk2 To: devel@edk2.groups.io, ray.ni@intel.com Cc: "Kinney, Michael D" , "Gao, Liming" , "Liu, Zhiguang" , "Dong, Eric" , "Kumar, Rahul R" , Gerd Hoffmann , Leif Lindholm , Ard Biesheuvel , Abner Chang , Daniel Schaefer , Sami Mujawar , "Yao, Jiewen" , "Justen, Jordan L" References: <20231103010302.4052990-1-lichao@loongson.cn> From: "Chao Li" In-Reply-To: X-CM-TRANSID: AQAAf8AxH91dnERlDv44AA--.60091S3 X-CM-SenderInfo: xolfxt3r6o00pqjv00gofq/1tbiAQAECGVEWKjEHgADsF X-Coremail-Antispam: 1Uk129KBj9fXoWftF4UZr1DKryDuFy5GFWkZrc_yoW5Jry5Zo W8Gr48Ar45Jrn5C34rKwsxJrW3XF47Ars8Xr4xZay7tF15Aw1UKayDJryFq3y5XF95uw1U G345J3WkJFy2qr4fl-sFpf9Il3svdjkaLaAFLSUrUUUU8b8apTn2vfkv8UJUUUU8wcxFpf 9Il3svdxBIdaVrn0kqx4xG6I8I3I0E8cIF7480aVAKz4kxYxn0WfASr-VFAUDa7-sFnT9f nUUIcSsGvfJTRUUUbfAYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4 v20xvaj40_Wr0E3s1l1IIY67AEw4v_Jrv_JF1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0 rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW8JVW5JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267 AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIE14v26r4UJVWxJr1l84ACjcxK6I8E87Iv6xkF7I0E 14v26r4UJVWxJr1ln4kS14v26r1Y6r17M2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6x kI12xvs2x26I8E6xACxx1l5I8CrVC20s02628v4x8GjsIEw4AK0wAv7VC0I7IYx2IY67AK xVWUAVWUtwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcV AKI48JMx8GjcxK6IxK0xIIj40E5I8CrwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkE bVWUJVW8JwCFI7km07C267AKxVWUAVWUtwC20s026c02F40E14v26r106r1rMI8I3I0E74 80Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkGc2Ij64vIr41lIxAIcVC0 I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04 k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7Cj xVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU83fHUUUUUU== Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lichao@loongson.cn List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: f5dCl2XAZBUUwVhZgaTG3m0Wx7686176AA= Content-Type: multipart/alternative; boundary="------------nCitvhHcfI00vNAMW802Mxaf" X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=Fgkhh47k; dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io --------------nCitvhHcfI00vNAMW802Mxaf Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Ray, Thanks for review. I think the MpInitLib is necessary, because this library will serve PEI and DEX phases. In LoongArch, the MP initialization function will be  called first in the PEI phase. It will wake up all of AP, collect accurate online cores, and all APs will fill in their self information to prepare for next wakeup. The second time the MP initialization function is called will in DXE phase, usually located CpuDxe, I guess you are checked this code. This time the MP service HOB will be brought from PEI to DXE phase, and the MP protocal will be registered to prepare for service DXE phase. Like you saied, why not use the MP PPI? I think it's just that the code hasn't been added yet, and I think LoongArch will definitely need the MP PPI in the future, like memory trainning, configure APs local registers, etc. Thanks, Chao 在 2023/11/3 13:10, Ni, Ray 写道: > Chao, > MpInitLib is to avoid code duplication between CpuMpPeim and CpuDxe. > If you only need MP protocol but not MP PPI, do you still need to add > MpInitLib? > Can MpInitLib code be included in CpuDxe folder? > > Thanks, > Ray > ------------------------------------------------------------------------ > *From:* Chao Li > *Sent:* Friday, November 3, 2023 9:03 AM > *To:* devel@edk2.groups.io > *Cc:* Kinney, Michael D ; Gao, Liming > ; Liu, Zhiguang ; > Dong, Eric ; Ni, Ray ; Kumar, > Rahul R ; Gerd Hoffmann ; > Leif Lindholm ; Ard Biesheuvel > ; Abner Chang ; Daniel > Schaefer ; Sami Mujawar ; > Yao, Jiewen ; Justen, Jordan L > > *Subject:* [PATCH v1 00/29] Enable LoongArch virtual machine in edk2 > This patch set will enable LoongArch virtual machine in edk2, the new > LoongArch virtual machine is located in OvmfPkg/LoongArchVirt/, it is a > generic platform that dose not require any actual hardware. > > Patch1-Patch14: Submit the common library and driver for LoongArch > virtual machine and real hardware. Such as base help functions, > exception handel, MMU library, multiprocessor library etc. > > Patch15-Patch16: Add PrePiCpuIoSize for LoongArch64. and move ArmVirtPkg > two PCDs into OvmfPkg for easier use by other architectures. > > Patch17-Patch29: LoongArch virtual machine private code, include SEC and > PEI phase code, some library and drivers. > > Modfied modues: MdePkg, UefiCpuPkg, EmbeddedPkg, ArmVirtPkg, OvmfPkg. > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4584 > > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Zhiguang Liu > Cc: Eric Dong > Cc: Ray Ni > Cc: Rahul Kumar > Cc: Gerd Hoffmann > Cc: Leif Lindholm > Cc: Ard Biesheuvel > Cc: Abner Chang > Cc: Daniel Schaefer > Cc: Sami Mujawar > Cc: Jiewen Yao > Cc: Jordan Justen > > Chao Li (29): >   MdePkg: Add the header file named Csr.h for LoongArch64 >   MdePkg: Add LoongArch64 FPU function set into BaseCpuLib >   MdePkg: Add LoongArch64 exception function set into BaseLib >   MdePkg: Add LoongArch64 local interrupt function set into BaseLib >   MdePkg: Add LoongArch Cpucfg function >   MdePkg: Add read stable counter operation for LoongArch >   MdePkg: Add CSR operation for LoongArch >   MdePkg: Add IOCSR operation for LoongArch >   UefiCpuPkg: Add LoongArch64 CPU Timer library >   UefiCpuPkg: Add CPU exception library for LoongArch >   UefiCpuPkg: Add CpuMmuLib.h to UefiCpuPkg >   UefiCpuPkg: Add LoongArch64CpuMmuLib to UefiCpuPkg >   UefiCpuPkg: Add multiprocessor library for LoongArch64 >   UefiCpuPkg: Add CpuDxe driver for LoongArch64 >   EmbeddedPkg: Add PcdPrePiCpuIoSize width for LOONGARCH64 >   ArmVirtPkg: Move PCD of FDT base address and FDT padding to OvmfPkg >   OvmfPkg/LoongArchVirt: Add PciCpuIo2Dxe module >   OvmfPkg/LoongArchVirt: Add stable timer driver >   OvmfPkg/LoongArchVirt: Add a NULL library named >     CollectApResouceLibNull >   OvmfPkg/LoongArchVirt: Add serial port library >   OvmfPkg/LoongArchVirt: Add real time clock library >   OvmfPkg/LoongArchVirt: Add NorFlashQemuLib >   OvmfPkg/LoongArchVirt: Add PeiServiceTablePointerLib >   OvmfPkg/LoongArchVirt: Add platform boot manager library >   OvmfPkg/LoongArchVirt: Add FdtQemuFwCfgLib >   OvmfPkg/LoongArchVirt: Add reset system library >   OvmfPkg/LoongArchVirt: Support SEC phase >   OvmfPkg/LoongArchVirt: Support PEI phase >   OvmfPkg/LoongArchVirt: Add build file > >  ArmVirtPkg/ArmVirtCloudHv.dsc                 |    2 +- >  ArmVirtPkg/ArmVirtKvmTool.dsc                 |    2 +- >  ArmVirtPkg/ArmVirtPkg.dec                     |   14 - >  ArmVirtPkg/ArmVirtQemu.dsc                    |    2 +- >  ArmVirtPkg/ArmVirtQemuKernel.dsc              |    2 +- >  ArmVirtPkg/ArmVirtXen.dsc                     |    2 +- >  .../ArmVirtPsciResetSystemPeiLib.inf          |    3 +- >  .../CloudHvVirtMemInfoPeiLib.inf              |    3 +- >  .../DebugLibFdtPL011UartFlash.inf             |    3 +- >  .../EarlyFdt16550SerialPortHookLib.inf        |    3 +- >  .../EarlyFdtPL011SerialPortLib.inf            |    3 +- >  .../KvmtoolPlatformPeiLib.inf                 |    5 +- >  .../Library/PlatformPeiLib/PlatformPeiLib.inf |   10 +- >  .../QemuVirtMemInfoPeiLib.inf                 |    3 +- >  .../PrePi/ArmVirtPrePiUniCoreRelocatable.inf  |    3 +- >  EmbeddedPkg/EmbeddedPkg.dec                   |    3 + >  MdePkg/Include/Library/BaseLib.h              |  221 +++ >  MdePkg/Include/Library/CpuLib.h               |   37 +- >  MdePkg/Include/Protocol/DebugSupport.h        |   76 +- >  MdePkg/Include/Register/LoongArch64/Cpucfg.h  |  565 ++++++ >  MdePkg/Include/Register/LoongArch64/Csr.h     |  221 +++ >  MdePkg/Library/BaseCpuLib/BaseCpuLib.inf      |    7 +- >  .../Library/BaseCpuLib/LoongArch/DisableFpu.S |   17 + >  .../Library/BaseCpuLib/LoongArch/EnableFpu.S  |   17 + >  .../BaseCpuLib/LoongArch/InitializeFpu.S      |   51 + >  MdePkg/Library/BaseLib/BaseLib.inf            |    6 + >  MdePkg/Library/BaseLib/LoongArch64/AsmCsr.S   |  422 +++++ >  MdePkg/Library/BaseLib/LoongArch64/Cpucfg.S   |   26 + >  MdePkg/Library/BaseLib/LoongArch64/Csr.c      |   81 + >  .../BaseLib/LoongArch64/DisableInterrupts.S   |   22 +- >  .../BaseLib/LoongArch64/EnableInterrupts.S    |   22 +- >  .../BaseLib/LoongArch64/ExceptionBase.S       |   41 + >  MdePkg/Library/BaseLib/LoongArch64/IoCsr.S    |  120 ++ >  .../BaseLib/LoongArch64/ReadStableCounter.S   |   24 + >  MdePkg/MdePkg.ci.yaml                         |    3 +- >  .../Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.c       |  547 ++++++ >  .../Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.inf     |   45 + >  .../Drivers/StableTimerDxe/Timer.c            |  381 ++++ >  .../Drivers/StableTimerDxe/Timer.h            |  127 ++ >  .../Drivers/StableTimerDxe/TimerDxe.inf       |   41 + >  .../CollectApResourceLibNull.c                |   35 + >  .../CollectApResourceLibNull.inf              |   32 + >  .../CollectApResourceLibNull.uni              |    9 + >  .../EarlyFdtSerialPortLib16550.c              |  824 +++++++++ >  .../EarlyFdtSerialPortLib16550.inf            |   47 + >  .../EarlyFdt16550SerialPortHookLib.c          |  136 ++ >  .../EarlyFdt16550SerialPortHookLib.inf        |   36 + >  .../Fdt16550SerialPortHookLib.c               |   41 + >  .../Fdt16550SerialPortHookLib.inf             |   33 + >  .../Fdt16550SerialPortHookLib.uni             |   13 + >  .../FdtQemuFwCfgLib/FdtQemuFwCfgPeiLib.c      |  505 ++++++ >  .../FdtQemuFwCfgLib/FdtQemuFwCfgPeiLib.inf    |   42 + >  .../FdtQemuFwCfgLib/QemuFwCfgLibInternal.h    |   73 + >  .../Library/FdtQemuFwCfgLib/QemuFwCfgPei.c    |  117 ++ >  .../DxeLsRealTimeClockLib.c                   |  333 ++++ >  .../DxeLsRealTimeClockLib.inf                 |   42 + >  .../LsRealTimeClockLib/LsRealTimeClock.h      |   47 + >  .../PeiLsRealTimeClockLib.c                   |   31 + >  .../PeiLsRealTimeClockLib.inf                 |   29 + >  .../Library/NorFlashQemuLib/NorFlashQemuLib.c |  140 ++ >  .../NorFlashQemuLib/NorFlashQemuLib.inf       |   43 + >  .../PeiServicesTablePointer.c                 |   75 + >  .../PeiServicesTablePointerLib.inf            |   31 + >  .../PlatformBootManagerLib/PlatformBm.c       |  829 +++++++++ >  .../PlatformBootManagerLib/PlatformBm.h       |  112 ++ >  .../PlatformBootManagerLib.inf                |   73 + >  .../PlatformBootManagerLib/QemuKernel.c       |   81 + >  .../BaseResetSystemAcpiGed.c                  |  148 ++ >  .../BaseResetSystemAcpiGedLib.inf             |   37 + >  .../DxeResetSystemAcpiGed.c                   |  259 +++ >  .../DxeResetSystemAcpiGedLib.inf              |   41 + >  .../ResetSystemAcpiLib/ResetSystemAcpiGed.c   |  128 ++ >  .../ResetSystemAcpiLib/ResetSystemAcpiGed.h   |   23 + >  OvmfPkg/LoongArchVirt/LoongArchVirt.fdf.inc   |   34 + >  OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc   |  675 +++++++ >  OvmfPkg/LoongArchVirt/LoongArchVirtQemu.fdf   |  313 ++++ >  OvmfPkg/LoongArchVirt/PlatformPei/Fv.c        |   40 + >  OvmfPkg/LoongArchVirt/PlatformPei/MemDetect.c |  203 +++ >  OvmfPkg/LoongArchVirt/PlatformPei/Platform.c  |  393 ++++ >  OvmfPkg/LoongArchVirt/PlatformPei/Platform.h  |  128 ++ >  .../LoongArchVirt/PlatformPei/PlatformPei.inf |   72 + >  OvmfPkg/LoongArchVirt/Sec/LoongArch64/Start.S |  176 ++ >  OvmfPkg/LoongArchVirt/Sec/SecMain.c           |  507 ++++++ >  OvmfPkg/LoongArchVirt/Sec/SecMain.inf         |   53 + >  OvmfPkg/LoongArchVirt/VarStore.fdf.inc        |   67 + >  OvmfPkg/OvmfPkg.dec                           |   15 + >  UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.c         |  440 +++++ >  UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.h         |  261 +++ >  UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.inf       |   60 + >  UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.uni       |   15 + >  UefiCpuPkg/CpuDxeLoongArch64/CpuMp.c          |  544 ++++++ >  UefiCpuPkg/CpuDxeLoongArch64/CpuMp.h          |  471 +++++ >  UefiCpuPkg/CpuDxeLoongArch64/Exception.c      |  150 ++ >  UefiCpuPkg/Include/Library/CpuMmuLib.h        |  194 ++ >  .../BaseLoongArch64CpuTimerLib.inf            |   30 + >  .../BaseLoongArch64CpuTimerLib.uni            |   15 + >  .../BaseLoongArch64CpuTimerLib/CpuTimerLib.c  |  226 +++ >  .../DxeCpuExceptionHandlerLib.inf             |   45 + >  .../DxeCpuExceptionHandlerLib.uni             |   15 + >  .../DxeExceptionLib.c                         |  202 +++ >  .../ExceptionCommon.c                         |  170 ++ >  .../ExceptionCommon.h                         |  111 ++ >  .../LoongArch64/ArchExceptionHandler.c        |  214 +++ >  .../LoongArch64/ExceptionHandlerAsm.S         |  320 ++++ >  .../SecPeiCpuExceptionHandlerLib.inf          |   45 + >  .../SecPeiCpuExceptionHandlerLib.uni          |   15 + >  .../SecPeiExceptionLib.c                      |   90 + >  .../LoongArch64CpuMmuLib/CommonMmuLib.c       |  963 ++++++++++ >  .../LoongArch64CpuMmuLib/CommonMmuLib.h       |   43 + >  .../LoongArch64CpuMmuLib/DxeCpuMmuLib.inf     |   37 + >  .../LoongArch64CpuMmuLib/DxeCpuMmuLib.uni     |   14 + >  .../Library/LoongArch64CpuMmuLib/Page.h       |  279 +++ >  .../LoongArch64CpuMmuLib/PeiCpuMmuLib.c       |  165 ++ >  .../LoongArch64CpuMmuLib/PeiCpuMmuLib.inf     |   44 + >  .../LoongArch64CpuMmuLib/PeiCpuMmuLib.uni     |   14 + >  UefiCpuPkg/Library/LoongArch64CpuMmuLib/Tlb.h |   48 + >  .../LoongArch64CpuMmuLib/TlbOperation.S       |   44 + >  .../LoongArch64MpInitLib/DxeMpInitLib.inf     |   45 + >  .../LoongArch64MpInitLib/DxeMpInitLib.uni     |   15 + >  .../Library/LoongArch64MpInitLib/DxeMpLib.c   |  481 +++++ >  .../Library/LoongArch64MpInitLib/MpLib.c      | 1596 +++++++++++++++++ >  .../Library/LoongArch64MpInitLib/MpLib.h      |  361 ++++ >  .../LoongArch64MpInitLib/PeiMpInitLib.inf     |   37 + >  .../LoongArch64MpInitLib/PeiMpInitLib.uni     |   15 + >  .../Library/LoongArch64MpInitLib/PeiMpLib.c   |  404 +++++ >  UefiCpuPkg/UefiCpuPkg.dec                     |   10 + >  UefiCpuPkg/UefiCpuPkg.dsc                     |   10 + >  127 files changed, 18478 insertions(+), 84 deletions(-) >  create mode 100644 MdePkg/Include/Register/LoongArch64/Cpucfg.h >  create mode 100644 MdePkg/Include/Register/LoongArch64/Csr.h >  create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/DisableFpu.S >  create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/EnableFpu.S >  create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/InitializeFpu.S >  create mode 100644 MdePkg/Library/BaseLib/LoongArch64/AsmCsr.S >  create mode 100644 MdePkg/Library/BaseLib/LoongArch64/Cpucfg.S >  create mode 100644 MdePkg/Library/BaseLib/LoongArch64/Csr.c >  create mode 100644 MdePkg/Library/BaseLib/LoongArch64/ExceptionBase.S >  create mode 100644 MdePkg/Library/BaseLib/LoongArch64/IoCsr.S >  create mode 100644 MdePkg/Library/BaseLib/LoongArch64/ReadStableCounter.S >  create mode 100644 > OvmfPkg/LoongArchVirt/Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.inf >  create mode 100644 OvmfPkg/LoongArchVirt/Drivers/StableTimerDxe/Timer.c >  create mode 100644 OvmfPkg/LoongArchVirt/Drivers/StableTimerDxe/Timer.h >  create mode 100644 > OvmfPkg/LoongArchVirt/Drivers/StableTimerDxe/TimerDxe.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/CollectApResouceLibNull/CollectApResourceLibNull.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/CollectApResouceLibNull/CollectApResourceLibNull.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/CollectApResouceLibNull/CollectApResourceLibNull.uni >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/EarlyFdtSerialPortLib16550/EarlyFdtSerialPortLib16550.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/EarlyFdtSerialPortLib16550/EarlyFdtSerialPortLib16550.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/EarlyFdt16550SerialPortHookLib.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/EarlyFdt16550SerialPortHookLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/Fdt16550SerialPortHookLib.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/Fdt16550SerialPortHookLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/Fdt16550SerialPortHookLib.uni >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/FdtQemuFwCfgLib/FdtQemuFwCfgPeiLib.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/FdtQemuFwCfgLib/FdtQemuFwCfgPeiLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/FdtQemuFwCfgLib/QemuFwCfgLibInternal.h >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/FdtQemuFwCfgLib/QemuFwCfgPei.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/DxeLsRealTimeClockLib.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/DxeLsRealTimeClockLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/LsRealTimeClock.h >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/PeiLsRealTimeClockLib.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/PeiLsRealTimeClockLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/NorFlashQemuLib/NorFlashQemuLib.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/NorFlashQemuLib/NorFlashQemuLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/PlatformBootManagerLib/PlatformBm.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/PlatformBootManagerLib/PlatformBm.h >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/PlatformBootManagerLib/QemuKernel.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/BaseResetSystemAcpiGed.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/BaseResetSystemAcpiGedLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/DxeResetSystemAcpiGed.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/DxeResetSystemAcpiGedLib.inf >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/ResetSystemAcpiGed.c >  create mode 100644 > OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/ResetSystemAcpiGed.h >  create mode 100644 OvmfPkg/LoongArchVirt/LoongArchVirt.fdf.inc >  create mode 100644 OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc >  create mode 100644 OvmfPkg/LoongArchVirt/LoongArchVirtQemu.fdf >  create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/Fv.c >  create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/MemDetect.c >  create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/Platform.c >  create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/Platform.h >  create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/PlatformPei.inf >  create mode 100644 OvmfPkg/LoongArchVirt/Sec/LoongArch64/Start.S >  create mode 100644 OvmfPkg/LoongArchVirt/Sec/SecMain.c >  create mode 100644 OvmfPkg/LoongArchVirt/Sec/SecMain.inf >  create mode 100644 OvmfPkg/LoongArchVirt/VarStore.fdf.inc >  create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.c >  create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.h >  create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.inf >  create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.uni >  create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuMp.c >  create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuMp.h >  create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/Exception.c >  create mode 100644 UefiCpuPkg/Include/Library/CpuMmuLib.h >  create mode 100644 > UefiCpuPkg/Library/BaseLoongArch64CpuTimerLib/BaseLoongArch64CpuTimerLib.inf >  create mode 100644 > UefiCpuPkg/Library/BaseLoongArch64CpuTimerLib/BaseLoongArch64CpuTimerLib.uni >  create mode 100644 > UefiCpuPkg/Library/BaseLoongArch64CpuTimerLib/CpuTimerLib.c >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.uni >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/DxeExceptionLib.c >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/ExceptionCommon.c >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/ExceptionCommon.h >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/LoongArch64/ArchExceptionHandler.c >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/LoongArch64/ExceptionHandlerAsm.S >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.uni >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/SecPeiExceptionLib.c >  create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/CommonMmuLib.c >  create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/CommonMmuLib.h >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuMmuLib/DxeCpuMmuLib.inf >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuMmuLib/DxeCpuMmuLib.uni >  create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/Page.h >  create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/PeiCpuMmuLib.c >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuMmuLib/PeiCpuMmuLib.inf >  create mode 100644 > UefiCpuPkg/Library/LoongArch64CpuMmuLib/PeiCpuMmuLib.uni >  create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/Tlb.h >  create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/TlbOperation.S >  create mode 100644 > UefiCpuPkg/Library/LoongArch64MpInitLib/DxeMpInitLib.inf >  create mode 100644 > UefiCpuPkg/Library/LoongArch64MpInitLib/DxeMpInitLib.uni >  create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/DxeMpLib.c >  create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/MpLib.c >  create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/MpLib.h >  create mode 100644 > UefiCpuPkg/Library/LoongArch64MpInitLib/PeiMpInitLib.inf >  create mode 100644 > UefiCpuPkg/Library/LoongArch64MpInitLib/PeiMpInitLib.uni >  create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/PeiMpLib.c > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#110611): https://edk2.groups.io/g/devel/message/110611 Mute This Topic: https://groups.io/mt/102355705/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=- --------------nCitvhHcfI00vNAMW802Mxaf Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit

Hi Ray,

Thanks for review.


I think the MpInitLib is necessary, because this library will serve PEI and DEX phases. In LoongArch, the MP initialization function will be  called first in the PEI phase. It will wake up all of AP, collect accurate online cores, and all APs will fill in their self information to prepare for next wakeup.

The second time the MP initialization function is called will in DXE phase, usually located CpuDxe, I guess you are checked this code. This time the MP service HOB will be brought from PEI to DXE phase, and the MP protocal will be registered to prepare for service DXE phase.

Like you saied, why not use the MP PPI? I think it's just that the code hasn't been added yet, and I think LoongArch will definitely need the MP PPI in the future, like memory trainning, configure APs local registers, etc.


Thanks,
Chao
在 2023/11/3 13:10, Ni, Ray 写道:
Chao,
MpInitLib is to avoid code duplication between CpuMpPeim and CpuDxe.
If you only need MP protocol but not MP PPI, do you still need to add MpInitLib?
Can MpInitLib code be included in CpuDxe folder?

Thanks,
Ray

From: Chao Li <lichao@loongson.cn>
Sent: Friday, November 3, 2023 9:03 AM
To: devel@edk2.groups.io <devel@edk2.groups.io>
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>; Dong, Eric <eric.dong@intel.com>; Ni, Ray <ray.ni@intel.com>; Kumar, Rahul R <rahul.r.kumar@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Abner Chang <abner.chang@amd.com>; Daniel Schaefer <git@danielschaefer.me>; Sami Mujawar <sami.mujawar@arm.com>; Yao, Jiewen <jiewen.yao@intel.com>; Justen, Jordan L <jordan.l.justen@intel.com>
Subject: [PATCH v1 00/29] Enable LoongArch virtual machine in edk2
 
This patch set will enable LoongArch virtual machine in edk2, the new
LoongArch virtual machine is located in OvmfPkg/LoongArchVirt/, it is a
generic platform that dose not require any actual hardware.

Patch1-Patch14: Submit the common library and driver for LoongArch
virtual machine and real hardware. Such as base help functions,
exception handel, MMU library, multiprocessor library etc.

Patch15-Patch16: Add PrePiCpuIoSize for LoongArch64. and move ArmVirtPkg
two PCDs into OvmfPkg for easier use by other architectures.

Patch17-Patch29: LoongArch virtual machine private code, include SEC and
PEI phase code, some library and drivers.

Modfied modues: MdePkg, UefiCpuPkg, EmbeddedPkg, ArmVirtPkg, OvmfPkg.

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4584

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Abner Chang <abner.chang@amd.com>
Cc: Daniel Schaefer <git@danielschaefer.me>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>

Chao Li (29):
  MdePkg: Add the header file named Csr.h for LoongArch64
  MdePkg: Add LoongArch64 FPU function set into BaseCpuLib
  MdePkg: Add LoongArch64 exception function set into BaseLib
  MdePkg: Add LoongArch64 local interrupt function set into BaseLib
  MdePkg: Add LoongArch Cpucfg function
  MdePkg: Add read stable counter operation for LoongArch
  MdePkg: Add CSR operation for LoongArch
  MdePkg: Add IOCSR operation for LoongArch
  UefiCpuPkg: Add LoongArch64 CPU Timer library
  UefiCpuPkg: Add CPU exception library for LoongArch
  UefiCpuPkg: Add CpuMmuLib.h to UefiCpuPkg
  UefiCpuPkg: Add LoongArch64CpuMmuLib to UefiCpuPkg
  UefiCpuPkg: Add multiprocessor library for LoongArch64
  UefiCpuPkg: Add CpuDxe driver for LoongArch64
  EmbeddedPkg: Add PcdPrePiCpuIoSize width for LOONGARCH64
  ArmVirtPkg: Move PCD of FDT base address and FDT padding to OvmfPkg
  OvmfPkg/LoongArchVirt: Add PciCpuIo2Dxe module
  OvmfPkg/LoongArchVirt: Add stable timer driver
  OvmfPkg/LoongArchVirt: Add a NULL library named
    CollectApResouceLibNull
  OvmfPkg/LoongArchVirt: Add serial port library
  OvmfPkg/LoongArchVirt: Add real time clock library
  OvmfPkg/LoongArchVirt: Add NorFlashQemuLib
  OvmfPkg/LoongArchVirt: Add PeiServiceTablePointerLib
  OvmfPkg/LoongArchVirt: Add platform boot manager library
  OvmfPkg/LoongArchVirt: Add FdtQemuFwCfgLib
  OvmfPkg/LoongArchVirt: Add reset system library
  OvmfPkg/LoongArchVirt: Support SEC phase
  OvmfPkg/LoongArchVirt: Support PEI phase
  OvmfPkg/LoongArchVirt: Add build file

 ArmVirtPkg/ArmVirtCloudHv.dsc                 |    2 +-
 ArmVirtPkg/ArmVirtKvmTool.dsc                 |    2 +-
 ArmVirtPkg/ArmVirtPkg.dec                     |   14 -
 ArmVirtPkg/ArmVirtQemu.dsc                    |    2 +-
 ArmVirtPkg/ArmVirtQemuKernel.dsc              |    2 +-
 ArmVirtPkg/ArmVirtXen.dsc                     |    2 +-
 .../ArmVirtPsciResetSystemPeiLib.inf          |    3 +-
 .../CloudHvVirtMemInfoPeiLib.inf              |    3 +-
 .../DebugLibFdtPL011UartFlash.inf             |    3 +-
 .../EarlyFdt16550SerialPortHookLib.inf        |    3 +-
 .../EarlyFdtPL011SerialPortLib.inf            |    3 +-
 .../KvmtoolPlatformPeiLib.inf                 |    5 +-
 .../Library/PlatformPeiLib/PlatformPeiLib.inf |   10 +-
 .../QemuVirtMemInfoPeiLib.inf                 |    3 +-
 .../PrePi/ArmVirtPrePiUniCoreRelocatable.inf  |    3 +-
 EmbeddedPkg/EmbeddedPkg.dec                   |    3 +
 MdePkg/Include/Library/BaseLib.h              |  221 +++
 MdePkg/Include/Library/CpuLib.h               |   37 +-
 MdePkg/Include/Protocol/DebugSupport.h        |   76 +-
 MdePkg/Include/Register/LoongArch64/Cpucfg.h  |  565 ++++++
 MdePkg/Include/Register/LoongArch64/Csr.h     |  221 +++
 MdePkg/Library/BaseCpuLib/BaseCpuLib.inf      |    7 +-
 .../Library/BaseCpuLib/LoongArch/DisableFpu.S |   17 +
 .../Library/BaseCpuLib/LoongArch/EnableFpu.S  |   17 +
 .../BaseCpuLib/LoongArch/InitializeFpu.S      |   51 +
 MdePkg/Library/BaseLib/BaseLib.inf            |    6 +
 MdePkg/Library/BaseLib/LoongArch64/AsmCsr.S   |  422 +++++
 MdePkg/Library/BaseLib/LoongArch64/Cpucfg.S   |   26 +
 MdePkg/Library/BaseLib/LoongArch64/Csr.c      |   81 +
 .../BaseLib/LoongArch64/DisableInterrupts.S   |   22 +-
 .../BaseLib/LoongArch64/EnableInterrupts.S    |   22 +-
 .../BaseLib/LoongArch64/ExceptionBase.S       |   41 +
 MdePkg/Library/BaseLib/LoongArch64/IoCsr.S    |  120 ++
 .../BaseLib/LoongArch64/ReadStableCounter.S   |   24 +
 MdePkg/MdePkg.ci.yaml                         |    3 +-
 .../Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.c       |  547 ++++++
 .../Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.inf     |   45 +
 .../Drivers/StableTimerDxe/Timer.c            |  381 ++++
 .../Drivers/StableTimerDxe/Timer.h            |  127 ++
 .../Drivers/StableTimerDxe/TimerDxe.inf       |   41 +
 .../CollectApResourceLibNull.c                |   35 +
 .../CollectApResourceLibNull.inf              |   32 +
 .../CollectApResourceLibNull.uni              |    9 +
 .../EarlyFdtSerialPortLib16550.c              |  824 +++++++++
 .../EarlyFdtSerialPortLib16550.inf            |   47 +
 .../EarlyFdt16550SerialPortHookLib.c          |  136 ++
 .../EarlyFdt16550SerialPortHookLib.inf        |   36 +
 .../Fdt16550SerialPortHookLib.c               |   41 +
 .../Fdt16550SerialPortHookLib.inf             |   33 +
 .../Fdt16550SerialPortHookLib.uni             |   13 +
 .../FdtQemuFwCfgLib/FdtQemuFwCfgPeiLib.c      |  505 ++++++
 .../FdtQemuFwCfgLib/FdtQemuFwCfgPeiLib.inf    |   42 +
 .../FdtQemuFwCfgLib/QemuFwCfgLibInternal.h    |   73 +
 .../Library/FdtQemuFwCfgLib/QemuFwCfgPei.c    |  117 ++
 .../DxeLsRealTimeClockLib.c                   |  333 ++++
 .../DxeLsRealTimeClockLib.inf                 |   42 +
 .../LsRealTimeClockLib/LsRealTimeClock.h      |   47 +
 .../PeiLsRealTimeClockLib.c                   |   31 +
 .../PeiLsRealTimeClockLib.inf                 |   29 +
 .../Library/NorFlashQemuLib/NorFlashQemuLib.c |  140 ++
 .../NorFlashQemuLib/NorFlashQemuLib.inf       |   43 +
 .../PeiServicesTablePointer.c                 |   75 +
 .../PeiServicesTablePointerLib.inf            |   31 +
 .../PlatformBootManagerLib/PlatformBm.c       |  829 +++++++++
 .../PlatformBootManagerLib/PlatformBm.h       |  112 ++
 .../PlatformBootManagerLib.inf                |   73 +
 .../PlatformBootManagerLib/QemuKernel.c       |   81 +
 .../BaseResetSystemAcpiGed.c                  |  148 ++
 .../BaseResetSystemAcpiGedLib.inf             |   37 +
 .../DxeResetSystemAcpiGed.c                   |  259 +++
 .../DxeResetSystemAcpiGedLib.inf              |   41 +
 .../ResetSystemAcpiLib/ResetSystemAcpiGed.c   |  128 ++
 .../ResetSystemAcpiLib/ResetSystemAcpiGed.h   |   23 +
 OvmfPkg/LoongArchVirt/LoongArchVirt.fdf.inc   |   34 +
 OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc   |  675 +++++++
 OvmfPkg/LoongArchVirt/LoongArchVirtQemu.fdf   |  313 ++++
 OvmfPkg/LoongArchVirt/PlatformPei/Fv.c        |   40 +
 OvmfPkg/LoongArchVirt/PlatformPei/MemDetect.c |  203 +++
 OvmfPkg/LoongArchVirt/PlatformPei/Platform.c  |  393 ++++
 OvmfPkg/LoongArchVirt/PlatformPei/Platform.h  |  128 ++
 .../LoongArchVirt/PlatformPei/PlatformPei.inf |   72 +
 OvmfPkg/LoongArchVirt/Sec/LoongArch64/Start.S |  176 ++
 OvmfPkg/LoongArchVirt/Sec/SecMain.c           |  507 ++++++
 OvmfPkg/LoongArchVirt/Sec/SecMain.inf         |   53 +
 OvmfPkg/LoongArchVirt/VarStore.fdf.inc        |   67 +
 OvmfPkg/OvmfPkg.dec                           |   15 +
 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.c         |  440 +++++
 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.h         |  261 +++
 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.inf       |   60 +
 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.uni       |   15 +
 UefiCpuPkg/CpuDxeLoongArch64/CpuMp.c          |  544 ++++++
 UefiCpuPkg/CpuDxeLoongArch64/CpuMp.h          |  471 +++++
 UefiCpuPkg/CpuDxeLoongArch64/Exception.c      |  150 ++
 UefiCpuPkg/Include/Library/CpuMmuLib.h        |  194 ++
 .../BaseLoongArch64CpuTimerLib.inf            |   30 +
 .../BaseLoongArch64CpuTimerLib.uni            |   15 +
 .../BaseLoongArch64CpuTimerLib/CpuTimerLib.c  |  226 +++
 .../DxeCpuExceptionHandlerLib.inf             |   45 +
 .../DxeCpuExceptionHandlerLib.uni             |   15 +
 .../DxeExceptionLib.c                         |  202 +++
 .../ExceptionCommon.c                         |  170 ++
 .../ExceptionCommon.h                         |  111 ++
 .../LoongArch64/ArchExceptionHandler.c        |  214 +++
 .../LoongArch64/ExceptionHandlerAsm.S         |  320 ++++
 .../SecPeiCpuExceptionHandlerLib.inf          |   45 +
 .../SecPeiCpuExceptionHandlerLib.uni          |   15 +
 .../SecPeiExceptionLib.c                      |   90 +
 .../LoongArch64CpuMmuLib/CommonMmuLib.c       |  963 ++++++++++
 .../LoongArch64CpuMmuLib/CommonMmuLib.h       |   43 +
 .../LoongArch64CpuMmuLib/DxeCpuMmuLib.inf     |   37 +
 .../LoongArch64CpuMmuLib/DxeCpuMmuLib.uni     |   14 +
 .../Library/LoongArch64CpuMmuLib/Page.h       |  279 +++
 .../LoongArch64CpuMmuLib/PeiCpuMmuLib.c       |  165 ++
 .../LoongArch64CpuMmuLib/PeiCpuMmuLib.inf     |   44 +
 .../LoongArch64CpuMmuLib/PeiCpuMmuLib.uni     |   14 +
 UefiCpuPkg/Library/LoongArch64CpuMmuLib/Tlb.h |   48 +
 .../LoongArch64CpuMmuLib/TlbOperation.S       |   44 +
 .../LoongArch64MpInitLib/DxeMpInitLib.inf     |   45 +
 .../LoongArch64MpInitLib/DxeMpInitLib.uni     |   15 +
 .../Library/LoongArch64MpInitLib/DxeMpLib.c   |  481 +++++
 .../Library/LoongArch64MpInitLib/MpLib.c      | 1596 +++++++++++++++++
 .../Library/LoongArch64MpInitLib/MpLib.h      |  361 ++++
 .../LoongArch64MpInitLib/PeiMpInitLib.inf     |   37 +
 .../LoongArch64MpInitLib/PeiMpInitLib.uni     |   15 +
 .../Library/LoongArch64MpInitLib/PeiMpLib.c   |  404 +++++
 UefiCpuPkg/UefiCpuPkg.dec                     |   10 +
 UefiCpuPkg/UefiCpuPkg.dsc                     |   10 +
 127 files changed, 18478 insertions(+), 84 deletions(-)
 create mode 100644 MdePkg/Include/Register/LoongArch64/Cpucfg.h
 create mode 100644 MdePkg/Include/Register/LoongArch64/Csr.h
 create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/DisableFpu.S
 create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/EnableFpu.S
 create mode 100644 MdePkg/Library/BaseCpuLib/LoongArch/InitializeFpu.S
 create mode 100644 MdePkg/Library/BaseLib/LoongArch64/AsmCsr.S
 create mode 100644 MdePkg/Library/BaseLib/LoongArch64/Cpucfg.S
 create mode 100644 MdePkg/Library/BaseLib/LoongArch64/Csr.c
 create mode 100644 MdePkg/Library/BaseLib/LoongArch64/ExceptionBase.S
 create mode 100644 MdePkg/Library/BaseLib/LoongArch64/IoCsr.S
 create mode 100644 MdePkg/Library/BaseLib/LoongArch64/ReadStableCounter.S
 create mode 100644 OvmfPkg/LoongArchVirt/Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.c
 create mode 100644 OvmfPkg/LoongArchVirt/Drivers/PciCpuIo2Dxe/PciCpuIo2Dxe.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Drivers/StableTimerDxe/Timer.c
 create mode 100644 OvmfPkg/LoongArchVirt/Drivers/StableTimerDxe/Timer.h
 create mode 100644 OvmfPkg/LoongArchVirt/Drivers/StableTimerDxe/TimerDxe.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/CollectApResouceLibNull/CollectApResourceLibNull.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/CollectApResouceLibNull/CollectApResourceLibNull.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/CollectApResouceLibNull/CollectApResourceLibNull.uni
 create mode 100644 OvmfPkg/LoongArchVirt/Library/EarlyFdtSerialPortLib16550/EarlyFdtSerialPortLib16550.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/EarlyFdtSerialPortLib16550/EarlyFdtSerialPortLib16550.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/EarlyFdt16550SerialPortHookLib.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/EarlyFdt16550SerialPortHookLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/Fdt16550SerialPortHookLib.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/Fdt16550SerialPortHookLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/Fdt16550SerialPortHookLib/Fdt16550SerialPortHookLib.uni
 create mode 100644 OvmfPkg/LoongArchVirt/Library/FdtQemuFwCfgLib/FdtQemuFwCfgPeiLib.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/FdtQemuFwCfgLib/FdtQemuFwCfgPeiLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/FdtQemuFwCfgLib/QemuFwCfgLibInternal.h
 create mode 100644 OvmfPkg/LoongArchVirt/Library/FdtQemuFwCfgLib/QemuFwCfgPei.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/DxeLsRealTimeClockLib.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/DxeLsRealTimeClockLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/LsRealTimeClock.h
 create mode 100644 OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/PeiLsRealTimeClockLib.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/LsRealTimeClockLib/PeiLsRealTimeClockLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/NorFlashQemuLib/NorFlashQemuLib.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/NorFlashQemuLib/NorFlashQemuLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointer.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/PlatformBootManagerLib/PlatformBm.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/PlatformBootManagerLib/PlatformBm.h
 create mode 100644 OvmfPkg/LoongArchVirt/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/PlatformBootManagerLib/QemuKernel.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/BaseResetSystemAcpiGed.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/BaseResetSystemAcpiGedLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/DxeResetSystemAcpiGed.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/DxeResetSystemAcpiGedLib.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/ResetSystemAcpiGed.c
 create mode 100644 OvmfPkg/LoongArchVirt/Library/ResetSystemAcpiLib/ResetSystemAcpiGed.h
 create mode 100644 OvmfPkg/LoongArchVirt/LoongArchVirt.fdf.inc
 create mode 100644 OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc
 create mode 100644 OvmfPkg/LoongArchVirt/LoongArchVirtQemu.fdf
 create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/Fv.c
 create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/MemDetect.c
 create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/Platform.c
 create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/Platform.h
 create mode 100644 OvmfPkg/LoongArchVirt/PlatformPei/PlatformPei.inf
 create mode 100644 OvmfPkg/LoongArchVirt/Sec/LoongArch64/Start.S
 create mode 100644 OvmfPkg/LoongArchVirt/Sec/SecMain.c
 create mode 100644 OvmfPkg/LoongArchVirt/Sec/SecMain.inf
 create mode 100644 OvmfPkg/LoongArchVirt/VarStore.fdf.inc
 create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.c
 create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.h
 create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.inf
 create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuDxe.uni
 create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuMp.c
 create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/CpuMp.h
 create mode 100644 UefiCpuPkg/CpuDxeLoongArch64/Exception.c
 create mode 100644 UefiCpuPkg/Include/Library/CpuMmuLib.h
 create mode 100644 UefiCpuPkg/Library/BaseLoongArch64CpuTimerLib/BaseLoongArch64CpuTimerLib.inf
 create mode 100644 UefiCpuPkg/Library/BaseLoongArch64CpuTimerLib/BaseLoongArch64CpuTimerLib.uni
 create mode 100644 UefiCpuPkg/Library/BaseLoongArch64CpuTimerLib/CpuTimerLib.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.uni
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/DxeExceptionLib.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/ExceptionCommon.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/ExceptionCommon.h
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/LoongArch64/ArchExceptionHandler.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/LoongArch64/ExceptionHandlerAsm.S
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.uni
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuExceptionHandlerLib/SecPeiExceptionLib.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/CommonMmuLib.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/CommonMmuLib.h
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/DxeCpuMmuLib.inf
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/DxeCpuMmuLib.uni
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/Page.h
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/PeiCpuMmuLib.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/PeiCpuMmuLib.inf
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/PeiCpuMmuLib.uni
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/Tlb.h
 create mode 100644 UefiCpuPkg/Library/LoongArch64CpuMmuLib/TlbOperation.S
 create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/DxeMpInitLib.inf
 create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/DxeMpInitLib.uni
 create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/DxeMpLib.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/MpLib.c
 create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/MpLib.h
 create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/PeiMpInitLib.inf
 create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/PeiMpInitLib.uni
 create mode 100644 UefiCpuPkg/Library/LoongArch64MpInitLib/PeiMpLib.c

_._,_._,_

Groups.io Links:

You receive all messages sent to this group.

View/Reply Online (#110611) | | Mute This Topic | New Topic
Your Subscription | Contact Group Owner | Unsubscribe [rebecca@openfw.io]

_._,_._,_
--------------nCitvhHcfI00vNAMW802Mxaf--