Update LoongArch virtual machine
This commit is contained in:
parent
19e2f998a8
commit
5273094c17
122
0080-Platform-Loongson-Remove-minimium-memory-size-limita.patch
Normal file
122
0080-Platform-Loongson-Remove-minimium-memory-size-limita.patch
Normal file
@ -0,0 +1,122 @@
|
||||
From ff113b5d376dd9054aefc8452e7ff04459489a44 Mon Sep 17 00:00:00 2001
|
||||
From: Bibo Mao <maobibo@loongson.cn>
|
||||
Date: Mon, 25 Mar 2024 10:50:28 +0800
|
||||
Subject: [PATCH 1/2] Platform/Loongson: Remove minimium memory size limitation
|
||||
|
||||
Temparory stack memory on PEI is hardcoded now, also minimium memory
|
||||
size 256M is hardcoded now. Here memory map table from fw cfg can be
|
||||
parsed. If there is memory map entry contains pei stack, it can be
|
||||
published as usable memory at PEI stage.
|
||||
|
||||
Cc: Bibo Mao <maobibo@loongson.cn>
|
||||
Cc: Chao Li <lichao@loongson.cn>
|
||||
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
|
||||
Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
|
||||
Reviewed-by: Chao Li <lichao@loongson.cn>
|
||||
---
|
||||
.../Loongson/LoongArchQemuPkg/Loongson.dec | 2 -
|
||||
.../Loongson/LoongArchQemuPkg/Loongson.dsc | 6 ---
|
||||
.../LoongArchQemuPkg/PlatformPei/MemDetect.c | 38 ++++++++++++++++++-
|
||||
.../PlatformPei/PlatformPei.inf | 2 -
|
||||
4 files changed, 37 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.dec b/Platform/Loongson/LoongArchQemuPkg/Loongson.dec
|
||||
index e638b835e4..c2c6cc9596 100644
|
||||
--- a/Platform/Loongson/LoongArchQemuPkg/Loongson.dec
|
||||
+++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.dec
|
||||
@@ -48,8 +48,6 @@
|
||||
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamBase|0|UINT64|0x0000000b
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamSize|0|UINT32|0x0000000c
|
||||
- gLoongArchQemuPkgTokenSpaceGuid.PcdUefiRamTop|0x0|UINT64|0x0000000d
|
||||
- gLoongArchQemuPkgTokenSpaceGuid.PcdRamRegionsBottom|0x0|UINT64|0x0000000e
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdFlashSecFvBase|0x0|UINT64|0x0000000f
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdFlashSecFvSize|0x0|UINT32|0x00000010
|
||||
|
||||
diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc b/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
|
||||
index 58aa16d3a9..aab2ca9b28 100644
|
||||
--- a/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
|
||||
+++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
|
||||
@@ -356,12 +356,6 @@
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamBase | 0x10000
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamSize | 0x10000
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdDeviceTreeBase | 0x100000
|
||||
- #
|
||||
- # minimal memory for uefi bios should be 512M
|
||||
- # 0x00000000 - 0x10000000
|
||||
- # 0x90000000 - 0xA0000000
|
||||
- #
|
||||
- gLoongArchQemuPkgTokenSpaceGuid.PcdUefiRamTop | 0x10000000
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions | 0x06
|
||||
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile | { 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
|
||||
diff --git a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c
|
||||
index 7e6a4a3aa9..7aa6fdc175 100644
|
||||
--- a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c
|
||||
+++ b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c
|
||||
@@ -40,12 +40,48 @@ PublishPeiMemory (
|
||||
UINT64 Base;
|
||||
UINT64 Size;
|
||||
UINT64 RamTop;
|
||||
+ FIRMWARE_CONFIG_ITEM FwCfgItem;
|
||||
+ UINTN FwCfgSize;
|
||||
+ UINTN Processed;
|
||||
+ LOONGARCH_MEMMAP_ENTRY MemoryMapEntry;
|
||||
|
||||
//
|
||||
// Determine the range of memory to use during PEI
|
||||
//
|
||||
Base = PcdGet64 (PcdSecPeiTempRamBase) + PcdGet32 (PcdSecPeiTempRamSize);
|
||||
- RamTop = PcdGet64 (PcdUefiRamTop);
|
||||
+ RamTop = 0;
|
||||
+
|
||||
+ Status = QemuFwCfgFindFile ("etc/memmap", &FwCfgItem, &FwCfgSize);
|
||||
+ if (EFI_ERROR (Status)) {
|
||||
+ return Status;
|
||||
+ }
|
||||
+
|
||||
+ if (FwCfgSize % sizeof MemoryMapEntry != 0) {
|
||||
+ return EFI_PROTOCOL_ERROR;
|
||||
+ }
|
||||
+
|
||||
+ QemuFwCfgSelectItem (FwCfgItem);
|
||||
+ for (Processed = 0; Processed < FwCfgSize; Processed += sizeof MemoryMapEntry) {
|
||||
+ QemuFwCfgReadBytes (sizeof MemoryMapEntry, &MemoryMapEntry);
|
||||
+ if (MemoryMapEntry.Type != EfiAcpiAddressRangeMemory) {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * Find memory map entry where PEI temp stack is located
|
||||
+ */
|
||||
+ if ((MemoryMapEntry.BaseAddr <= Base) &&
|
||||
+ (Base < (MemoryMapEntry.BaseAddr + MemoryMapEntry.Length))) {
|
||||
+ RamTop = MemoryMapEntry.BaseAddr + MemoryMapEntry.Length;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (RamTop == 0) {
|
||||
+ DEBUG ((DEBUG_ERROR, "ERROR: No memory map entry contains temp stack \n"));
|
||||
+ ASSERT (FALSE);
|
||||
+ }
|
||||
+
|
||||
Size = RamTop - Base;
|
||||
|
||||
//
|
||||
diff --git a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf
|
||||
index 6cc3513b63..65591a4d7b 100644
|
||||
--- a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf
|
||||
+++ b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf
|
||||
@@ -64,8 +64,6 @@
|
||||
[FixedPcd]
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdFlashDxeFvBase
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdFlashDxeFvSize
|
||||
- gLoongArchQemuPkgTokenSpaceGuid.PcdRamRegionsBottom
|
||||
- gLoongArchQemuPkgTokenSpaceGuid.PcdUefiRamTop
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamBase
|
||||
gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamSize
|
||||
gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize
|
||||
--
|
||||
2.46.0
|
||||
|
||||
@ -0,0 +1,62 @@
|
||||
From c9cb2611ae34a79c28671a703368e88267d6cc24 Mon Sep 17 00:00:00 2001
|
||||
From: Xiaotian Wu <wuxiaotian@loongson.cn>
|
||||
Date: Tue, 19 Nov 2024 19:05:49 +0800
|
||||
Subject: [PATCH 2/2] Platform/Loongson: Modify loongarch uefi firmware size
|
||||
|
||||
After the loongarch flash block size is changed from 128K to 256K,
|
||||
qemu requires that the UEFI firmware size be aligned with the flash block size(256K).
|
||||
Otherwise, the firmware cannot be loaded,
|
||||
Use the following code to resolve the old firmware loading problem:
|
||||
mv QEMU_EFI.fd QEMU_EFI.fd-bak
|
||||
cat QEMU_EFI.fd-bak /dev/zero | head -c 16m > ./QEMU_EFI.fd
|
||||
mv QEMU_VARS.fd QEMU_VARS.fd-bak
|
||||
cat QEMU_VARS.fd-bak /dev/zero | head -c 16m > ./QEMU_VARS.fd
|
||||
|
||||
For the new firmware, we refer to other architecture UEFI and
|
||||
set the UEFI firmware size to align with the flash block size(256K).
|
||||
|
||||
So for this patch, we set the UEFI firmware size to 256K alignment.
|
||||
---
|
||||
Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc | 8 ++++----
|
||||
Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc | 4 ++--
|
||||
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc b/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc
|
||||
index e30c4629f7..c31909ca9a 100644
|
||||
--- a/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc
|
||||
+++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.fdf.inc
|
||||
@@ -18,12 +18,12 @@ DEFINE FD_SIZE = 0x400000
|
||||
#flash code layout
|
||||
#Set Sec base address and size in flash
|
||||
DEFINE SECFV_OFFSET = 0x00000000
|
||||
-DEFINE SECFV_SIZE = 0x00010000
|
||||
+DEFINE SECFV_SIZE = 0x00040000
|
||||
|
||||
#Set Pei base address and size in flash
|
||||
-DEFINE PEIFV_OFFSET = 0x00010000
|
||||
+DEFINE PEIFV_OFFSET = 0x00040000
|
||||
DEFINE PEIFV_SIZE = 0x00040000
|
||||
|
||||
#Set Dxe base address and size in flash
|
||||
-DEFINE DXEFV_OFFSET = 0x00050000
|
||||
-DEFINE DXEFV_SIZE = 0x00350000
|
||||
+DEFINE DXEFV_OFFSET = 0x00080000
|
||||
+DEFINE DXEFV_SIZE = 0x00380000
|
||||
diff --git a/Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc b/Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc
|
||||
index 83ce3d8008..f34901950d 100644
|
||||
--- a/Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc
|
||||
+++ b/Platform/Loongson/LoongArchQemuPkg/VarStore.fdf.inc
|
||||
@@ -10,8 +10,8 @@
|
||||
BaseAddress = 0x0
|
||||
Size = 0x1000000
|
||||
ErasePolarity = 1
|
||||
-BlockSize = 0x20000
|
||||
-NumBlocks = 128
|
||||
+BlockSize = 0x40000
|
||||
+NumBlocks = 64
|
||||
|
||||
0x00000000|0x00040000
|
||||
#NV_VARIABLE_STORE
|
||||
--
|
||||
2.46.0
|
||||
|
||||
40
0082-fixup-fdt-parse-error.patch
Normal file
40
0082-fixup-fdt-parse-error.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From bdbeb6e653d7bbaa5eb4ad104119abfc7030c285 Mon Sep 17 00:00:00 2001
|
||||
From: Xianglai Li <lixianglai@loongson.cn>
|
||||
Date: Mon, 25 Nov 2024 16:16:39 +0800
|
||||
Subject: [PATCH] fixup fdt parse error
|
||||
|
||||
Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
|
||||
---
|
||||
.../Library/SerialPortLib/EarlySerialPortLib16550.c | 2 +-
|
||||
Platform/Loongson/LoongArchQemuPkg/PlatformPei/Platform.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Platform/Loongson/LoongArchQemuPkg/Library/SerialPortLib/EarlySerialPortLib16550.c b/Platform/Loongson/LoongArchQemuPkg/Library/SerialPortLib/EarlySerialPortLib16550.c
|
||||
index c713c6e9..dd64a000 100644
|
||||
--- a/Platform/Loongson/LoongArchQemuPkg/Library/SerialPortLib/EarlySerialPortLib16550.c
|
||||
+++ b/Platform/Loongson/LoongArchQemuPkg/Library/SerialPortLib/EarlySerialPortLib16550.c
|
||||
@@ -155,7 +155,7 @@ GetSerialConsolePortAddress (
|
||||
}
|
||||
|
||||
// Determine the actual path length, as a colon terminates the path.
|
||||
- Path = ScanMem8 (Prop, ':', PropSize);
|
||||
+ Path = ScanMem8 (Prop, PropSize, (UINT8)":");
|
||||
if (Path == NULL) {
|
||||
PathLen = AsciiStrLen (Prop);
|
||||
} else {
|
||||
diff --git a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/Platform.c b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/Platform.c
|
||||
index 84bb8e8a..02982cd0 100644
|
||||
--- a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/Platform.c
|
||||
+++ b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/Platform.c
|
||||
@@ -193,7 +193,7 @@ GetSerialConsolePortAddress (
|
||||
}
|
||||
|
||||
// Determine the actual path length, as a colon terminates the path.
|
||||
- Path = ScanMem8 (Prop, ':', PropSize);
|
||||
+ Path = ScanMem8 (Prop, PropSize, (UINT8)":");
|
||||
if (Path == NULL) {
|
||||
PathLen = AsciiStrLen (Prop);
|
||||
} else {
|
||||
--
|
||||
2.41.0
|
||||
|
||||
13
edk2.spec
13
edk2.spec
@ -7,7 +7,7 @@
|
||||
|
||||
Name: edk2
|
||||
Version: %{stable_date}
|
||||
Release: 16
|
||||
Release: 17
|
||||
Summary: EFI Development Kit II
|
||||
License: BSD-2-Clause-Patent and OpenSSL and MIT
|
||||
URL: https://github.com/tianocore/edk2
|
||||
@ -127,6 +127,11 @@ patch77: 0077-VirtioDxe-add-support-of-MMIO-Bar-for-virtio-devices.patch
|
||||
patch78: 0078-Virtio-wait-virtio-device-reset-done.patch
|
||||
patch79: 0079-VirtioBlk-split-large-IO-according-to-segment_size_m.patch
|
||||
|
||||
# Support Loongarch firmware size
|
||||
patch80: 0080-Platform-Loongson-Remove-minimium-memory-size-limita.patch
|
||||
patch81: 0081-Platform-Loongson-Modify-loongarch-uefi-firmware-siz.patch
|
||||
patch82: 0082-fixup-fdt-parse-error.patch
|
||||
|
||||
BuildRequires: acpica-tools gcc gcc-c++ libuuid-devel python3 bc nasm python3-unversioned-command isl
|
||||
|
||||
%description
|
||||
@ -396,6 +401,12 @@ chmod +x %{buildroot}%{_bindir}/Rsa2048Sha256GenerateKeys
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Dec 17 2024 Xiaotian Wu <wuxiaotian@loongson.cn> - 202308-17
|
||||
- Update LoongArch virtual machine
|
||||
- 0080-Platform-Loongson-Remove-minimium-memory-size-limita.patch
|
||||
- 0081-Platform-Loongson-Modify-loongarch-uefi-firmware-siz.patch
|
||||
- 0082-fixup-fdt-parse-error.patch
|
||||
|
||||
* Fri Nov 29 2024 adttil<2429917001@qq.com> - 202308-16
|
||||
- vdpa: support vdpa blk/scsi device boot
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user