1) Update libvirt's qemuProcessUpdateGuestCPU() to not limit the the switch of cpu mode from host-model->custom to ARCH_IS_X86(). Would there be side-effects if we also switch host-model->custom when ARCH_IS_ARM()? Perhaps we can check with upstream libvirt devs about this if someone hasn't already.
2) In nova, it looks like host-model is set in _get_guest_cpu_model_config(). Could we update that to set mode = "host-passthrough" if AARCH64, where it currently sets mode = "host-model"? If I understand Christian's comments above correctly, this should result in the same behavior we had prior to ocata as host-model was switched to host-passthrough.
It seems like two possible fixes are:
1) Update libvirt's qemuProcessUpda teGuestCPU( ) to not limit the the switch of cpu mode from host-model->custom to ARCH_IS_X86(). Would there be side-effects if we also switch host-model->custom when ARCH_IS_ARM()? Perhaps we can check with upstream libvirt devs about this if someone hasn't already.
2) In nova, it looks like host-model is set in _get_guest_ cpu_model_ config( ). Could we update that to set mode = "host-passthrough" if AARCH64, where it currently sets mode = "host-model"? If I understand Christian's comments above correctly, this should result in the same behavior we had prior to ocata as host-model was switched to host-passthrough.