Repository navigation
Expand file tree
/
Copy path003-fix-loongarch-nvram-and-acpi-issue.patch
More file actions
106 lines (95 loc) · 3.53 KB
/
Copy path003-fix-loongarch-nvram-and-acpi-issue.patch
File metadata and controls
106 lines (95 loc) · 3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index a958eb77..514d52ec 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -124,12 +124,45 @@ my $OVMF = {
"$EDK2_FW_BASE/LOONGARCH64_VIRT_CODE.fd",
"$EDK2_FW_BASE/LOONGARCH64_VIRT_VARS.fd",
],
+ '4m-no-smm' => [
+ "$EDK2_FW_BASE/LOONGARCH64_VIRT_CODE.fd",
+ "$EDK2_FW_BASE/LOONGARCH64_VIRT_VARS.fd",
+ ],
+ '4m-no-smm-ms' => [
+ "$EDK2_FW_BASE/LOONGARCH64_VIRT_CODE.fd",
+ "$EDK2_FW_BASE/LOONGARCH64_VIRT_VARS.fd",
+ ],
+ '4m' => [
+ "$EDK2_FW_BASE/LOONGARCH64_VIRT_CODE.fd",
+ "$EDK2_FW_BASE/LOONGARCH64_VIRT_VARS.fd",
+ ],
+ '4m-ms' => [
+ "$EDK2_FW_BASE/LOONGARCH64_VIRT_CODE.fd",
+ "$EDK2_FW_BASE/LOONGARCH64_VIRT_VARS.fd",
+ ],
},
riscv64 => {
default => [
"$EDK2_FW_BASE/RISCV_VIRT_CODE.fd",
"$EDK2_FW_BASE/RISCV_VIRT_VARS.fd",
],
+ '4m-no-smm' => [
+ "$EDK2_FW_BASE/RISCV_VIRT_CODE.fd",
+ "$EDK2_FW_BASE/RISCV_VIRT_VARS.fd",
+ ],
+ '4m-no-smm-ms' => [
+ "$EDK2_FW_BASE/RISCV_VIRT_CODE.fd",
+ "$EDK2_FW_BASE/RISCV_VIRT_VARS.fd",
+ ],
+ '4m' => [
+ "$EDK2_FW_BASE/RISCV_VIRT_CODE.fd",
+ "$EDK2_FW_BASE/RISCV_VIRT_VARS.fd",
+ ],
+ '4m-ms' => [
+ "$EDK2_FW_BASE/RISCV_VIRT_CODE.fd",
+ "$EDK2_FW_BASE/RISCV_VIRT_VARS.fd",
+ ],
+
},
};
@@ -3719,7 +3752,10 @@ sub config_to_command {
push @$cmd, '-name', "$vmname,debug-threads=on";
- push @$cmd, '-no-shutdown';
+ # fix nvram poweroff issue on loongarch
+ if ( $arch ne 'loongarch64'){
+ push @$cmd, '-no-shutdown';
+ }
my $use_virtio = 0;
@@ -3765,16 +3801,8 @@ sub config_to_command {
my ($code_drive_str, $var_drive_str) =
print_ovmf_drive_commandlines($conf, $storecfg, $vmid, $arch, $q35, $version_guard);
- if ($arch eq 'loongarch64') {
- push $cmd->@*, '-bios','/usr/share/pve-edk2-firmware//LOONGARCH64_VIRT_CODE.fd';
- }elsif ($arch eq 'riscv64') {
- push @$cmd, '-bios','/usr/share/pve-edk2-firmware//fw_dynamic.bin';
- push @$cmd, '-drive', $code_drive_str;
- }else{
- push $cmd->@*, '-drive', $code_drive_str;
- push $cmd->@*, '-drive', $var_drive_str;
- }
-
+ push $cmd->@*, '-drive', $code_drive_str;
+ push $cmd->@*, '-drive', $var_drive_str;
}
if ($q35) { # tell QEMU to load q35 config early
@@ -3900,7 +3928,7 @@ sub config_to_command {
push @$cmd, '-boot', "menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg";
- push $machineFlags->@*, 'acpi=off' if defined($conf->{acpi}) && $conf->{acpi} == 0;
+ push $machineFlags->@*, 'acpi=off' if defined($conf->{acpi}) && $conf->{acpi} == 0 && $arch ne 'loongarch64';
push @$cmd, '-no-reboot' if defined($conf->{reboot}) && $conf->{reboot} == 0;
diff --git a/debian/control b/debian/control
index 7e79ee09..94995a68 100644
--- a/debian/control
+++ b/debian/control
@@ -51,9 +51,10 @@ Depends: dbus,
pve-edk2-firmware-legacy | pve-edk2-firmware (<< 4~),
pve-edk2-firmware-ovmf | pve-edk2-firmware (>= 3.20210831-1),
pve-edk2-firmware-aarch64,
+ pve-edk2-firmware-loongarch64 [loong64],
pve-firewall (>= 5.0.4),
pve-ha-manager (>= 3.0-9),
- pve-qemu-kvm (>= 7.1~),
+ pve-qemu-kvm (>= 9.0~),
socat,
swtpm,
swtpm-tools,