* [PATCH] roms: Support compile the efi bios for loongarch
@ 2023-08-10 7:42 xianglai li
2023-08-10 9:58 ` bibo mao
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: xianglai li @ 2023-08-10 7:42 UTC (permalink / raw)
To: qemu-devel
Cc: Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé,
Thomas Huth, Philippe Mathieu-Daudé, Gerd Hoffmann,
Xiaojuan Yang, Song Gao, Bibo Mao
1.Add edk2-platform submodule
2.Added loongarch UEFI BIOS support to compiled scripts.
3.The cross-compilation toolchain on x86 can be obtained from the link below:
https://github.com/loongson/build-tools/tree/2022.09.06
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
Cc: Song Gao <gaosong@loongson.cn>
Cc: Bibo Mao <maobibo@loongson.cn>
Signed-off-by: xianglai li <lixianglai@loongson.cn>
---
.gitmodules | 3 +++
meson.build | 2 +-
pc-bios/meson.build | 2 ++
roms/edk2-build.config | 14 ++++++++++++++
roms/edk2-build.py | 4 ++--
roms/edk2-platforms | 1 +
6 files changed, 23 insertions(+), 3 deletions(-)
create mode 160000 roms/edk2-platforms
diff --git a/.gitmodules b/.gitmodules
index 73cae4cd4d..0cb57123fa 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -43,3 +43,6 @@
[submodule "tests/lcitool/libvirt-ci"]
path = tests/lcitool/libvirt-ci
url = https://gitlab.com/libvirt/libvirt-ci.git
+[submodule "roms/edk2-platforms"]
+ path = roms/edk2-platforms
+ url = https://github.com/tianocore/edk2-platforms.git
diff --git a/meson.build b/meson.build
index 98e68ef0b1..b398caf2ce 100644
--- a/meson.build
+++ b/meson.build
@@ -153,7 +153,7 @@ if targetos != 'darwin'
modular_tcg = ['i386-softmmu', 'x86_64-softmmu']
endif
-edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu' ]
+edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu', 'loongarch64-softmmu' ]
unpack_edk2_blobs = false
foreach target : edk2_targets
if target in target_dirs
diff --git a/pc-bios/meson.build b/pc-bios/meson.build
index a7224ef469..fc73222b6c 100644
--- a/pc-bios/meson.build
+++ b/pc-bios/meson.build
@@ -9,6 +9,8 @@ if unpack_edk2_blobs
'edk2-i386-vars.fd',
'edk2-x86_64-code.fd',
'edk2-x86_64-secure-code.fd',
+ 'edk2-loongarch64-code.fd',
+ 'edk2-loongarch64-vars.fd',
]
foreach f : fds
diff --git a/roms/edk2-build.config b/roms/edk2-build.config
index 66ef9ffcb9..7960c4c2c5 100644
--- a/roms/edk2-build.config
+++ b/roms/edk2-build.config
@@ -1,5 +1,6 @@
[global]
core = edk2
+pkgs = edk2-platforms
####################################################################################
# options
@@ -122,3 +123,16 @@ plat = RiscVVirtQemu
dest = ../pc-bios
cpy1 = FV/RISCV_VIRT.fd edk2-riscv.fd
pad1 = edk2-riscv.fd 32m
+
+####################################################################################
+# LoongArch64
+
+[build.loongach64.qemu]
+conf = Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
+arch = LOONGARCH64
+plat = LoongArchQemu
+dest = ../pc-bios
+cpy1 = FV/QEMU_EFI.fd edk2-loongarch64-code.fd
+pad1 = edk2-loongarch64-code.fd 4m
+cpy2 = FV/QEMU_VARS.fd edk2-loongarch64-vars.fd
+pad2 = edk2-loongarch64-vars.fd 16m
diff --git a/roms/edk2-build.py b/roms/edk2-build.py
index 870893f7c8..dbd641e51e 100755
--- a/roms/edk2-build.py
+++ b/roms/edk2-build.py
@@ -269,8 +269,8 @@ def prepare_env(cfg):
# for cross builds
if binary_exists('arm-linux-gnu-gcc'):
os.environ['GCC5_ARM_PREFIX'] = 'arm-linux-gnu-'
- if binary_exists('loongarch64-linux-gnu-gcc'):
- os.environ['GCC5_LOONGARCH64_PREFIX'] = 'loongarch64-linux-gnu-'
+ if binary_exists('loongarch64-unknown-linux-gnu-gcc'):
+ os.environ['GCC5_LOONGARCH64_PREFIX'] = 'loongarch64-unknown-linux-gnu-'
hostarch = os.uname().machine
if binary_exists('aarch64-linux-gnu-gcc') and hostarch != 'aarch64':
diff --git a/roms/edk2-platforms b/roms/edk2-platforms
new file mode 160000
index 0000000000..84ccada592
--- /dev/null
+++ b/roms/edk2-platforms
@@ -0,0 +1 @@
+Subproject commit 84ccada59257a8151a592a416017fbb03b8ed3cf
--
2.39.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-08-10 7:42 [PATCH] roms: Support compile the efi bios for loongarch xianglai li
@ 2023-08-10 9:58 ` bibo mao
2023-08-10 11:20 ` lixianglai
2023-08-10 11:34 ` Philippe Mathieu-Daudé
2023-08-10 11:48 ` Jiajie Chen
2 siblings, 1 reply; 12+ messages in thread
From: bibo mao @ 2023-08-10 9:58 UTC (permalink / raw)
To: xianglai li, qemu-devel
Cc: Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé,
Thomas Huth, Philippe Mathieu-Daudé, Gerd Hoffmann,
Xiaojuan Yang, Song Gao
Xianglai,
I reply inline.
在 2023/8/10 15:42, xianglai li 写道:
> 1.Add edk2-platform submodule
> 2.Added loongarch UEFI BIOS support to compiled scripts.
The description is somewhat too simple, it should be paragraph.
> 3.The cross-compilation toolchain on x86 can be obtained from the link below:
> https://github.com/loongson/build-tools/tree/2022.09.06
Fedora38 has LoongArch cross-compiler rpm package, maybe we do not need this.
>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
> Cc: "Daniel P. Berrangé" <berrange@redhat.com>
> Cc: Thomas Huth <thuth@redhat.com>
> Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
> Cc: Song Gao <gaosong@loongson.cn>
> Cc: Bibo Mao <maobibo@loongson.cn>
> Signed-off-by: xianglai li <lixianglai@loongson.cn>
> ---
> .gitmodules | 3 +++
> meson.build | 2 +-
> pc-bios/meson.build | 2 ++
> roms/edk2-build.config | 14 ++++++++++++++
> roms/edk2-build.py | 4 ++--
> roms/edk2-platforms | 1 +
> 6 files changed, 23 insertions(+), 3 deletions(-)
> create mode 160000 roms/edk2-platforms
>
> diff --git a/.gitmodules b/.gitmodules
> index 73cae4cd4d..0cb57123fa 100644
> --- a/.gitmodules
> +++ b/.gitmodules
> @@ -43,3 +43,6 @@
> [submodule "tests/lcitool/libvirt-ci"]
> path = tests/lcitool/libvirt-ci
> url = https://gitlab.com/libvirt/libvirt-ci.git
> +[submodule "roms/edk2-platforms"]
> + path = roms/edk2-platforms
> + url = https://github.com/tianocore/edk2-platforms.git
> diff --git a/meson.build b/meson.build
> index 98e68ef0b1..b398caf2ce 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -153,7 +153,7 @@ if targetos != 'darwin'
> modular_tcg = ['i386-softmmu', 'x86_64-softmmu']
> endif
>
> -edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu' ]
> +edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu', 'loongarch64-softmmu' ]
> unpack_edk2_blobs = false
> foreach target : edk2_targets
> if target in target_dirs
> diff --git a/pc-bios/meson.build b/pc-bios/meson.build
> index a7224ef469..fc73222b6c 100644
> --- a/pc-bios/meson.build
> +++ b/pc-bios/meson.build
> @@ -9,6 +9,8 @@ if unpack_edk2_blobs
> 'edk2-i386-vars.fd',
> 'edk2-x86_64-code.fd',
> 'edk2-x86_64-secure-code.fd',
> + 'edk2-loongarch64-code.fd',
> + 'edk2-loongarch64-vars.fd',
> ]
>
> foreach f : fds
> diff --git a/roms/edk2-build.config b/roms/edk2-build.config
> index 66ef9ffcb9..7960c4c2c5 100644
> --- a/roms/edk2-build.config
> +++ b/roms/edk2-build.config
> @@ -1,5 +1,6 @@
> [global]
> core = edk2
> +pkgs = edk2-platforms
>
> ####################################################################################
> # options
> @@ -122,3 +123,16 @@ plat = RiscVVirtQemu
> dest = ../pc-bios
> cpy1 = FV/RISCV_VIRT.fd edk2-riscv.fd
> pad1 = edk2-riscv.fd 32m
> +
> +####################################################################################
> +# LoongArch64
> +
> +[build.loongach64.qemu]
> +conf = Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
> +arch = LOONGARCH64
> +plat = LoongArchQemu
> +dest = ../pc-bios
> +cpy1 = FV/QEMU_EFI.fd edk2-loongarch64-code.fd
> +pad1 = edk2-loongarch64-code.fd 4m
> +cpy2 = FV/QEMU_VARS.fd edk2-loongarch64-vars.fd
> +pad2 = edk2-loongarch64-vars.fd 16m
> diff --git a/roms/edk2-build.py b/roms/edk2-build.py
> index 870893f7c8..dbd641e51e 100755
> --- a/roms/edk2-build.py
> +++ b/roms/edk2-build.py
> @@ -269,8 +269,8 @@ def prepare_env(cfg):
> # for cross builds
> if binary_exists('arm-linux-gnu-gcc'):
> os.environ['GCC5_ARM_PREFIX'] = 'arm-linux-gnu-'
> - if binary_exists('loongarch64-linux-gnu-gcc'):
> - os.environ['GCC5_LOONGARCH64_PREFIX'] = 'loongarch64-linux-gnu-'
> + if binary_exists('loongarch64-unknown-linux-gnu-gcc'):
> + os.environ['GCC5_LOONGARCH64_PREFIX'] = 'loongarch64-unknown-linux-gnu-'
I think loongarch64-unknown-linux- is not necessary here, loongarch64-linux-gnu-
is default prefix on Fedora38, else there will be too many prefix names :)
Regards
Bibo Mao
>
> hostarch = os.uname().machine
> if binary_exists('aarch64-linux-gnu-gcc') and hostarch != 'aarch64':
> diff --git a/roms/edk2-platforms b/roms/edk2-platforms
> new file mode 160000
> index 0000000000..84ccada592
> --- /dev/null
> +++ b/roms/edk2-platforms
> @@ -0,0 +1 @@
> +Subproject commit 84ccada59257a8151a592a416017fbb03b8ed3cf
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-08-10 9:58 ` bibo mao
@ 2023-08-10 11:20 ` lixianglai
0 siblings, 0 replies; 12+ messages in thread
From: lixianglai @ 2023-08-10 11:20 UTC (permalink / raw)
To: bibo mao, qemu-devel
Cc: Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé,
Thomas Huth, Philippe Mathieu-Daudé, Gerd Hoffmann,
Xiaojuan Yang, Song Gao
Hi, BiBo
On 8/10/23 5:58 PM, bibo mao wrote:
> Xianglai,
>
> I reply inline.
>
> 在 2023/8/10 15:42, xianglai li 写道:
>> 1.Add edk2-platform submodule
>> 2.Added loongarch UEFI BIOS support to compiled scripts.
> The description is somewhat too simple, it should be paragraph.
Okay, I'll describe it in detail in the next version.
>> 3.The cross-compilation toolchain on x86 can be obtained from the link below:
>> https://github.com/loongson/build-tools/tree/2022.09.06
> Fedora38 has LoongArch cross-compiler rpm package, maybe we do not need this.
Okay, I'll remove it in the next version.
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
>> Cc: "Daniel P. Berrangé" <berrange@redhat.com>
>> Cc: Thomas Huth <thuth@redhat.com>
>> Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
>> Cc: Song Gao <gaosong@loongson.cn>
>> Cc: Bibo Mao <maobibo@loongson.cn>
>> Signed-off-by: xianglai li <lixianglai@loongson.cn>
>> ---
>> .gitmodules | 3 +++
>> meson.build | 2 +-
>> pc-bios/meson.build | 2 ++
>> roms/edk2-build.config | 14 ++++++++++++++
>> roms/edk2-build.py | 4 ++--
>> roms/edk2-platforms | 1 +
>> 6 files changed, 23 insertions(+), 3 deletions(-)
>> create mode 160000 roms/edk2-platforms
>>
>> diff --git a/.gitmodules b/.gitmodules
>> index 73cae4cd4d..0cb57123fa 100644
>> --- a/.gitmodules
>> +++ b/.gitmodules
>> @@ -43,3 +43,6 @@
>> [submodule "tests/lcitool/libvirt-ci"]
>> path = tests/lcitool/libvirt-ci
>> url = https://gitlab.com/libvirt/libvirt-ci.git
>> +[submodule "roms/edk2-platforms"]
>> + path = roms/edk2-platforms
>> + url = https://github.com/tianocore/edk2-platforms.git
>> diff --git a/meson.build b/meson.build
>> index 98e68ef0b1..b398caf2ce 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -153,7 +153,7 @@ if targetos != 'darwin'
>> modular_tcg = ['i386-softmmu', 'x86_64-softmmu']
>> endif
>>
>> -edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu' ]
>> +edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu', 'loongarch64-softmmu' ]
>> unpack_edk2_blobs = false
>> foreach target : edk2_targets
>> if target in target_dirs
>> diff --git a/pc-bios/meson.build b/pc-bios/meson.build
>> index a7224ef469..fc73222b6c 100644
>> --- a/pc-bios/meson.build
>> +++ b/pc-bios/meson.build
>> @@ -9,6 +9,8 @@ if unpack_edk2_blobs
>> 'edk2-i386-vars.fd',
>> 'edk2-x86_64-code.fd',
>> 'edk2-x86_64-secure-code.fd',
>> + 'edk2-loongarch64-code.fd',
>> + 'edk2-loongarch64-vars.fd',
>> ]
>>
>> foreach f : fds
>> diff --git a/roms/edk2-build.config b/roms/edk2-build.config
>> index 66ef9ffcb9..7960c4c2c5 100644
>> --- a/roms/edk2-build.config
>> +++ b/roms/edk2-build.config
>> @@ -1,5 +1,6 @@
>> [global]
>> core = edk2
>> +pkgs = edk2-platforms
>>
>> ####################################################################################
>> # options
>> @@ -122,3 +123,16 @@ plat = RiscVVirtQemu
>> dest = ../pc-bios
>> cpy1 = FV/RISCV_VIRT.fd edk2-riscv.fd
>> pad1 = edk2-riscv.fd 32m
>> +
>> +####################################################################################
>> +# LoongArch64
>> +
>> +[build.loongach64.qemu]
>> +conf = Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
>> +arch = LOONGARCH64
>> +plat = LoongArchQemu
>> +dest = ../pc-bios
>> +cpy1 = FV/QEMU_EFI.fd edk2-loongarch64-code.fd
>> +pad1 = edk2-loongarch64-code.fd 4m
>> +cpy2 = FV/QEMU_VARS.fd edk2-loongarch64-vars.fd
>> +pad2 = edk2-loongarch64-vars.fd 16m
>> diff --git a/roms/edk2-build.py b/roms/edk2-build.py
>> index 870893f7c8..dbd641e51e 100755
>> --- a/roms/edk2-build.py
>> +++ b/roms/edk2-build.py
>> @@ -269,8 +269,8 @@ def prepare_env(cfg):
>> # for cross builds
>> if binary_exists('arm-linux-gnu-gcc'):
>> os.environ['GCC5_ARM_PREFIX'] = 'arm-linux-gnu-'
>> - if binary_exists('loongarch64-linux-gnu-gcc'):
>> - os.environ['GCC5_LOONGARCH64_PREFIX'] = 'loongarch64-linux-gnu-'
>> + if binary_exists('loongarch64-unknown-linux-gnu-gcc'):
>> + os.environ['GCC5_LOONGARCH64_PREFIX'] = 'loongarch64-unknown-linux-gnu-'
> I think loongarch64-unknown-linux- is not necessary here, loongarch64-linux-gnu-
> is default prefix on Fedora38, else there will be too many prefix names :)
Ok!I'll fix it in the next version.
Thanks,
xianglai.
>
> Regards
> Bibo Mao
>>
>> hostarch = os.uname().machine
>> if binary_exists('aarch64-linux-gnu-gcc') and hostarch != 'aarch64':
>> diff --git a/roms/edk2-platforms b/roms/edk2-platforms
>> new file mode 160000
>> index 0000000000..84ccada592
>> --- /dev/null
>> +++ b/roms/edk2-platforms
>> @@ -0,0 +1 @@
>> +Subproject commit 84ccada59257a8151a592a416017fbb03b8ed3cf
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-08-10 7:42 [PATCH] roms: Support compile the efi bios for loongarch xianglai li
2023-08-10 9:58 ` bibo mao
@ 2023-08-10 11:34 ` Philippe Mathieu-Daudé
2023-08-10 12:54 ` lixianglai
2023-08-10 11:48 ` Jiajie Chen
2 siblings, 1 reply; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-10 11:34 UTC (permalink / raw)
To: qemu-devel, Daniel P. Berrangé, Paolo Bonzini, Thomas Huth,
Gerd Hoffmann
Cc: Marc-André Lureau, Xiaojuan Yang, Song Gao, Bibo Mao,
xianglai li
Hi,
On 10/8/23 09:42, xianglai li wrote:
> 1.Add edk2-platform submodule
> 2.Added loongarch UEFI BIOS support to compiled scripts.
> 3.The cross-compilation toolchain on x86 can be obtained from the link below:
> https://github.com/loongson/build-tools/tree/2022.09.06
>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
> Cc: "Daniel P. Berrangé" <berrange@redhat.com>
> Cc: Thomas Huth <thuth@redhat.com>
> Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
> Cc: Song Gao <gaosong@loongson.cn>
> Cc: Bibo Mao <maobibo@loongson.cn>
> Signed-off-by: xianglai li <lixianglai@loongson.cn>
> ---
> .gitmodules | 3 +++
> meson.build | 2 +-
> pc-bios/meson.build | 2 ++
> roms/edk2-build.config | 14 ++++++++++++++
> roms/edk2-build.py | 4 ++--
> roms/edk2-platforms | 1 +
> 6 files changed, 23 insertions(+), 3 deletions(-)
> create mode 160000 roms/edk2-platforms
>
> diff --git a/.gitmodules b/.gitmodules
> index 73cae4cd4d..0cb57123fa 100644
> --- a/.gitmodules
> +++ b/.gitmodules
> @@ -43,3 +43,6 @@
> [submodule "tests/lcitool/libvirt-ci"]
> path = tests/lcitool/libvirt-ci
> url = https://gitlab.com/libvirt/libvirt-ci.git
> +[submodule "roms/edk2-platforms"]
> + path = roms/edk2-platforms
> + url = https://github.com/tianocore/edk2-platforms.git
See "Topic 4" in [*].
> We do need to be careful about GPL compliance (making sure users
> have the source if we provide them the compiled firmware blob
> for a GPL'd piece of firmware); but we don't need to necessarily
> ship the sources in the exact same tarball as the blob.
> [...]
> Users of QEMU from git don't get a great firmware experience either,
> since the firmware is in submodules, with all the usual git submodule
> problems.
edk2-platforms.git use the same license than edk2.git,
BSD-2-Clause-Patent, which is compatible with GPLv2. At least this is not
edk2-non-osi.git.
Still, we should discuss this generic issue before going forward with
this patch IMO.
Regards,
Phil.
[*]
https://lore.kernel.org/qemu-devel/CAFEAcA_rziBuSwgJ9cg9m1PS5pNG58eyim+_P9hMu5nF7G70XA@mail.gmail.com/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-08-10 7:42 [PATCH] roms: Support compile the efi bios for loongarch xianglai li
2023-08-10 9:58 ` bibo mao
2023-08-10 11:34 ` Philippe Mathieu-Daudé
@ 2023-08-10 11:48 ` Jiajie Chen
2023-08-10 12:27 ` lixianglai
2 siblings, 1 reply; 12+ messages in thread
From: Jiajie Chen @ 2023-08-10 11:48 UTC (permalink / raw)
To: xianglai li, qemu-devel
Cc: Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé,
Thomas Huth, Philippe Mathieu-Daudé, Gerd Hoffmann,
Xiaojuan Yang, Song Gao, Bibo Mao
On 2023/8/10 15:42, xianglai li wrote:
> 1.Add edk2-platform submodule
> 2.Added loongarch UEFI BIOS support to compiled scripts.
> 3.The cross-compilation toolchain on x86 can be obtained from the link below:
> https://github.com/loongson/build-tools/tree/2022.09.06
>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
> Cc: "Daniel P. Berrangé" <berrange@redhat.com>
> Cc: Thomas Huth <thuth@redhat.com>
> Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
> Cc: Song Gao <gaosong@loongson.cn>
> Cc: Bibo Mao <maobibo@loongson.cn>
> Signed-off-by: xianglai li <lixianglai@loongson.cn>
> ---
> .gitmodules | 3 +++
> meson.build | 2 +-
> pc-bios/meson.build | 2 ++
> roms/edk2-build.config | 14 ++++++++++++++
> roms/edk2-build.py | 4 ++--
> roms/edk2-platforms | 1 +
> 6 files changed, 23 insertions(+), 3 deletions(-)
> create mode 160000 roms/edk2-platforms
>
> diff --git a/.gitmodules b/.gitmodules
> index 73cae4cd4d..0cb57123fa 100644
> --- a/.gitmodules
> +++ b/.gitmodules
> @@ -43,3 +43,6 @@
> [submodule "tests/lcitool/libvirt-ci"]
> path = tests/lcitool/libvirt-ci
> url = https://gitlab.com/libvirt/libvirt-ci.git
> +[submodule "roms/edk2-platforms"]
> + path = roms/edk2-platforms
> + url = https://github.com/tianocore/edk2-platforms.git
> diff --git a/meson.build b/meson.build
> index 98e68ef0b1..b398caf2ce 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -153,7 +153,7 @@ if targetos != 'darwin'
> modular_tcg = ['i386-softmmu', 'x86_64-softmmu']
> endif
>
> -edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu' ]
> +edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu', 'loongarch64-softmmu' ]
> unpack_edk2_blobs = false
> foreach target : edk2_targets
> if target in target_dirs
> diff --git a/pc-bios/meson.build b/pc-bios/meson.build
> index a7224ef469..fc73222b6c 100644
> --- a/pc-bios/meson.build
> +++ b/pc-bios/meson.build
> @@ -9,6 +9,8 @@ if unpack_edk2_blobs
> 'edk2-i386-vars.fd',
> 'edk2-x86_64-code.fd',
> 'edk2-x86_64-secure-code.fd',
> + 'edk2-loongarch64-code.fd',
> + 'edk2-loongarch64-vars.fd',
> ]
>
> foreach f : fds
> diff --git a/roms/edk2-build.config b/roms/edk2-build.config
> index 66ef9ffcb9..7960c4c2c5 100644
> --- a/roms/edk2-build.config
> +++ b/roms/edk2-build.config
> @@ -1,5 +1,6 @@
> [global]
> core = edk2
> +pkgs = edk2-platforms
>
> ####################################################################################
> # options
> @@ -122,3 +123,16 @@ plat = RiscVVirtQemu
> dest = ../pc-bios
> cpy1 = FV/RISCV_VIRT.fd edk2-riscv.fd
> pad1 = edk2-riscv.fd 32m
> +
> +####################################################################################
> +# LoongArch64
> +
> +[build.loongach64.qemu]
typo: s/loongach64/loongarch64/
> +conf = Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
> +arch = LOONGARCH64
> +plat = LoongArchQemu
> +dest = ../pc-bios
> +cpy1 = FV/QEMU_EFI.fd edk2-loongarch64-code.fd
> +pad1 = edk2-loongarch64-code.fd 4m
> +cpy2 = FV/QEMU_VARS.fd edk2-loongarch64-vars.fd
> +pad2 = edk2-loongarch64-vars.fd 16m
> diff --git a/roms/edk2-build.py b/roms/edk2-build.py
> index 870893f7c8..dbd641e51e 100755
> --- a/roms/edk2-build.py
> +++ b/roms/edk2-build.py
> @@ -269,8 +269,8 @@ def prepare_env(cfg):
> # for cross builds
> if binary_exists('arm-linux-gnu-gcc'):
> os.environ['GCC5_ARM_PREFIX'] = 'arm-linux-gnu-'
> - if binary_exists('loongarch64-linux-gnu-gcc'):
> - os.environ['GCC5_LOONGARCH64_PREFIX'] = 'loongarch64-linux-gnu-'
> + if binary_exists('loongarch64-unknown-linux-gnu-gcc'):
> + os.environ['GCC5_LOONGARCH64_PREFIX'] = 'loongarch64-unknown-linux-gnu-'
>
> hostarch = os.uname().machine
> if binary_exists('aarch64-linux-gnu-gcc') and hostarch != 'aarch64':
> diff --git a/roms/edk2-platforms b/roms/edk2-platforms
> new file mode 160000
> index 0000000000..84ccada592
> --- /dev/null
> +++ b/roms/edk2-platforms
> @@ -0,0 +1 @@
> +Subproject commit 84ccada59257a8151a592a416017fbb03b8ed3cf
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-08-10 11:48 ` Jiajie Chen
@ 2023-08-10 12:27 ` lixianglai
0 siblings, 0 replies; 12+ messages in thread
From: lixianglai @ 2023-08-10 12:27 UTC (permalink / raw)
To: Jiajie Chen, qemu-devel
Cc: Paolo Bonzini, Marc-André Lureau, Daniel P. Berrangé,
Thomas Huth, Philippe Mathieu-Daudé, Gerd Hoffmann,
Xiaojuan Yang, Song Gao, Bibo Mao
Hi, Jiajie:
On 8/10/23 7:48 PM, Jiajie Chen wrote:
> On 2023/8/10 15:42, xianglai li wrote:
>> 1.Add edk2-platform submodule
>> 2.Added loongarch UEFI BIOS support to compiled scripts.
>> 3.The cross-compilation toolchain on x86 can be obtained from the
>> link below:
>> https://github.com/loongson/build-tools/tree/2022.09.06
>>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
>> Cc: "Daniel P. Berrangé" <berrange@redhat.com>
>> Cc: Thomas Huth <thuth@redhat.com>
>> Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
>> Cc: Song Gao <gaosong@loongson.cn>
>> Cc: Bibo Mao <maobibo@loongson.cn>
>> Signed-off-by: xianglai li <lixianglai@loongson.cn>
>> ---
>> .gitmodules | 3 +++
>> meson.build | 2 +-
>> pc-bios/meson.build | 2 ++
>> roms/edk2-build.config | 14 ++++++++++++++
>> roms/edk2-build.py | 4 ++--
>> roms/edk2-platforms | 1 +
>> 6 files changed, 23 insertions(+), 3 deletions(-)
>> create mode 160000 roms/edk2-platforms
>>
>> diff --git a/.gitmodules b/.gitmodules
>> index 73cae4cd4d..0cb57123fa 100644
>> --- a/.gitmodules
>> +++ b/.gitmodules
>> @@ -43,3 +43,6 @@
>> [submodule "tests/lcitool/libvirt-ci"]
>> path = tests/lcitool/libvirt-ci
>> url = https://gitlab.com/libvirt/libvirt-ci.git
>> +[submodule "roms/edk2-platforms"]
>> + path = roms/edk2-platforms
>> + url = https://github.com/tianocore/edk2-platforms.git
>> diff --git a/meson.build b/meson.build
>> index 98e68ef0b1..b398caf2ce 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -153,7 +153,7 @@ if targetos != 'darwin'
>> modular_tcg = ['i386-softmmu', 'x86_64-softmmu']
>> endif
>> -edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu',
>> 'x86_64-softmmu' ]
>> +edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu',
>> 'x86_64-softmmu', 'loongarch64-softmmu' ]
>> unpack_edk2_blobs = false
>> foreach target : edk2_targets
>> if target in target_dirs
>> diff --git a/pc-bios/meson.build b/pc-bios/meson.build
>> index a7224ef469..fc73222b6c 100644
>> --- a/pc-bios/meson.build
>> +++ b/pc-bios/meson.build
>> @@ -9,6 +9,8 @@ if unpack_edk2_blobs
>> 'edk2-i386-vars.fd',
>> 'edk2-x86_64-code.fd',
>> 'edk2-x86_64-secure-code.fd',
>> + 'edk2-loongarch64-code.fd',
>> + 'edk2-loongarch64-vars.fd',
>> ]
>> foreach f : fds
>> diff --git a/roms/edk2-build.config b/roms/edk2-build.config
>> index 66ef9ffcb9..7960c4c2c5 100644
>> --- a/roms/edk2-build.config
>> +++ b/roms/edk2-build.config
>> @@ -1,5 +1,6 @@
>> [global]
>> core = edk2
>> +pkgs = edk2-platforms
>> ####################################################################################
>> # options
>> @@ -122,3 +123,16 @@ plat = RiscVVirtQemu
>> dest = ../pc-bios
>> cpy1 = FV/RISCV_VIRT.fd edk2-riscv.fd
>> pad1 = edk2-riscv.fd 32m
>> +
>> +####################################################################################
>>
>> +# LoongArch64
>> +
>> +[build.loongach64.qemu]
>
> typo: s/loongach64/loongarch64/
I'm sorry for that, I'll fix it in the next version.
Thanks,
xianglai
>
>> +conf = Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
>> +arch = LOONGARCH64
>> +plat = LoongArchQemu
>> +dest = ../pc-bios
>> +cpy1 = FV/QEMU_EFI.fd edk2-loongarch64-code.fd
>> +pad1 = edk2-loongarch64-code.fd 4m
>> +cpy2 = FV/QEMU_VARS.fd edk2-loongarch64-vars.fd
>> +pad2 = edk2-loongarch64-vars.fd 16m
>> diff --git a/roms/edk2-build.py b/roms/edk2-build.py
>> index 870893f7c8..dbd641e51e 100755
>> --- a/roms/edk2-build.py
>> +++ b/roms/edk2-build.py
>> @@ -269,8 +269,8 @@ def prepare_env(cfg):
>> # for cross builds
>> if binary_exists('arm-linux-gnu-gcc'):
>> os.environ['GCC5_ARM_PREFIX'] = 'arm-linux-gnu-'
>> - if binary_exists('loongarch64-linux-gnu-gcc'):
>> - os.environ['GCC5_LOONGARCH64_PREFIX'] =
>> 'loongarch64-linux-gnu-'
>> + if binary_exists('loongarch64-unknown-linux-gnu-gcc'):
>> + os.environ['GCC5_LOONGARCH64_PREFIX'] =
>> 'loongarch64-unknown-linux-gnu-'
>> hostarch = os.uname().machine
>> if binary_exists('aarch64-linux-gnu-gcc') and hostarch !=
>> 'aarch64':
>> diff --git a/roms/edk2-platforms b/roms/edk2-platforms
>> new file mode 160000
>> index 0000000000..84ccada592
>> --- /dev/null
>> +++ b/roms/edk2-platforms
>> @@ -0,0 +1 @@
>> +Subproject commit 84ccada59257a8151a592a416017fbb03b8ed3cf
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-08-10 11:34 ` Philippe Mathieu-Daudé
@ 2023-08-10 12:54 ` lixianglai
2023-09-01 8:55 ` lixianglai
0 siblings, 1 reply; 12+ messages in thread
From: lixianglai @ 2023-08-10 12:54 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel, Daniel P. Berrangé,
Paolo Bonzini, Thomas Huth, Gerd Hoffmann
Cc: Marc-André Lureau, Xiaojuan Yang, Song Gao, Bibo Mao
On 8/10/23 7:34 PM, Philippe Mathieu-Daudé wrote:
> Hi,
>
> On 10/8/23 09:42, xianglai li wrote:
>> 1.Add edk2-platform submodule
>> 2.Added loongarch UEFI BIOS support to compiled scripts.
>> 3.The cross-compilation toolchain on x86 can be obtained from the
>> link below:
>> https://github.com/loongson/build-tools/tree/2022.09.06
>>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
>> Cc: "Daniel P. Berrangé" <berrange@redhat.com>
>> Cc: Thomas Huth <thuth@redhat.com>
>> Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
>> Cc: Song Gao <gaosong@loongson.cn>
>> Cc: Bibo Mao <maobibo@loongson.cn>
>> Signed-off-by: xianglai li <lixianglai@loongson.cn>
>> ---
>> .gitmodules | 3 +++
>> meson.build | 2 +-
>> pc-bios/meson.build | 2 ++
>> roms/edk2-build.config | 14 ++++++++++++++
>> roms/edk2-build.py | 4 ++--
>> roms/edk2-platforms | 1 +
>> 6 files changed, 23 insertions(+), 3 deletions(-)
>> create mode 160000 roms/edk2-platforms
>>
>> diff --git a/.gitmodules b/.gitmodules
>> index 73cae4cd4d..0cb57123fa 100644
>> --- a/.gitmodules
>> +++ b/.gitmodules
>> @@ -43,3 +43,6 @@
>> [submodule "tests/lcitool/libvirt-ci"]
>> path = tests/lcitool/libvirt-ci
>> url = https://gitlab.com/libvirt/libvirt-ci.git
>> +[submodule "roms/edk2-platforms"]
>> + path = roms/edk2-platforms
>> + url = https://github.com/tianocore/edk2-platforms.git
>
> See "Topic 4" in [*].
>
> > We do need to be careful about GPL compliance (making sure users
> > have the source if we provide them the compiled firmware blob
> > for a GPL'd piece of firmware); but we don't need to necessarily
> > ship the sources in the exact same tarball as the blob.
>
> > [...]
>
> > Users of QEMU from git don't get a great firmware experience either,
> > since the firmware is in submodules, with all the usual git submodule
> > problems.
>
> edk2-platforms.git use the same license than edk2.git,
> BSD-2-Clause-Patent, which is compatible with GPLv2. At least this is not
> edk2-non-osi.git.
>
> Still, we should discuss this generic issue before going forward with
> this patch IMO.
>
Okay, I also think that there is no need to include EDK2 source code in
the tar ball,
you can package the git repository of QEMU for distribution,
and compile the BIOS binary package before release,
so that there is no need to include BIOS code,
QEMU users can also get the source code of BIOS through Git Submodule.
This is only my opinion, and I look forward to the outcome of the final
discussion.
Thanks,
xianglai
> Regards,
>
> Phil.
>
> [*]
> https://lore.kernel.org/qemu-devel/CAFEAcA_rziBuSwgJ9cg9m1PS5pNG58eyim+_P9hMu5nF7G70XA@mail.gmail.com/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-08-10 12:54 ` lixianglai
@ 2023-09-01 8:55 ` lixianglai
2023-09-04 11:42 ` Gerd Hoffmann
0 siblings, 1 reply; 12+ messages in thread
From: lixianglai @ 2023-09-01 8:55 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel, Daniel P. Berrangé,
Paolo Bonzini, Thomas Huth, Gerd Hoffmann
Cc: Marc-André Lureau, Xiaojuan Yang, Song Gao, Bibo Mao
ping!
Hi,Philippe Mathieu-Daudé:
Would like to know if there is any progress in the discussion on this issue?
In addition, is the compilation of our UEFI done on the fedora38
operating system
or on a later version of fedora?
The loongarch cross-compilation tool on the fedora38 operating system is
a bit old,
and there is a problem with the UEFI of the compiled loongarch,
so I want to ask about the UEFI compilation environment.
Thanks,
xianglai
On 8/10/23 8:54 PM, lixianglai wrote:
>
> On 8/10/23 7:34 PM, Philippe Mathieu-Daudé wrote:
>> Hi,
>>
>> On 10/8/23 09:42, xianglai li wrote:
>>> 1.Add edk2-platform submodule
>>> 2.Added loongarch UEFI BIOS support to compiled scripts.
>>> 3.The cross-compilation toolchain on x86 can be obtained from the
>>> link below:
>>> https://github.com/loongson/build-tools/tree/2022.09.06
>>>
>>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>>> Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
>>> Cc: "Daniel P. Berrangé" <berrange@redhat.com>
>>> Cc: Thomas Huth <thuth@redhat.com>
>>> Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
>>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>>> Cc: Xiaojuan Yang <yangxiaojuan@loongson.cn>
>>> Cc: Song Gao <gaosong@loongson.cn>
>>> Cc: Bibo Mao <maobibo@loongson.cn>
>>> Signed-off-by: xianglai li <lixianglai@loongson.cn>
>>> ---
>>> .gitmodules | 3 +++
>>> meson.build | 2 +-
>>> pc-bios/meson.build | 2 ++
>>> roms/edk2-build.config | 14 ++++++++++++++
>>> roms/edk2-build.py | 4 ++--
>>> roms/edk2-platforms | 1 +
>>> 6 files changed, 23 insertions(+), 3 deletions(-)
>>> create mode 160000 roms/edk2-platforms
>>>
>>> diff --git a/.gitmodules b/.gitmodules
>>> index 73cae4cd4d..0cb57123fa 100644
>>> --- a/.gitmodules
>>> +++ b/.gitmodules
>>> @@ -43,3 +43,6 @@
>>> [submodule "tests/lcitool/libvirt-ci"]
>>> path = tests/lcitool/libvirt-ci
>>> url = https://gitlab.com/libvirt/libvirt-ci.git
>>> +[submodule "roms/edk2-platforms"]
>>> + path = roms/edk2-platforms
>>> + url = https://github.com/tianocore/edk2-platforms.git
>>
>> See "Topic 4" in [*].
>>
>> > We do need to be careful about GPL compliance (making sure users
>> > have the source if we provide them the compiled firmware blob
>> > for a GPL'd piece of firmware); but we don't need to necessarily
>> > ship the sources in the exact same tarball as the blob.
>>
>> > [...]
>>
>> > Users of QEMU from git don't get a great firmware experience either,
>> > since the firmware is in submodules, with all the usual git submodule
>> > problems.
>>
>> edk2-platforms.git use the same license than edk2.git,
>> BSD-2-Clause-Patent, which is compatible with GPLv2. At least this is
>> not
>> edk2-non-osi.git.
>>
>> Still, we should discuss this generic issue before going forward with
>> this patch IMO.
>>
>
> Okay, I also think that there is no need to include EDK2 source code
> in the tar ball,
>
> you can package the git repository of QEMU for distribution,
>
> and compile the BIOS binary package before release,
>
> so that there is no need to include BIOS code,
>
> QEMU users can also get the source code of BIOS through Git Submodule.
>
> This is only my opinion, and I look forward to the outcome of the
> final discussion.
>
>
> Thanks,
>
> xianglai
>
>
>> Regards,
>>
>> Phil.
>>
>> [*]
>> https://lore.kernel.org/qemu-devel/CAFEAcA_rziBuSwgJ9cg9m1PS5pNG58eyim+_P9hMu5nF7G70XA@mail.gmail.com/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-09-01 8:55 ` lixianglai
@ 2023-09-04 11:42 ` Gerd Hoffmann
2023-09-04 12:17 ` lixianglai
0 siblings, 1 reply; 12+ messages in thread
From: Gerd Hoffmann @ 2023-09-04 11:42 UTC (permalink / raw)
To: lixianglai
Cc: Philippe Mathieu-Daudé, qemu-devel, Daniel P. Berrangé,
Paolo Bonzini, Thomas Huth, Marc-André Lureau, Xiaojuan Yang,
Song Gao, Bibo Mao
Hi,
> The loongarch cross-compilation tool on the fedora38 operating system is a
> bit old,
The gcc 12 -> 13 update for the cross compilers landed meanwhile,
right now we have:
binutils-loongarch64-linux-gnu.x86_64 2.39-4.fc38 @updates
gcc-loongarch64-linux-gnu.x86_64 13.2.1-1.fc38 @updates
Trying to build the loongarch firmware throws errors
(edk2/edk2-platforms repos, master branch, checkout
being a few days old):
build.py...
/home/kraxel/projects/edk2-platforms/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc(...): error 4000: Instance of library class [AcpiPlatformLib] is not found
in [/home/kraxel/projects/edk2/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf] [LOONGARCH64]
consumed by module [/home/kraxel/projects/edk2/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf]
take care,
Gerd
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2023-09-04 11:42 ` Gerd Hoffmann
@ 2023-09-04 12:17 ` lixianglai
0 siblings, 0 replies; 12+ messages in thread
From: lixianglai @ 2023-09-04 12:17 UTC (permalink / raw)
To: Gerd Hoffmann
Cc: Philippe Mathieu-Daudé, qemu-devel, Daniel P. Berrangé,
Paolo Bonzini, Thomas Huth, Marc-André Lureau, Xiaojuan Yang,
Song Gao, Bibo Mao, Chao Li
On 9/4/23 7:42 PM, Gerd Hoffmann wrote:
> Hi,
>
>> The loongarch cross-compilation tool on the fedora38 operating system is a
>> bit old,
> The gcc 12 -> 13 update for the cross compilers landed meanwhile,
> right now we have:
>
> binutils-loongarch64-linux-gnu.x86_64 2.39-4.fc38 @updates
> gcc-loongarch64-linux-gnu.x86_64 13.2.1-1.fc38 @updates
Compile with the compiler of the above version to compile UEFI normally,
but there are some problems running on qemu,
which require a later version of binutils to solve.
It means that we need UEFI compiled by the following version
of the compiler to run properly on qemu:
binutils-loongarch64-linux-gnu-2.40-3.fc39.x86_64
gcc-loongarch64-linux-gnu-13.2.1-1.fc39.x86_64
>
> Trying to build the loongarch firmware throws errors
> (edk2/edk2-platforms repos, master branch, checkout
> being a few days old):
>
> build.py...
> /home/kraxel/projects/edk2-platforms/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc(...): error 4000: Instance of library class [AcpiPlatformLib] is not found
> in [/home/kraxel/projects/edk2/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf] [LOONGARCH64]
> consumed by module [/home/kraxel/projects/edk2/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf]
This compilation error is caused by a change in the AcpiPlatformLib
position in edk2, which is referenced by loongarch's UEFI.
We have already submitted the patch to the edk2 community and may need a
day or two to merge.
You can get the corresponding submission from the link below:
https://github.com/tianocore/edk2-platforms/pull/94/files
Thanks,
xianglai
> take care,
> Gerd
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH] roms: Support compile the efi bios for loongarch
@ 2024-07-24 2:22 Xianglai Li
2024-08-21 11:33 ` Gerd Hoffmann
0 siblings, 1 reply; 12+ messages in thread
From: Xianglai Li @ 2024-07-24 2:22 UTC (permalink / raw)
To: qemu-devel
Cc: Song Gao, Jiaxun Yang, Paolo Bonzini, Marc-André Lureau,
Daniel P. Berrangé, Thomas Huth, Philippe Mathieu-Daudé,
Gerd Hoffmann, Bibo Mao
Added loongarch UEFI BIOS support to compiled scripts.
UEFI code images require 16M alignment, flash images require
16M alignment, under the loongarch architecture.This is agreed
upon when the firmware is loaded in QEMU under Loongarch.
The naming of UEFI under loongarch refers to the x86 and arm naming methods,
and the UEFI image names in x86 and arm are:
edk2-i386-code.fd
edk2-i386-vars.fd
edk2-arm-code.fd
edk2-arm-vars.fd
So on loongarch, we named it:
edk2-loongarch64-code.fd
edk2-loongarch64-vars.fd
Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
---
Cc: Song Gao <gaosong@loongson.cn>
Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Bibo Mao <maobibo@loongson.cn>
Cc: Xianglai Li <lixianglai@loongson.cn>
Hello, everyone:
Earlier I submitted a patch that provides support for loongarch efi
compilation in qemu.
However, the loongarch virtual machine UEFI code was in the edk2-platform
repository at the time, and community members did not integrate it because
it would cause the qemu distribution package to be too large.
But now, the UEFI code of loongarch virtual machine has been migrated
from edK2-platform to edk2 repository. The migration work was completed
and merged into edk2 main line on 2024/6/18.
The edk2-stable202408 release will come with support for loongarch,So
I modified my previous patch and submitted it.
Before committing, I successfully compiled(Here I switch the edk2 repository
to the master branch in order to compile and test) the loongarch UEFI firmware
on a fedora39(x86) machine using the compile script in the roms directory in qemu,
and I was able to successfully run it in tcg mode in qemu using
the following command:
qemu-system-loongarch64 -bios edk2-loongarch64-code.fd -serial stdio
Thanks,
Xianglai.
---
docs/system/loongarch/virt.rst | 2 +-
meson.build | 2 +-
pc-bios/descriptors/60-edk2-loongarch64.json | 32 ++++++++++++++++++++
pc-bios/descriptors/meson.build | 3 +-
pc-bios/meson.build | 2 ++
roms/edk2-build.config | 13 ++++++++
6 files changed, 51 insertions(+), 3 deletions(-)
create mode 100644 pc-bios/descriptors/60-edk2-loongarch64.json
diff --git a/docs/system/loongarch/virt.rst b/docs/system/loongarch/virt.rst
index 06d034b8ef..172fba079e 100644
--- a/docs/system/loongarch/virt.rst
+++ b/docs/system/loongarch/virt.rst
@@ -64,7 +64,7 @@ Note: You need get the latest cross-tools at https://github.com/loongson/build-t
(3) Build BIOS:
- See: https://github.com/tianocore/edk2-platforms/tree/master/Platform/Loongson/LoongArchQemuPkg#readme
+ See: https://github.com/tianocore/edk2/tree/master/OvmfPkg/LoongArchVirt#readme
Note: To build the release version of the bios, set --buildtarget=RELEASE,
the bios file path: Build/LoongArchQemu/RELEASE_GCC5/FV/QEMU_EFI.fd
diff --git a/meson.build b/meson.build
index 23f35193ee..b9bdd479c8 100644
--- a/meson.build
+++ b/meson.build
@@ -93,7 +93,7 @@ else
iasl = find_program(get_option('iasl'), required: true)
endif
-edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu', 'riscv64-softmmu' ]
+edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu', 'riscv64-softmmu', 'loongarch64-softmmu' ]
unpack_edk2_blobs = false
foreach target : edk2_targets
if target in target_dirs
diff --git a/pc-bios/descriptors/60-edk2-loongarch64.json b/pc-bios/descriptors/60-edk2-loongarch64.json
new file mode 100644
index 0000000000..52915f729f
--- /dev/null
+++ b/pc-bios/descriptors/60-edk2-loongarch64.json
@@ -0,0 +1,32 @@
+{
+ "description": "UEFI firmware for loongarch64",
+ "interface-types": [
+ "uefi"
+ ],
+ "mapping": {
+ "device": "flash",
+ "executable": {
+ "filename": "@DATADIR@/edk2-loongarch64-code.fd",
+ "format": "raw"
+ },
+ "nvram-template": {
+ "filename": "@DATADIR@/edk2-loongarch64-vars.fd",
+ "format": "raw"
+ }
+ },
+ "targets": [
+ {
+ "architecture": "loongarch64",
+ "machines": [
+ "virt*"
+ ]
+ }
+ ],
+ "features": [
+
+ ],
+ "tags": [
+
+ ]
+}
+
diff --git a/pc-bios/descriptors/meson.build b/pc-bios/descriptors/meson.build
index 66f85d01c4..afb5a959cc 100644
--- a/pc-bios/descriptors/meson.build
+++ b/pc-bios/descriptors/meson.build
@@ -5,7 +5,8 @@ if unpack_edk2_blobs and get_option('install_blobs')
'60-edk2-aarch64.json',
'60-edk2-arm.json',
'60-edk2-i386.json',
- '60-edk2-x86_64.json'
+ '60-edk2-x86_64.json',
+ '60-edk2-loongarch64.json'
]
configure_file(input: files(f),
output: f,
diff --git a/pc-bios/meson.build b/pc-bios/meson.build
index 8602b45b9b..090379763e 100644
--- a/pc-bios/meson.build
+++ b/pc-bios/meson.build
@@ -11,6 +11,8 @@ if unpack_edk2_blobs
'edk2-i386-vars.fd',
'edk2-x86_64-code.fd',
'edk2-x86_64-secure-code.fd',
+ 'edk2-loongarch64-code.fd',
+ 'edk2-loongarch64-vars.fd',
]
foreach f : fds
diff --git a/roms/edk2-build.config b/roms/edk2-build.config
index cc9b211542..9e45361fb4 100644
--- a/roms/edk2-build.config
+++ b/roms/edk2-build.config
@@ -131,3 +131,16 @@ cpy1 = FV/RISCV_VIRT_CODE.fd edk2-riscv-code.fd
cpy2 = FV/RISCV_VIRT_VARS.fd edk2-riscv-vars.fd
pad1 = edk2-riscv-code.fd 32m
pad2 = edk2-riscv-vars.fd 32m
+
+####################################################################################
+# LoongArch64
+
+[build.loongarch64.qemu]
+conf = OvmfPkg/LoongArchVirt/LoongArchVirtQemu.dsc
+arch = LOONGARCH64
+plat = LoongArchVirtQemu
+dest = ../pc-bios
+cpy1 = FV/QEMU_EFI.fd edk2-loongarch64-code.fd
+pad1 = edk2-loongarch64-code.fd 16m
+cpy2 = FV/QEMU_VARS.fd edk2-loongarch64-vars.fd
+pad2 = edk2-loongarch64-vars.fd 16m
--
2.39.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] roms: Support compile the efi bios for loongarch
2024-07-24 2:22 Xianglai Li
@ 2024-08-21 11:33 ` Gerd Hoffmann
0 siblings, 0 replies; 12+ messages in thread
From: Gerd Hoffmann @ 2024-08-21 11:33 UTC (permalink / raw)
To: Xianglai Li
Cc: qemu-devel, Song Gao, Jiaxun Yang, Paolo Bonzini,
Marc-André Lureau, Daniel P. Berrangé, Thomas Huth,
Philippe Mathieu-Daudé, Bibo Mao
On Wed, Jul 24, 2024 at 10:22:45AM GMT, Xianglai Li wrote:
> Added loongarch UEFI BIOS support to compiled scripts.
> But now, the UEFI code of loongarch virtual machine has been migrated
> from edK2-platform to edk2 repository. The migration work was completed
> and merged into edk2 main line on 2024/6/18.
> The edk2-stable202408 release will come with support for loongarch,So
> I modified my previous patch and submitted it.
Patch looks good, but should be applied only after updating the edk2
submodule to edk2-stable202408 so we don't break the firmware builds.
I'll add the patch to the next edk2 update.
take care,
Gerd
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-08-21 11:35 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-10 7:42 [PATCH] roms: Support compile the efi bios for loongarch xianglai li
2023-08-10 9:58 ` bibo mao
2023-08-10 11:20 ` lixianglai
2023-08-10 11:34 ` Philippe Mathieu-Daudé
2023-08-10 12:54 ` lixianglai
2023-09-01 8:55 ` lixianglai
2023-09-04 11:42 ` Gerd Hoffmann
2023-09-04 12:17 ` lixianglai
2023-08-10 11:48 ` Jiajie Chen
2023-08-10 12:27 ` lixianglai
-- strict thread matches above, loose matches on Subject: below --
2024-07-24 2:22 Xianglai Li
2024-08-21 11:33 ` Gerd Hoffmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).