1107 lines
64 KiB
Diff
1107 lines
64 KiB
Diff
From 54b2b3b9c3a3b6ecb1da09735a4da2c6644588c7 Mon Sep 17 00:00:00 2001
|
|
From: wangge <wangge20@huawei.com>
|
|
Date: Tue, 28 Sep 2021 16:42:15 +0800
|
|
Subject: [PATCH 1/2] add support running on kunpeng platform
|
|
|
|
---
|
|
automation/build-artifacts.sh | 3 +-
|
|
.../ovirt/engine/core/bll/AddVmCommand.java | 3 +-
|
|
.../core/bll/ClusterOperationCommandBase.java | 2 +
|
|
.../core/bll/CpuFlagsManagerHandler.java | 41 ++++++-
|
|
.../ovirt/engine/core/bll/RunVmCommand.java | 3 +-
|
|
.../engine/core/bll/UpdateVmCommand.java | 3 +-
|
|
.../architecture/HasMaximumNumberOfDisks.java | 5 +
|
|
.../cluster/KubevirtProviderProxy.java | 6 +-
|
|
.../core/bll/validator/ClusterValidator.java | 3 +-
|
|
.../businessentities/ArchitectureType.java | 5 +
|
|
.../common/businessentities/BiosType.java | 3 +-
|
|
.../common/businessentities/ChipsetType.java | 3 +-
|
|
.../core/common/config/ConfigValues.java | 3 +
|
|
.../core/common/osinfo/OsRepository.java | 1 +
|
|
.../engine/core/common/utils/CpuVendor.java | 3 +-
|
|
.../core/common/utils/VmCommonUtils.java | 6 +-
|
|
.../core/common/utils/VmCpuCountHelper.java | 4 +-
|
|
.../src/main/resources/v3/capabilities.xml | 8 ++
|
|
.../engine/api/restapi/types/CPUMapper.java | 4 +
|
|
.../engine/core/utils/OsRepositoryImpl.java | 3 +-
|
|
.../org/ovirt/engine/core/utils/OvfUtils.java | 3 +-
|
|
.../utils/archstrategy/Aarch64Strategy.java | 18 +++
|
|
.../core/utils/archstrategy/ArchCommand.java | 2 +
|
|
.../archstrategy/ArchStrategyFactory.java | 1 +
|
|
.../engine/core/utils/ovf/OvfOvaWriter.java | 1 +
|
|
.../ovirt/engine/core/utils/osinfo/osinfo.jj | 4 +-
|
|
.../CreateAdditionalControllers.java | 5 +
|
|
...eateAdditionalControllersForDomainXml.java | 5 +
|
|
.../architecture/GetBootableDiskIndex.java | 5 +
|
|
.../architecture/GetControllerIndices.java | 6 +
|
|
.../builder/vminfo/LibvirtVmXmlBuilder.java | 111 ++++++++++++------
|
|
.../builder/vminfo/VmInfoBuildUtils.java | 2 +
|
|
.../dataprovider/AsyncDataProvider.java | 11 +-
|
|
.../uicommonweb/models/hosts/HostModel.java | 2 +
|
|
.../models/vms/ImportVmFromOvaModel.java | 2 +-
|
|
.../column/ClusterAdditionalStatusColumn.java | 3 +-
|
|
packaging/conf/osinfo-defaults.properties | 19 +++
|
|
...eral_version_of_nongeneral_vdc_options.sql | 1 +
|
|
.../upgrade/pre_upgrade/0000_config.sql | 21 ++--
|
|
.../engine_common/constants.py | 1 +
|
|
41 files changed, 264 insertions(+), 71 deletions(-)
|
|
create mode 100644 backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/Aarch64Strategy.java
|
|
|
|
diff --git a/automation/build-artifacts.sh b/automation/build-artifacts.sh
|
|
index b830c5d..7f60f5f 100755
|
|
--- a/automation/build-artifacts.sh
|
|
+++ b/automation/build-artifacts.sh
|
|
@@ -19,7 +19,8 @@ export MAVEN_OPTS
|
|
|
|
if [ -d /root/.m2/repository/org/ovirt ]; then
|
|
echo "Deleting ovirt folder from maven cache"
|
|
- rm -rf /root/.m2/repository/org/ovirt
|
|
+# Do not delete the existing packages for now,you can directly use the compiled ovirt-engine-api and other related jar packages
|
|
+# rm -rf /root/.m2/repository/org/ovirt
|
|
fi
|
|
|
|
MAVEN_SETTINGS="/etc/maven/settings.xml"
|
|
diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
|
|
index 1db572d..0dd46d7 100644
|
|
--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
|
|
+++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
|
|
@@ -830,7 +830,8 @@ public class AddVmCommand<T extends AddVmParameters> extends VmManagementCommand
|
|
&& vmFromParams.getCustomBiosType() != BiosType.CLUSTER_DEFAULT
|
|
&& vmFromParams.getCustomBiosType() != BiosType.I440FX_SEA_BIOS
|
|
&& getCluster().getArchitecture() != ArchitectureType.undefined
|
|
- && getCluster().getArchitecture().getFamily() != ArchitectureType.x86) {
|
|
+ && getCluster().getArchitecture().getFamily() != ArchitectureType.x86
|
|
+ && getCluster().getArchitecture().getFamily() != ArchitectureType.aarch64) {
|
|
return failValidation(EngineMessage.NON_DEFAULT_BIOS_TYPE_FOR_X86_ONLY);
|
|
}
|
|
|
|
diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClusterOperationCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClusterOperationCommandBase.java
|
|
index 1fd05a0..6f05339 100644
|
|
--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClusterOperationCommandBase.java
|
|
+++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClusterOperationCommandBase.java
|
|
@@ -181,6 +181,8 @@ public abstract class ClusterOperationCommandBase<T extends ClusterOperationPara
|
|
&& cluster.getArchitecture() != null
|
|
&& cluster.getArchitecture().getFamily() == ArchitectureType.x86) {
|
|
cluster.setBiosType(BiosType.Q35_SEA_BIOS);
|
|
+ } else if (cluster.getArchitecture().getFamily() == ArchitectureType.aarch64) {
|
|
+ cluster.setBiosType(BiosType.VIRT_OVMF);
|
|
} else {
|
|
cluster.setBiosType(BiosType.I440FX_SEA_BIOS);
|
|
}
|
|
diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CpuFlagsManagerHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CpuFlagsManagerHandler.java
|
|
index 6cd4419..40ab278 100644
|
|
--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CpuFlagsManagerHandler.java
|
|
+++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CpuFlagsManagerHandler.java
|
|
@@ -157,15 +157,18 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
private List<ServerCpu> amdCpuList;
|
|
private List<ServerCpu> ibmCpuList;
|
|
private List<ServerCpu> s390CpuList;
|
|
+ private List<ServerCpu> kunpengCpuList;
|
|
private List<ServerCpu> allCpuList = new ArrayList<>();
|
|
private Map<String, ServerCpu> intelCpuByNameDictionary = new HashMap<>();
|
|
private Map<String, ServerCpu> amdCpuByNameDictionary = new HashMap<>();
|
|
private Map<String, ServerCpu> ibmCpuByNameDictionary = new HashMap<>();
|
|
private Map<String, ServerCpu> s390CpuByNameDictionary = new HashMap<>();
|
|
+ private Map<String, ServerCpu> kunpengCpuByNameDictionary = new HashMap<>();
|
|
private Map<String, ServerCpu> intelCpuByVdsNameDictionary = new HashMap<>();
|
|
private Map<String, ServerCpu> amdCpuByVdsNameDictionary = new HashMap<>();
|
|
private Map<String, ServerCpu> ibmCpuByVdsNameDictionary = new HashMap<>();
|
|
private Map<String, ServerCpu> s390CpuByVdsNameDictionary = new HashMap<>();
|
|
+ private Map<String, ServerCpu> kunpengCpuByVdsNameDictionary = new HashMap<>();
|
|
|
|
public CpuFlagsManager(Version ver) {
|
|
initDictionaries(ver);
|
|
@@ -200,6 +203,8 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
result = CpuVendor.IBM.name();
|
|
} else if (s390CpuByNameDictionary.get(cpuName) != null) {
|
|
result = CpuVendor.IBMS390.name();
|
|
+ } else if (kunpengCpuByNameDictionary.get(cpuName) != null) {
|
|
+ result = CpuVendor.KUNPENG.name();
|
|
}
|
|
}
|
|
return result;
|
|
@@ -222,6 +227,10 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
if (result == null) {
|
|
result = s390CpuByNameDictionary.get(cpuName);
|
|
}
|
|
+
|
|
+ if (result == null) {
|
|
+ result = kunpengCpuByNameDictionary.get(cpuName);
|
|
+ }
|
|
}
|
|
return result;
|
|
}
|
|
@@ -233,6 +242,7 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
amdCpuByNameDictionary.clear();
|
|
ibmCpuByNameDictionary.clear();
|
|
s390CpuByNameDictionary.clear();
|
|
+ kunpengCpuByNameDictionary.clear();
|
|
allCpuList.clear();
|
|
|
|
String[] cpus = Config.<String> getValue(ConfigValues.ServerCPUList, ver.toString()).trim().split("[;]", -1);
|
|
@@ -271,6 +281,9 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
} else if (sc.getFlags().contains(CpuVendor.IBMS390.getFlag())) {
|
|
s390CpuByNameDictionary.put(sc.getCpuName(), sc);
|
|
s390CpuByVdsNameDictionary.put(sc.getVdsVerbData(), sc);
|
|
+ } else if (sc.getFlags().contains(CpuVendor.KUNPENG.getFlag())) {
|
|
+ kunpengCpuByNameDictionary.put(sc.getCpuName(), sc);
|
|
+ kunpengCpuByVdsNameDictionary.put(sc.getVdsVerbData(), sc);
|
|
}
|
|
|
|
allCpuList.add(sc);
|
|
@@ -283,6 +296,7 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
amdCpuList = new ArrayList<>(amdCpuByNameDictionary.values());
|
|
ibmCpuList = new ArrayList<>(ibmCpuByNameDictionary.values());
|
|
s390CpuList = new ArrayList<>(s390CpuByNameDictionary.values());
|
|
+ kunpengCpuList = new ArrayList<>(kunpengCpuByNameDictionary.values());
|
|
|
|
Comparator<ServerCpu> cpuComparator = Comparator.comparingInt(ServerCpu::getLevel);
|
|
|
|
@@ -292,6 +306,7 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
Collections.sort(amdCpuList, cpuComparator);
|
|
Collections.sort(ibmCpuList, cpuComparator);
|
|
Collections.sort(s390CpuList, cpuComparator);
|
|
+ Collections.sort(kunpengCpuList, cpuComparator);
|
|
}
|
|
|
|
public String getVDSVerbDataByCpuName(String name) {
|
|
@@ -301,7 +316,8 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
if ((sc = intelCpuByNameDictionary.get(name)) != null
|
|
|| (sc = amdCpuByNameDictionary.get(name)) != null
|
|
|| (sc = ibmCpuByNameDictionary.get(name)) != null
|
|
- || (sc = s390CpuByNameDictionary.get(name)) != null) {
|
|
+ || (sc = s390CpuByNameDictionary.get(name)) != null
|
|
+ || (sc = kunpengCpuByNameDictionary.get(name)) != null) {
|
|
result = sc.getVdsVerbData();
|
|
}
|
|
}
|
|
@@ -315,7 +331,8 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
if ((sc = intelCpuByVdsNameDictionary.get(vdsName)) != null
|
|
|| (sc = amdCpuByVdsNameDictionary.get(vdsName)) != null
|
|
|| (sc = ibmCpuByVdsNameDictionary.get(vdsName)) != null
|
|
- || (sc = s390CpuByVdsNameDictionary.get(vdsName)) != null) {
|
|
+ || (sc = s390CpuByVdsNameDictionary.get(vdsName)) != null
|
|
+ || (sc = kunpengCpuByVdsNameDictionary.get(vdsName)) != null) {
|
|
result = sc.getCpuName();
|
|
}
|
|
}
|
|
@@ -346,6 +363,7 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
|| (clusterCpu = amdCpuByNameDictionary.get(clusterCpuName)) != null
|
|
|| (clusterCpu = ibmCpuByNameDictionary.get(clusterCpuName)) != null
|
|
|| (clusterCpu = s390CpuByNameDictionary.get(clusterCpuName)) != null
|
|
+ || (clusterCpu = kunpengCpuByNameDictionary.get(clusterCpuName)) != null
|
|
)) {
|
|
for (String flag : clusterCpu.getFlags()) {
|
|
if (!lstServerflags.contains(flag)) {
|
|
@@ -393,6 +411,10 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
return s390CpuByNameDictionary.containsKey(cpuName2);
|
|
}
|
|
|
|
+ if (kunpengCpuByNameDictionary.containsKey(cpuName1)) {
|
|
+ return kunpengCpuByNameDictionary.containsKey(cpuName2);
|
|
+ }
|
|
+
|
|
return false;
|
|
}
|
|
|
|
@@ -401,7 +423,8 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
&& (intelCpuByNameDictionary.containsKey(cpuName)
|
|
|| amdCpuByNameDictionary.containsKey(cpuName)
|
|
|| ibmCpuByNameDictionary.containsKey(cpuName)
|
|
- || s390CpuByNameDictionary.containsKey(cpuName));
|
|
+ || s390CpuByNameDictionary.containsKey(cpuName)
|
|
+ || kunpengCpuByNameDictionary.containsKey(cpuName));
|
|
}
|
|
|
|
/**
|
|
@@ -441,6 +464,12 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
foundCpus.add(s390CpuList.get(i));
|
|
}
|
|
}
|
|
+ } else if (lstFlags.contains(CpuVendor.KUNPENG.getFlag())) {
|
|
+ for (int i = kunpengCpuList.size() - 1; i >= 0; i--) {
|
|
+ if (checkIfFlagsContainsCpuFlags(kunpengCpuList.get(i), lstFlags)) {
|
|
+ foundCpus.add(kunpengCpuList.get(i));
|
|
+ }
|
|
+ }
|
|
}
|
|
return foundCpus;
|
|
}
|
|
@@ -478,6 +507,12 @@ public class CpuFlagsManagerHandler implements BackendService {
|
|
for (int i = 0; i <= selectedCpuIndex; i++) {
|
|
supportedCpus.add(s390CpuList.get(i));
|
|
}
|
|
+ } else if (kunpengCpuByNameDictionary.containsKey(maxCpuName)) {
|
|
+ ServerCpu selected = kunpengCpuByNameDictionary.get(maxCpuName);
|
|
+ int selectedCpuIndex = kunpengCpuList.indexOf(selected);
|
|
+ for (int i = 0; i <= selectedCpuIndex; i++) {
|
|
+ supportedCpus.add(kunpengCpuList.get(i));
|
|
+ }
|
|
}
|
|
return supportedCpus;
|
|
|
|
diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
|
|
index 11155e4..7782b90 100644
|
|
--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
|
|
+++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
|
|
@@ -1133,7 +1133,8 @@ public class RunVmCommand<T extends RunVmParams> extends RunVmCommandBase<T>
|
|
if (FeatureSupported.isBiosTypeSupported(getCluster().getCompatibilityVersion())
|
|
&& getVm().getCustomBiosType() != BiosType.CLUSTER_DEFAULT
|
|
&& getVm().getCustomBiosType() != BiosType.I440FX_SEA_BIOS
|
|
- && getCluster().getArchitecture().getFamily() != ArchitectureType.x86) {
|
|
+ && getCluster().getArchitecture().getFamily() != ArchitectureType.x86
|
|
+ && getCluster().getArchitecture().getFamily() != ArchitectureType.aarch64) {
|
|
return failValidation(EngineMessage.NON_DEFAULT_BIOS_TYPE_FOR_X86_ONLY);
|
|
}
|
|
|
|
diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
|
|
index 05b5a87..b131326 100644
|
|
--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
|
|
+++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
|
|
@@ -1339,7 +1339,8 @@ public class UpdateVmCommand<T extends VmManagementParametersBase> extends VmMan
|
|
&& vmFromParams.getCustomBiosType() != BiosType.CLUSTER_DEFAULT
|
|
&& vmFromParams.getCustomBiosType() != BiosType.I440FX_SEA_BIOS
|
|
&& getCluster().getArchitecture() != ArchitectureType.undefined
|
|
- && getCluster().getArchitecture().getFamily() != ArchitectureType.x86) {
|
|
+ && getCluster().getArchitecture().getFamily() != ArchitectureType.x86
|
|
+ && getCluster().getArchitecture().getFamily() != ArchitectureType.aarch64) {
|
|
return failValidation(EngineMessage.NON_DEFAULT_BIOS_TYPE_FOR_X86_ONLY);
|
|
}
|
|
|
|
diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/architecture/HasMaximumNumberOfDisks.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/architecture/HasMaximumNumberOfDisks.java
|
|
index fd0afd7..9812295 100644
|
|
--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/architecture/HasMaximumNumberOfDisks.java
|
|
+++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/architecture/HasMaximumNumberOfDisks.java
|
|
@@ -38,6 +38,11 @@ public class HasMaximumNumberOfDisks implements ArchCommand {
|
|
hasMaximum = VmCommand.MAX_VIRTIO_CCW_DISKS == countDisks(DiskInterface.VirtIO);
|
|
}
|
|
|
|
+ @Override
|
|
+ public void runForAarch64() {
|
|
+ hasMaximum = VmCommand.MAX_VIRTIO_CCW_DISKS == countDisks(DiskInterface.VirtIO);
|
|
+ }
|
|
+
|
|
public boolean returnValue() {
|
|
return hasMaximum;
|
|
}
|
|
diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/cluster/KubevirtProviderProxy.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/cluster/KubevirtProviderProxy.java
|
|
index 7f048b4..1773be7 100644
|
|
--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/cluster/KubevirtProviderProxy.java
|
|
+++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/cluster/KubevirtProviderProxy.java
|
|
@@ -173,8 +173,10 @@ public class KubevirtProviderProxy implements ProviderProxy<ProviderValidator<Ku
|
|
cluster.setStoragePoolId(findOrCreateKubevirtDataCenterId());
|
|
cluster.setDescription(provider.getDescription());
|
|
cluster.setCompatibilityVersion(Version.getLast());
|
|
- cluster.setArchitecture(ArchitectureType.x86_64);
|
|
- cluster.setCpuName("Intel Nehalem Family");
|
|
+ cluster.setArchitecture(ArchitectureType.aarch64);
|
|
+ cluster.setCpuName("Kunpeng 920");
|
|
+// cluster.setArchitecture(ArchitectureType.x86_64);
|
|
+// cluster.setCpuName("Intel Nehalem Family");
|
|
cluster.setId(provider.getId());
|
|
cluster.setManaged(false);
|
|
FencingPolicy fencingPolicy = new FencingPolicy();
|
|
diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/ClusterValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/ClusterValidator.java
|
|
index b38e073..9e13a3d 100644
|
|
--- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/ClusterValidator.java
|
|
+++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/ClusterValidator.java
|
|
@@ -462,7 +462,8 @@ public class ClusterValidator {
|
|
&& eCluster.getBiosType() != null
|
|
&& eCluster.getBiosType() != BiosType.CLUSTER_DEFAULT
|
|
&& eCluster.getBiosType() != BiosType.I440FX_SEA_BIOS
|
|
- && architecture.getFamily() != ArchitectureType.x86);
|
|
+ && architecture.getFamily() != ArchitectureType.x86
|
|
+ && architecture.getFamily() != ArchitectureType.aarch64);
|
|
}
|
|
|
|
private boolean attestationServerEnabled() {
|
|
diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ArchitectureType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ArchitectureType.java
|
|
index bea8567..1168b43 100644
|
|
--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ArchitectureType.java
|
|
+++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ArchitectureType.java
|
|
@@ -14,6 +14,8 @@ public enum ArchitectureType implements Identifiable {
|
|
ppc(3),
|
|
/* Host & Guest architecture */
|
|
s390x(7),
|
|
+ /* Host & Guest architecture */
|
|
+ aarch64(8),
|
|
|
|
// Specific architectures
|
|
/* Host & Guest architecture */
|
|
@@ -27,6 +29,7 @@ public enum ArchitectureType implements Identifiable {
|
|
|
|
public static final int HOTPLUG_MEMORY_FACTOR_PPC_MB = 256;
|
|
public static final int HOTPLUG_MEMORY_FACTOR_X86_MB = 128;
|
|
+ public static final int HOTPLUG_MEMORY_FACTOR_AARCH64_MB = 128;
|
|
private int value;
|
|
private int family;
|
|
private static final Map<Integer, ArchitectureType> valueToArchitecture =
|
|
@@ -64,6 +67,8 @@ public enum ArchitectureType implements Identifiable {
|
|
return HOTPLUG_MEMORY_FACTOR_X86_MB;
|
|
case ppc:
|
|
return HOTPLUG_MEMORY_FACTOR_PPC_MB;
|
|
+ case aarch64:
|
|
+ return HOTPLUG_MEMORY_FACTOR_AARCH64_MB;
|
|
default:
|
|
return getFamily().getHotplugMemorySizeFactorMb();
|
|
}
|
|
diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BiosType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BiosType.java
|
|
index a72352c..bd696dd 100644
|
|
--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BiosType.java
|
|
+++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/BiosType.java
|
|
@@ -20,7 +20,8 @@ public enum BiosType implements Identifiable {
|
|
I440FX_SEA_BIOS(1, ChipsetType.I440FX, false),
|
|
Q35_SEA_BIOS(2, ChipsetType.Q35, false),
|
|
Q35_OVMF(3, ChipsetType.Q35, true),
|
|
- Q35_SECURE_BOOT(4, ChipsetType.Q35, true);
|
|
+ Q35_SECURE_BOOT(4, ChipsetType.Q35, true),
|
|
+ VIRT_OVMF(5, ChipsetType.VIRT, true);
|
|
|
|
private int value;
|
|
private ChipsetType chipsetType;
|
|
diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ChipsetType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ChipsetType.java
|
|
index 26588ba..7b77fe0 100644
|
|
--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ChipsetType.java
|
|
+++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/ChipsetType.java
|
|
@@ -3,7 +3,8 @@ package org.ovirt.engine.core.common.businessentities;
|
|
public enum ChipsetType {
|
|
|
|
I440FX("i440fx"),
|
|
- Q35("q35");
|
|
+ Q35("q35"),
|
|
+ VIRT("virt");
|
|
|
|
private String chipsetName;
|
|
|
|
diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
|
|
index 6de8d47..19f2e91 100644
|
|
--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
|
|
+++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
|
|
@@ -1431,6 +1431,9 @@ public enum ConfigValues {
|
|
@TypeConverterAttribute(Integer.class)
|
|
VMPpc64BitMaxMemorySizeInMB(ClientAccessLevel.User),
|
|
|
|
+ @TypeConverterAttribute(Integer.class)
|
|
+ VMAarch64BitMaxMemorySizeInMB(ClientAccessLevel.User),
|
|
+
|
|
@TypeConverterAttribute(Boolean.class)
|
|
AutoImportHostedEngine,
|
|
|
|
diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java
|
|
index 523df02..63605f2 100644
|
|
--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java
|
|
+++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/osinfo/OsRepository.java
|
|
@@ -22,6 +22,7 @@ public interface OsRepository {
|
|
int DEFAULT_X86_OS = 0;
|
|
int DEFAULT_PPC_OS = 1001;
|
|
int DEFAULT_S390_OS = 2001;
|
|
+ int DEFAULT_AARCH64_OS = 3001;
|
|
|
|
/*
|
|
* This value is used to enable the auto selection of an appropriate OS when
|
|
diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/CpuVendor.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/CpuVendor.java
|
|
index 66bde41..09909ff 100644
|
|
--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/CpuVendor.java
|
|
+++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/CpuVendor.java
|
|
@@ -8,7 +8,8 @@ public enum CpuVendor implements Serializable {
|
|
INTEL("vmx"),
|
|
AMD("svm"),
|
|
IBM("powernv"),
|
|
- IBMS390("sie");
|
|
+ IBMS390("sie"),
|
|
+ KUNPENG("asimd");
|
|
|
|
private final String flag;
|
|
|
|
diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmCommonUtils.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmCommonUtils.java
|
|
index 34d5168..cc73d5c 100644
|
|
--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmCommonUtils.java
|
|
+++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmCommonUtils.java
|
|
@@ -78,9 +78,11 @@ public class VmCommonUtils {
|
|
private static ConfigValues getMaxMemConfigValueByOsId(int osId) {
|
|
OsRepository osRepository = SimpleDependencyInjector.getInstance().get(OsRepository.class);
|
|
return osRepository.get64bitOss().contains(osId)
|
|
- ? (osRepository.getOsArchitectures().get(osId).getFamily() == ArchitectureType.ppc
|
|
+ ? ((osRepository.getOsArchitectures().get(osId).getFamily() == ArchitectureType.aarch64)
|
|
+ ? ConfigValues.VMAarch64BitMaxMemorySizeInMB
|
|
+ : (osRepository.getOsArchitectures().get(osId).getFamily() == ArchitectureType.ppc
|
|
? ConfigValues.VMPpc64BitMaxMemorySizeInMB
|
|
- : ConfigValues.VM64BitMaxMemorySizeInMB)
|
|
+ : ConfigValues.VM64BitMaxMemorySizeInMB))
|
|
: ConfigValues.VM32BitMaxMemorySizeInMB;
|
|
}
|
|
|
|
diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmCpuCountHelper.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmCpuCountHelper.java
|
|
index ca1f77d..97c375b 100644
|
|
--- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmCpuCountHelper.java
|
|
+++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmCpuCountHelper.java
|
|
@@ -25,7 +25,7 @@ public class VmCpuCountHelper {
|
|
|
|
static Integer calcMaxVCpu(ArchitectureType architecture, Integer maxSockets, Integer maxVCpus,
|
|
int threadsPerCore, int cpuPerSocket) {
|
|
- if (architecture == null || architecture == ArchitectureType.x86) {
|
|
+ if (architecture == null || architecture == ArchitectureType.x86 || architecture == ArchitectureType.aarch64) {
|
|
// As described in https://bugzilla.redhat.com/1406243#c13, the
|
|
// maximum number of vCPUs is limited by thread and core numbers on
|
|
// x86, to fit into an 8-bit APIC ID value organized by certain
|
|
@@ -114,7 +114,7 @@ public class VmCpuCountHelper {
|
|
*/
|
|
public static boolean validateCpuCounts(VM vm) {
|
|
ArchitectureType architecture = architectureFamily(vm);
|
|
- if (architecture == null || architecture == ArchitectureType.x86) {
|
|
+ if (architecture == null || architecture == ArchitectureType.x86 || architecture == ArchitectureType.aarch64) {
|
|
return bitWidth(vm.getThreadsPerCpu()) + bitWidth(vm.getCpuPerSocket()) <= maxBitWidth;
|
|
}
|
|
return true;
|
|
diff --git a/backend/manager/modules/restapi/jaxrs/src/main/resources/v3/capabilities.xml b/backend/manager/modules/restapi/jaxrs/src/main/resources/v3/capabilities.xml
|
|
index 0501810..1dffa6c 100644
|
|
--- a/backend/manager/modules/restapi/jaxrs/src/main/resources/v3/capabilities.xml
|
|
+++ b/backend/manager/modules/restapi/jaxrs/src/main/resources/v3/capabilities.xml
|
|
@@ -366,6 +366,10 @@
|
|
<level>3</level>
|
|
<architecture>PPC64</architecture>
|
|
</cpu>
|
|
+ <cpu id="Kunpeng 920">
|
|
+ <level>3</level>
|
|
+ <architecture>AARCH64</architecture>
|
|
+ </cpu>
|
|
</cpus>
|
|
<power_managers>
|
|
<power_management type="apc">
|
|
@@ -545,6 +549,7 @@
|
|
<os_type>ubuntu_13_04</os_type>
|
|
<os_type>ubuntu_12_10</os_type>
|
|
<os_type>windows_7x64</os_type>
|
|
+ <os_type>other_aarch64</os_type>
|
|
</os_types>
|
|
<disk_formats>
|
|
<disk_format>cow</disk_format>
|
|
@@ -1237,18 +1242,21 @@
|
|
<architectures>undefined</architectures>
|
|
<architectures>x86_64</architectures>
|
|
<architectures>ppc64</architectures>
|
|
+ <architectures>aarch64</architectures>
|
|
</architecture_capability>
|
|
<architecture_capability>
|
|
<name>memory snapshot</name>
|
|
<architectures>undefined</architectures>
|
|
<architectures>x86_64</architectures>
|
|
<architectures>ppc64</architectures>
|
|
+ <architectures>aarch64</architectures>
|
|
</architecture_capability>
|
|
<architecture_capability>
|
|
<name>suspend</name>
|
|
<architectures>undefined</architectures>
|
|
<architectures>x86_64</architectures>
|
|
<architectures>ppc64</architectures>
|
|
+ <architectures>aarch64</architectures>
|
|
</architecture_capability>
|
|
</architecture_capabilities>
|
|
<serial_number_policies>
|
|
diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/CPUMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/CPUMapper.java
|
|
index 422595f..ce33104 100644
|
|
--- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/CPUMapper.java
|
|
+++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/CPUMapper.java
|
|
@@ -32,6 +32,8 @@ public class CPUMapper {
|
|
return ArchitectureType.ppc64;
|
|
case S390X:
|
|
return ArchitectureType.s390x;
|
|
+ case AARCH64:
|
|
+ return ArchitectureType.aarch64;
|
|
default:
|
|
return null;
|
|
}
|
|
@@ -52,6 +54,8 @@ public class CPUMapper {
|
|
return Architecture.PPC64;
|
|
case s390x:
|
|
return Architecture.S390X;
|
|
+ case aarch64:
|
|
+ return Architecture.AARCH64;
|
|
default:
|
|
return null;
|
|
}
|
|
diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
|
|
index 251ff83..956fc6c 100644
|
|
--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
|
|
+++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
|
|
@@ -49,12 +49,13 @@ public enum OsRepositoryImpl implements OsRepository {
|
|
*/
|
|
private Map<Integer, String> idToUnameLookup;
|
|
private Map<String, Integer> backwardCompatibleNamesToIds;
|
|
- private static Map<ArchitectureType, Integer> defaultOsMap = new HashMap<>(3);
|
|
+ private static Map<ArchitectureType, Integer> defaultOsMap = new HashMap<>(4);
|
|
|
|
static {
|
|
defaultOsMap.put(ArchitectureType.x86_64, DEFAULT_X86_OS);
|
|
defaultOsMap.put(ArchitectureType.ppc64, DEFAULT_PPC_OS);
|
|
defaultOsMap.put(ArchitectureType.s390x, DEFAULT_S390_OS);
|
|
+ defaultOsMap.put(ArchitectureType.aarch64, DEFAULT_AARCH64_OS);
|
|
}
|
|
|
|
public void init(MapBackedPreferences preferences) {
|
|
diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OvfUtils.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OvfUtils.java
|
|
index b960cb9..cda5a53 100644
|
|
--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OvfUtils.java
|
|
+++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OvfUtils.java
|
|
@@ -300,7 +300,8 @@ public class OvfUtils {
|
|
String value = section.attributes.get("xsi:type").getValue();
|
|
|
|
if (value.equals("ovf:OperatingSystemSection_Type")) {
|
|
- selectedSection = section;
|
|
+ XmlNode nodeDescription = section.selectSingleNode("Description");
|
|
+ selectedSection = nodeDescription;
|
|
break;
|
|
}
|
|
}
|
|
diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/Aarch64Strategy.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/Aarch64Strategy.java
|
|
new file mode 100644
|
|
index 0000000..33dabb1
|
|
--- /dev/null
|
|
+++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/Aarch64Strategy.java
|
|
@@ -0,0 +1,18 @@
|
|
+package org.ovirt.engine.core.utils.archstrategy;
|
|
+
|
|
+import org.ovirt.engine.core.common.businessentities.ArchitectureType;
|
|
+
|
|
+public class Aarch64Strategy implements ArchStrategy {
|
|
+
|
|
+ @Override
|
|
+ public ArchitectureType getArchitecture() {
|
|
+ return ArchitectureType.aarch64;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public <T extends ArchCommand> T run(T c) {
|
|
+ c.runForAarch64();
|
|
+ return c;
|
|
+ }
|
|
+
|
|
+}
|
|
diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/ArchCommand.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/ArchCommand.java
|
|
index c35bb52..4f1cdda 100644
|
|
--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/ArchCommand.java
|
|
+++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/ArchCommand.java
|
|
@@ -6,4 +6,6 @@ public interface ArchCommand {
|
|
void runForPPC64();
|
|
|
|
void runForS390X();
|
|
+
|
|
+ void runForAarch64();
|
|
}
|
|
diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/ArchStrategyFactory.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/ArchStrategyFactory.java
|
|
index eddd753..d5ae95b 100644
|
|
--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/ArchStrategyFactory.java
|
|
+++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/archstrategy/ArchStrategyFactory.java
|
|
@@ -13,6 +13,7 @@ public class ArchStrategyFactory {
|
|
architectureArchStrategyMap.put(ArchitectureType.x86_64, new X86_64Strategy());
|
|
architectureArchStrategyMap.put(ArchitectureType.ppc64, new PPC64Strategy());
|
|
architectureArchStrategyMap.put(ArchitectureType.s390x, new S390XStrategy());
|
|
+ architectureArchStrategyMap.put(ArchitectureType.aarch64, new Aarch64Strategy());
|
|
}
|
|
|
|
public static ArchStrategy getStrategy(ArchitectureType architecture) {
|
|
diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfOvaWriter.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfOvaWriter.java
|
|
index c0ae977..0f15f69 100644
|
|
--- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfOvaWriter.java
|
|
+++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfOvaWriter.java
|
|
@@ -164,6 +164,7 @@ public abstract class OvfOvaWriter extends OvfWriter {
|
|
return 80; // RHEL x64
|
|
case 1001:
|
|
case 2001:
|
|
+ case 3001:
|
|
default:
|
|
return 1; // Other
|
|
}
|
|
diff --git a/backend/manager/modules/utils/src/main/javacc/org/ovirt/engine/core/utils/osinfo/osinfo.jj b/backend/manager/modules/utils/src/main/javacc/org/ovirt/engine/core/utils/osinfo/osinfo.jj
|
|
index ca11993..55a66ca 100644
|
|
--- a/backend/manager/modules/utils/src/main/javacc/org/ovirt/engine/core/utils/osinfo/osinfo.jj
|
|
+++ b/backend/manager/modules/utils/src/main/javacc/org/ovirt/engine/core/utils/osinfo/osinfo.jj
|
|
@@ -92,7 +92,7 @@ void booleanValue() : {} {
|
|
}
|
|
|
|
void archValue() : {} {
|
|
- valueSpecifier() ("x86_64" | "ppc64" | "s390x")
|
|
+ valueSpecifier() ("x86_64" | "ppc64" | "s390x" | "aarch64")
|
|
}
|
|
|
|
void busValue() : {} {
|
|
@@ -192,7 +192,7 @@ void valueSpecifier() : {} {
|
|
>
|
|
| < CHIPSET_TYPE
|
|
:
|
|
- ("i440fx" | "q35")
|
|
+ ("i440fx" | "q35" | "virt")
|
|
>
|
|
| < CD_INTERFACE_TYPE
|
|
:
|
|
diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllers.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllers.java
|
|
index e8b49ab..2d4511e 100644
|
|
--- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllers.java
|
|
+++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllers.java
|
|
@@ -43,4 +43,9 @@ public class CreateAdditionalControllers implements ArchCommand {
|
|
// For now same as on x86
|
|
runForX86_64();
|
|
}
|
|
+ @Override
|
|
+ public void runForAarch64() {
|
|
+ // For now same as on x86
|
|
+ runForX86_64();
|
|
+ }
|
|
}
|
|
diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllersForDomainXml.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllersForDomainXml.java
|
|
index 55b73ba..b06514c 100644
|
|
--- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllersForDomainXml.java
|
|
+++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllersForDomainXml.java
|
|
@@ -61,4 +61,9 @@ public class CreateAdditionalControllersForDomainXml implements ArchCommand {
|
|
// For now same as on x86
|
|
runForX86_64();
|
|
}
|
|
+ @Override
|
|
+ public void runForAarch64() {
|
|
+ // For now same as on x86
|
|
+ runForX86_64();
|
|
+ }
|
|
}
|
|
diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/GetBootableDiskIndex.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/GetBootableDiskIndex.java
|
|
index 7cbaf04..69a6bd3 100644
|
|
--- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/GetBootableDiskIndex.java
|
|
+++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/GetBootableDiskIndex.java
|
|
@@ -36,6 +36,11 @@ public class GetBootableDiskIndex implements ArchCommand {
|
|
diskIndex = 0;
|
|
}
|
|
|
|
+ @Override
|
|
+ public void runForAarch64() {
|
|
+ diskIndex = 0;
|
|
+ }
|
|
+
|
|
public int returnValue() {
|
|
return diskIndex;
|
|
}
|
|
diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/GetControllerIndices.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/GetControllerIndices.java
|
|
index 30c289e..086f2ed 100644
|
|
--- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/GetControllerIndices.java
|
|
+++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/architecture/GetControllerIndices.java
|
|
@@ -35,6 +35,12 @@ public class GetControllerIndices implements ArchCommand {
|
|
runForX86_64();
|
|
}
|
|
|
|
+ @Override
|
|
+ public void runForAarch64() {
|
|
+ // For now the same as x86
|
|
+ runForX86_64();
|
|
+ }
|
|
+
|
|
public Map<DiskInterface, Integer> returnValue() {
|
|
return controllerIndexMap;
|
|
}
|
|
diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/LibvirtVmXmlBuilder.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/LibvirtVmXmlBuilder.java
|
|
index 129816c..cbf5c9e 100644
|
|
--- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/LibvirtVmXmlBuilder.java
|
|
+++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/LibvirtVmXmlBuilder.java
|
|
@@ -410,7 +410,7 @@ public class LibvirtVmXmlBuilder {
|
|
writer.writeStartElement("cpu");
|
|
|
|
String cpuType = vm.getCpuName();
|
|
- if (vm.isUseHostCpuFlags()){
|
|
+ if (vm.isUseHostCpuFlags() || vm.getClusterArch().getFamily() == ArchitectureType.aarch64){
|
|
cpuType = "hostPassthrough";
|
|
}
|
|
if (vm.getUseTscFrequency() && tscFrequencySupplier.get() != null) {
|
|
@@ -430,6 +430,7 @@ public class LibvirtVmXmlBuilder {
|
|
switch(vm.getClusterArch().getFamily()) {
|
|
case x86:
|
|
case s390x:
|
|
+ case aarch64:
|
|
writer.writeAttributeString("match", "exact");
|
|
|
|
// is this a list of strings??..
|
|
@@ -690,13 +691,21 @@ public class LibvirtVmXmlBuilder {
|
|
boolean secureBoot = vm.getEffectiveBiosType() == BiosType.Q35_SECURE_BOOT;
|
|
writer.writeAttributeString("secure", secureBoot ? "yes" : "no");
|
|
writer.writeAttributeString("type", "pflash");
|
|
- writer.writeRaw("/usr/share/OVMF/OVMF_CODE.secboot.fd");
|
|
+ if (vm.getClusterArch().getFamily() == ArchitectureType.aarch64) {
|
|
+ writer.writeRaw("/usr/share/AAVMF/AAVMF_CODE.fd");
|
|
+ } else {
|
|
+ writer.writeRaw("/usr/share/OVMF/OVMF_CODE.secboot.fd");
|
|
+ }
|
|
writer.writeEndElement();
|
|
writer.writeStartElement("nvram");
|
|
String nvramTemplate = vmCustomProperties.get("nvram_template");
|
|
if (nvramTemplate == null) {
|
|
- nvramTemplate = String.format("/usr/share/OVMF/%s",
|
|
+ if(vm.getClusterArch().getFamily() == ArchitectureType.aarch64){
|
|
+ nvramTemplate = "/usr/share/AAVMF/AAVMF_CODE.fd";
|
|
+ } else {
|
|
+ nvramTemplate = String.format("/usr/share/OVMF/%s",
|
|
secureBoot ? "OVMF_VARS.secboot.fd" : "OVMF_VARS.fd");
|
|
+ }
|
|
}
|
|
writer.writeAttributeString("template", nvramTemplate);
|
|
writer.writeRaw(String.format("/var/lib/libvirt/qemu/nvram/%s.fd", vm.getId()));
|
|
@@ -729,8 +738,12 @@ public class LibvirtVmXmlBuilder {
|
|
// <timer name="rtc" tickpolicy="catchup">
|
|
// </clock>
|
|
writer.writeStartElement("clock");
|
|
- writer.writeAttributeString("offset", "variable");
|
|
- writer.writeAttributeString("adjustment", String.valueOf(vmInfoBuildUtils.getVmTimeZone(vm)));
|
|
+ if (vm.getClusterArch().getFamily() == ArchitectureType.aarch64) {
|
|
+ writer.writeAttributeString("offset", "utc");
|
|
+ } else {
|
|
+ writer.writeAttributeString("offset", "variable");
|
|
+ writer.writeAttributeString("adjustment", String.valueOf(vmInfoBuildUtils.getVmTimeZone(vm)));
|
|
+ }
|
|
|
|
if (hypervEnabled) {
|
|
writer.writeStartElement("timer");
|
|
@@ -738,16 +751,16 @@ public class LibvirtVmXmlBuilder {
|
|
writer.writeAttributeString("present", "yes");
|
|
writer.writeEndElement();
|
|
}
|
|
-
|
|
- writer.writeStartElement("timer");
|
|
- writer.writeAttributeString("name", "rtc");
|
|
- writer.writeAttributeString("tickpolicy", "catchup");
|
|
- writer.writeEndElement();
|
|
-
|
|
- writer.writeStartElement("timer");
|
|
- writer.writeAttributeString("name", "pit");
|
|
- writer.writeAttributeString("tickpolicy", "delay");
|
|
- writer.writeEndElement();
|
|
+ if(vm.getClusterArch().getFamily() != ArchitectureType.aarch64) {
|
|
+ writer.writeStartElement("timer");
|
|
+ writer.writeAttributeString("name", "rtc");
|
|
+ writer.writeAttributeString("tickpolicy", "catchup");
|
|
+ writer.writeEndElement();
|
|
+ writer.writeStartElement("timer");
|
|
+ writer.writeAttributeString("name", "pit");
|
|
+ writer.writeAttributeString("tickpolicy", "delay");
|
|
+ writer.writeEndElement();
|
|
+ }
|
|
|
|
if (vm.getClusterArch().getFamily() == ArchitectureType.x86) {
|
|
writer.writeStartElement("timer");
|
|
@@ -767,7 +780,8 @@ public class LibvirtVmXmlBuilder {
|
|
}
|
|
|
|
private void writeFeatures() {
|
|
- if (vm.getClusterArch().getFamily() != ArchitectureType.x86) {
|
|
+ if (vm.getClusterArch().getFamily() != ArchitectureType.x86 &&
|
|
+ vm.getClusterArch().getFamily() != ArchitectureType.aarch64) {
|
|
return;
|
|
}
|
|
|
|
@@ -782,6 +796,11 @@ public class LibvirtVmXmlBuilder {
|
|
|
|
if (acpiEnabled) {
|
|
writer.writeElement("acpi");
|
|
+ if( vm.getClusterArch().getFamily() == ArchitectureType.aarch64 ) {
|
|
+ writer.writeStartElement("gic");
|
|
+ writer.writeAttributeString("version", "3");
|
|
+ }
|
|
+ writer.writeEndElement();
|
|
}
|
|
|
|
if (hypervEnabled) {
|
|
@@ -1037,7 +1056,8 @@ public class LibvirtVmXmlBuilder {
|
|
|
|
writeGuestAgentChannels();
|
|
|
|
- if (vm.getClusterArch() == ArchitectureType.ppc64 || vm.getClusterArch() == ArchitectureType.ppc64le) {
|
|
+ if (vm.getClusterArch() == ArchitectureType.ppc64 || vm.getClusterArch() == ArchitectureType.ppc64le ||
|
|
+ vm.getClusterArch() == ArchitectureType.aarch64) {
|
|
writeEmulator();
|
|
}
|
|
|
|
@@ -1195,8 +1215,9 @@ public class LibvirtVmXmlBuilder {
|
|
writeSpiceVmcChannel();
|
|
}
|
|
|
|
- if (vm.getClusterArch().getFamily() == ArchitectureType.x86
|
|
- && vm.getEffectiveBiosType().getChipsetType() == ChipsetType.Q35) {
|
|
+ if ((vm.getClusterArch().getFamily() == ArchitectureType.x86
|
|
+ && vm.getEffectiveBiosType().getChipsetType() == ChipsetType.Q35)
|
|
+ || vm.getClusterArch().getFamily() == ArchitectureType.aarch64) {
|
|
writePciEControllers(pciERootExists, pciEPorts);
|
|
}
|
|
|
|
@@ -2853,22 +2874,28 @@ public class LibvirtVmXmlBuilder {
|
|
writer.writeStartElement("video");
|
|
|
|
writer.writeStartElement("model");
|
|
- if (mdevDisplayOn) {
|
|
- writer.writeAttributeString("type", "none");
|
|
- } else {
|
|
- writer.writeAttributeString("type", device.getDevice());
|
|
- Object vram = device.getSpecParams().get(VdsProperties.VIDEO_VRAM);
|
|
- writer.writeAttributeString("vram", vram != null ? vram.toString() : "32768");
|
|
+ if (vm.getClusterArch().getFamily() == ArchitectureType.aarch64) {
|
|
+ writer.writeAttributeString("type", "virtio");
|
|
Object heads = device.getSpecParams().get(VdsProperties.VIDEO_HEADS);
|
|
writer.writeAttributeString("heads", heads != null ? heads.toString() : "1");
|
|
- if (device.getSpecParams().containsKey(VdsProperties.VIDEO_RAM)) {
|
|
- writer.writeAttributeString("ram", device.getSpecParams().get(VdsProperties.VIDEO_RAM).toString());
|
|
- }
|
|
- if (device.getSpecParams().containsKey(VdsProperties.VIDEO_VGAMEM)) {
|
|
- writer.writeAttributeString("vgamem", device.getSpecParams().get(VdsProperties.VIDEO_VGAMEM).toString());
|
|
- }
|
|
- }
|
|
-
|
|
+ writer.writeAttributeString("primary", "yes");
|
|
+ } else {
|
|
+ if (mdevDisplayOn) {
|
|
+ writer.writeAttributeString("type", "none");
|
|
+ } else {
|
|
+ writer.writeAttributeString("type", device.getDevice());
|
|
+ Object vram = device.getSpecParams().get(VdsProperties.VIDEO_VRAM);
|
|
+ writer.writeAttributeString("vram", vram != null ? vram.toString() : "32768");
|
|
+ Object heads = device.getSpecParams().get(VdsProperties.VIDEO_HEADS);
|
|
+ writer.writeAttributeString("heads", heads != null ? heads.toString() : "1");
|
|
+ if (device.getSpecParams().containsKey(VdsProperties.VIDEO_RAM)) {
|
|
+ writer.writeAttributeString("ram", device.getSpecParams().get(VdsProperties.VIDEO_RAM).toString());
|
|
+ }
|
|
+ if (device.getSpecParams().containsKey(VdsProperties.VIDEO_VGAMEM)) {
|
|
+ writer.writeAttributeString("vgamem", device.getSpecParams().get(VdsProperties.VIDEO_VGAMEM).toString());
|
|
+ }
|
|
+ }
|
|
+ }
|
|
writer.writeEndElement();
|
|
writeAlias(device);
|
|
writeAddress(device);
|
|
@@ -2922,14 +2949,26 @@ public class LibvirtVmXmlBuilder {
|
|
private void writeInput() {
|
|
writer.writeStartElement("input");
|
|
|
|
- if (vmInfoBuildUtils.isTabletEnabled(vm)) {
|
|
+ if (vm.getClusterArch().getFamily() == ArchitectureType.aarch64) {
|
|
writer.writeAttributeString("type", "tablet");
|
|
writer.writeAttributeString("bus", "usb");
|
|
} else {
|
|
- writer.writeAttributeString("type", "mouse");
|
|
- writer.writeAttributeString("bus", vm.getClusterArch().getFamily() == ArchitectureType.x86 ? "ps2" :"usb");
|
|
+ if (vmInfoBuildUtils.isTabletEnabled(vm)) {
|
|
+ writer.writeAttributeString("type", "tablet");
|
|
+ writer.writeAttributeString("bus", "usb");
|
|
+ } else {
|
|
+ writer.writeAttributeString("type", "mouse");
|
|
+ writer.writeAttributeString("bus", vm.getClusterArch().getFamily() == ArchitectureType.x86 ? "ps2" :"usb");
|
|
+ }
|
|
}
|
|
|
|
writer.writeEndElement();
|
|
+
|
|
+ if (vm.getClusterArch().getFamily() == ArchitectureType.aarch64){
|
|
+ writer.writeStartElement("input");
|
|
+ writer.writeAttributeString("type", "keyboard");
|
|
+ writer.writeAttributeString("bus", "usb");
|
|
+ writer.writeEndElement();
|
|
+ }
|
|
}
|
|
}
|
|
diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/VmInfoBuildUtils.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/VmInfoBuildUtils.java
|
|
index 0a1c245..8d3315c 100644
|
|
--- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/VmInfoBuildUtils.java
|
|
+++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/VmInfoBuildUtils.java
|
|
@@ -861,6 +861,8 @@ public class VmInfoBuildUtils {
|
|
case ppc64:
|
|
case ppc64le:
|
|
return "pseries";
|
|
+ case aarch64:
|
|
+ return "";
|
|
case x86_64:
|
|
default:
|
|
return "pc";
|
|
diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
|
|
index b0413dd..1ad5f14 100644
|
|
--- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
|
|
+++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
|
|
@@ -1180,14 +1180,19 @@ public class AsyncDataProvider {
|
|
(Integer) getConfigValuePreConverted(ConfigValues.VM64BitMaxMemorySizeInMB, version);
|
|
final int ppc64MaxMaxMemory =
|
|
(Integer) getConfigValuePreConverted(ConfigValues.VMPpc64BitMaxMemorySizeInMB, version);
|
|
- return Math.max(Math.max(x86_32MaxMaxMemory, x86_64MaxMaxMemory), ppc64MaxMaxMemory);
|
|
+ final int aarch64MaxMaxMemory =
|
|
+ (Integer) getConfigValuePreConverted(ConfigValues.VMAarch64BitMaxMemorySizeInMB, version);
|
|
+ return Math.max(Math.max(Math.max(x86_32MaxMaxMemory, x86_64MaxMaxMemory), ppc64MaxMaxMemory), aarch64MaxMaxMemory);
|
|
}
|
|
|
|
private ConfigValues getMaxMaxMemoryConfigValue(int osId) {
|
|
return oses64bit.contains(osId)
|
|
- ? (osArchitectures.get(osId).getFamily() == ArchitectureType.ppc
|
|
+ //? (osArchitectures.get(osId).getFamily() == ArchitectureType.ppc
|
|
+ ? ((osArchitectures.get(osId).getFamily() == ArchitectureType.aarch64)
|
|
+ ? ConfigValues.VMAarch64BitMaxMemorySizeInMB
|
|
+ : (osArchitectures.get(osId).getFamily() == ArchitectureType.ppc
|
|
? ConfigValues.VMPpc64BitMaxMemorySizeInMB
|
|
- : ConfigValues.VM64BitMaxMemorySizeInMB)
|
|
+ : ConfigValues.VM64BitMaxMemorySizeInMB))
|
|
: ConfigValues.VM32BitMaxMemorySizeInMB;
|
|
}
|
|
|
|
diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java
|
|
index 6e6158a..bf9e8b3 100644
|
|
--- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java
|
|
+++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java
|
|
@@ -1355,6 +1355,7 @@ public abstract class HostModel extends Model implements HasValidatedTabs {
|
|
case INTEL:
|
|
case AMD:
|
|
case IBMS390:
|
|
+ case KUNPENG:
|
|
resetKernelCmdlineCheckboxesValue();
|
|
break;
|
|
case IBM:
|
|
@@ -1375,6 +1376,7 @@ public abstract class HostModel extends Model implements HasValidatedTabs {
|
|
case INTEL:
|
|
case AMD:
|
|
case IBMS390:
|
|
+ case KUNPENG:
|
|
setKernelCmdlineCheckboxesChangeability(
|
|
isKernelCmdlineParsable(),
|
|
constants.kernelCmdlineCheckboxesAndDirectCustomizationNotAllowed());
|
|
diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmFromOvaModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmFromOvaModel.java
|
|
index dff9b7e..8451e9e 100644
|
|
--- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmFromOvaModel.java
|
|
+++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmFromOvaModel.java
|
|
@@ -38,7 +38,7 @@ public class ImportVmFromOvaModel extends ImportVmFromExternalProviderModel {
|
|
|
|
@Override
|
|
protected void setTargetArchitecture(List<VM> externalVms) {
|
|
- setTargetArchitecture(ArchitectureType.x86_64);
|
|
+ setTargetArchitecture(ArchitectureType.aarch64);
|
|
}
|
|
|
|
public void setIsoName(String ovaPath) {
|
|
diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/ClusterAdditionalStatusColumn.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/ClusterAdditionalStatusColumn.java
|
|
index 9ac4b68..aa9037c 100644
|
|
--- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/ClusterAdditionalStatusColumn.java
|
|
+++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/ClusterAdditionalStatusColumn.java
|
|
@@ -29,7 +29,8 @@ public class ClusterAdditionalStatusColumn extends EntityAdditionalStatusColumn<
|
|
"Intel Broadwell IBRS Family", //$NON-NLS-1$
|
|
"Intel Skylake Client IBRS Family", //$NON-NLS-1$
|
|
"Intel Skylake Server IBRS Family", //$NON-NLS-1$
|
|
- "AMD EPYC IBPB"}; //$NON-NLS-1$
|
|
+ "AMD EPYC IBPB", //$NON-NLS-1$
|
|
+ "Kunpeng 920"}; //$NON-NLS-1$
|
|
private static final String[] versions = new String[]{"4.2", //$NON-NLS-1$
|
|
"4.1", //$NON-NLS-1$
|
|
"4.0", //$NON-NLS-1$
|
|
|
|
diff --git a/packaging/conf/osinfo-defaults.properties b/packaging/conf/osinfo-defaults.properties
|
|
index d9d5ce4..307c188 100644
|
|
--- a/packaging/conf/osinfo-defaults.properties
|
|
+++ b/packaging/conf/osinfo-defaults.properties
|
|
@@ -497,6 +497,25 @@ os.ubuntu_16_04_s390x.id.value = 2005
|
|
os.ubuntu_16_04_s390x.name.value = Ubuntu Xenial Xerus LTS+
|
|
os.ubuntu_16_04_s390x.derivedFrom.value = other_linux_s390x
|
|
|
|
+# centos arm architecture
|
|
+os.other_aarch64.id.value = 3001
|
|
+os.other_aarch64.name.value = Other OS
|
|
+os.other_aarch64.derivedFrom.value = other
|
|
+os.other_aarch64.cpuArchitecture.value = aarch64
|
|
+os.other_aarch64.cpu.hotplugSupport.value = true
|
|
+os.other_aarch64.cpu.hotunplugSupport.value = true
|
|
+os.other_aarch64.devices.audio.enabled.value = false
|
|
+os.other_aarch64.devices.network.value = pv
|
|
+os.other_aarch64.devices.cdInterface.value = scsi
|
|
+os.other_aarch64.devices.balloon.enabled.value = true
|
|
+os.other_aarch64.devices.diskInterfaces.value = VirtIO, VirtIO_SCSI
|
|
+os.other_aarch64.devices.disk.hotpluggableInterfaces.value = VirtIO, VirtIO_SCSI
|
|
+os.other_aarch64.devices.network.hotplugSupport.value = true
|
|
+os.other_aarch64.devices.floppy.support.value = false
|
|
+os.other_aarch64.devices.watchdog.models.value = i6300esb
|
|
+os.other_aarch64.devices.usb.controller.value = qemu-xhci
|
|
+os.other_aarch64.devices.console.target.type.value = sclp
|
|
+
|
|
# Backward Compatibility Section
|
|
# Keep a mapping of the old os unique names to new od IDs
|
|
# in order to support correct imports of pre-osinfo VMs
|
|
diff --git a/packaging/dbscripts/upgrade/04_02_0590_remove_general_version_of_nongeneral_vdc_options.sql b/packaging/dbscripts/upgrade/04_02_0590_remove_general_version_of_nongeneral_vdc_options.sql
|
|
index 0fe77ee..8836bfd 100644
|
|
--- a/packaging/dbscripts/upgrade/04_02_0590_remove_general_version_of_nongeneral_vdc_options.sql
|
|
+++ b/packaging/dbscripts/upgrade/04_02_0590_remove_general_version_of_nongeneral_vdc_options.sql
|
|
@@ -3,3 +3,4 @@ SELECT fn_db_delete_config_value('IsMigrationSupported', 'general');
|
|
SELECT fn_db_delete_config_value('IsSuspendSupported', 'general');
|
|
SELECT fn_db_delete_config_value('VM32BitMaxMemorySizeInMB', 'general');
|
|
SELECT fn_db_delete_config_value('VMPpc64BitMaxMemorySizeInMB', 'general');
|
|
+SELECT fn_db_delete_config_value('VMAarch64BitMaxMemorySizeInMB', 'general');
|
|
diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
|
|
index 71f266b..f50171b 100644
|
|
--- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
|
|
+++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
|
|
@@ -173,23 +173,23 @@ select fn_db_add_config_value('HighUtilizationForEvenlyDistribute','75','general
|
|
select fn_db_add_config_value('HighUtilizationForPowerSave','75','general');
|
|
select fn_db_add_config_value('HostPreparingForMaintenanceIdleTime', '300', 'general');
|
|
select fn_db_add_config_value('HostTimeDriftInSec','300','general');
|
|
-select fn_db_add_config_value_for_versions_up_to('HotPlugCpuSupported','{"x86":"true","ppc":"true","s390x":"true"}', '4.5');
|
|
-select fn_db_add_config_value_for_versions_up_to('HotUnplugCpuSupported', '{"x86":"true","ppc":"true","s390x":"false"}', '4.5');
|
|
-select fn_db_add_config_value_for_versions_up_to('HotPlugMemorySupported', '{"x86":"true","ppc":"true","s390x":"false"}', '4.5');
|
|
+select fn_db_add_config_value_for_versions_up_to('HotPlugCpuSupported','{"x86":"true","ppc":"true","s390x":"true","aarch64":"true"}', '4.5');
|
|
+select fn_db_add_config_value_for_versions_up_to('HotUnplugCpuSupported', '{"x86":"true","ppc":"true","s390x":"false","aarch64":"true"}', '4.5');
|
|
+select fn_db_add_config_value_for_versions_up_to('HotPlugMemorySupported', '{"x86":"true","ppc":"true","s390x":"false","aarch64":"true"}', '4.5');
|
|
select fn_db_add_config_value('MaxMemorySlots','16','general');
|
|
select fn_db_add_config_value('HotPlugMemoryMultiplicationSizeMb','256','general');
|
|
-select fn_db_add_config_value_for_versions_up_to('HotUnplugMemorySupported', '{"x86":"true","ppc":"true","s390x":"false"}', '4.5');
|
|
+select fn_db_add_config_value_for_versions_up_to('HotUnplugMemorySupported', '{"x86":"true","ppc":"true","s390x":"false","aarch64":"true"}', '4.5');
|
|
select fn_db_add_config_value_for_versions_up_to('CopyPreallocatedFileBasedDiskSupported', 'false', '4.2');
|
|
select fn_db_add_config_value_for_versions_up_to('CopyPreallocatedFileBasedDiskSupported', 'true', '4.5');
|
|
select fn_db_add_config_value_for_versions_up_to('ManagedBlockDomainSupported', 'false', '4.2');
|
|
select fn_db_add_config_value_for_versions_up_to('ManagedBlockDomainSupported', 'false', '4.5');
|
|
|
|
-- migration support per architecture
|
|
-select fn_db_add_config_value_for_versions_up_to('IsMigrationSupported','{"undefined": "true", "x86": "true", "ppc" : "true", "s390x" : "true"}','4.5');
|
|
+select fn_db_add_config_value_for_versions_up_to('IsMigrationSupported','{"undefined": "true", "x86": "true", "ppc" : "true", "s390x" : "true", "aarch64": "true"}','4.5');
|
|
-- snapshot support per architecture
|
|
-select fn_db_add_config_value_for_versions_up_to('IsMemorySnapshotSupported','{"undefined": "true", "x86": "true", "ppc" : "true", "s390x" : "true"}','4.5');
|
|
+select fn_db_add_config_value_for_versions_up_to('IsMemorySnapshotSupported','{"undefined": "true", "x86": "true", "ppc" : "true", "s390x" : "true", "aarch64": "true"}','4.5');
|
|
-- suspend support per architecture
|
|
-select fn_db_add_config_value_for_versions_up_to('IsSuspendSupported','{"undefined": "true", "x86": "true", "ppc" : "true", "s390x" : "true"}','4.5');
|
|
+select fn_db_add_config_value_for_versions_up_to('IsSuspendSupported','{"undefined": "true", "x86": "true", "ppc" : "true", "s390x" : "true", "aarch64": "true"}','4.5');
|
|
select fn_db_add_config_value('OsRepositoryConfDir','/osinfo.conf.d','general');
|
|
select fn_db_add_config_value('IterationsWithBalloonProblem','3','general');
|
|
select fn_db_add_config_value('DefaultSysprepLocale','en_US','general');
|
|
@@ -464,7 +464,8 @@ select fn_db_add_config_value('ServerCPUList',
|
|
|| '1:IBM z114, z196:sie,model_z196-base:z196-base:s390x; '
|
|
|| '2:IBM zBC12, zEC12:sie,model_zEC12-base:zEC12-base:s390x; '
|
|
|| '3:IBM z13s, z13:sie,model_z13-base:z13-base:s390x; '
|
|
- || '4:IBM z14:sie,model_z14-base:z14-base:s390x;',
|
|
+ || '4:IBM z14:sie,model_z14-base:z14-base:s390x;'
|
|
+ || '1:Kunpeng 920:asimd:asimd:aarch64;',
|
|
'4.4');
|
|
|
|
select fn_db_add_config_value('ServerCPUList',
|
|
@@ -578,6 +579,7 @@ select fn_db_add_config_value_for_versions_up_to('VM32BitMaxMemorySizeInMB','204
|
|
select fn_db_add_config_value_for_versions_up_to('VM64BitMaxMemorySizeInMB','6291456','4.5');
|
|
select fn_db_add_config_value_for_versions_up_to('VMPpc64BitMaxMemorySizeInMB', '1048576', '4.3');
|
|
select fn_db_add_config_value_for_versions_up_to('VMPpc64BitMaxMemorySizeInMB', '6291456', '4.5');
|
|
+select fn_db_add_config_value_for_versions_up_to('VMAarch64BitMaxMemorySizeInMB', '1048576', '4.4');
|
|
select fn_db_add_config_value('VmGracefulShutdownMessage','System Administrator has initiated shutdown of this Virtual Machine. Virtual Machine is shutting down.','general');
|
|
select fn_db_add_config_value('VmGracefulShutdownTimeout','30','general');
|
|
--Number of subsequent failures in VM creation in a pool before giving up and stop creating new VMs
|
|
@@ -1121,7 +1123,8 @@ select fn_db_update_config_value('ServerCPUList',
|
|
|| '1:IBM z114, z196:sie,model_z196-base:z196-base:s390x; '
|
|
|| '2:IBM zBC12, zEC12:sie,model_zEC12-base:zEC12-base:s390x; '
|
|
|| '3:IBM z13s, z13:sie,model_z13-base:z13-base:s390x; '
|
|
- || '4:IBM z14:sie,model_z14-base:z14-base:s390x;',
|
|
+ || '4:IBM z14:sie,model_z14-base:z14-base:s390x;'
|
|
+ || '1:Kunpeng 920:asimd:asimd:aarch64;',
|
|
'4.4');
|
|
select fn_db_update_config_value('ServerCPUList',
|
|
'1:Intel Nehalem Family:vmx,nx,model_Nehalem:Nehalem:x86_64; '
|
|
diff --git a/packaging/setup/ovirt_engine_setup/engine_common/constants.py b/packaging/setup/ovirt_engine_setup/engine_common/constants.py
|
|
index 98c0688..13b0485 100644
|
|
--- a/packaging/setup/ovirt_engine_setup/engine_common/constants.py
|
|
+++ b/packaging/setup/ovirt_engine_setup/engine_common/constants.py
|
|
@@ -95,6 +95,7 @@ class Defaults(object):
|
|
'x86_64': 68719476736,
|
|
'i686': 4294967295,
|
|
'ppc64': 137438953472,
|
|
+ 'aarch64': 137438953472,
|
|
'default': 4294967295,
|
|
}
|
|
return SHMMAX.get(platform.machine(), SHMMAX['default'])
|
|
--
|
|
2.27.0
|
|
|