I'm not seeing any major changes in nova between newton and ocata wrt host-model. That's not to say this isn't a bug in nova. As I noted previously, xenial-ocata is using libvirt 2.5.0 whereas xenial-mitaka and xenial-newton are using libvirt 1.3.1. This error and the function that it comes from are new since sometime after libvirt 1.3.1: "libvirtError: unsupported configuration: CPU mode 'host-model' for aarch64 kvm domain on aarch64 host is not supported by hypervisor". This is coming from the following code, pasted from libvirt 2.5.0: 5020 static int 5021 qemuProcessUpdateGuestCPU(virDomainDefPtr def, 5022 virQEMUCapsPtr qemuCaps, 5023 virCapsPtr caps, 5024 unsigned int flags) 5025 { 5026 int ret = -1; 5027 size_t nmodels = 0; 5028 char **models = NULL; 5029 5030 if (!def->cpu) 5031 return 0; 5032 5033 /* nothing to do if only topology part of CPU def is used */ 5034 if (def->cpu->mode == VIR_CPU_MODE_CUSTOM && !def->cpu->model) 5035 return 0; 5036 5037 /* Old libvirt added host CPU model to host-model CPUs for migrations, 5038 * while new libvirt just turns host-model into custom mode. We need 5039 * to fix the mode to maintain backward compatibility and to avoid 5040 * the CPU model to be replaced in virCPUUpdate. 5041 */ 5042 if (!(flags & VIR_QEMU_PROCESS_START_NEW) && 5043 ARCH_IS_X86(def->os.arch) && 5044 def->cpu->mode == VIR_CPU_MODE_HOST_MODEL && 5045 def->cpu->model) { 5046 def->cpu->mode = VIR_CPU_MODE_CUSTOM; 5047 } 5048 5049 if (!virQEMUCapsIsCPUModeSupported(qemuCaps, caps, def->virtType, 5050 def->cpu->mode)) { 5051 virReportError(VIR_ERR_CONFIG_UNSUPPORTED, 5052 _("CPU mode '%s' for %s %s domain on %s host is not " 5053 "supported by hypervisor"), 5054 virCPUModeTypeToString(def->cpu->mode), 5055 virArchToString(def->os.arch), 5056 virDomainVirtTypeToString(def->virtType), 5057 virArchToString(caps->host.arch)); 5058 return -1; 5059 } This code was introduced by the following commit: commit 7ce711a30eaf882ccd0217b2528362b563b6d670 Author: Jiri Denemark