[libvirt] 'host-passthrough' for arm64
Cole Robinson
crobinso at redhat.com
Mon Jan 20 15:48:06 UTC 2014
On 01/20/2014 08:19 AM, Oleg Strikov wrote:
> Hello guys,
>
> I'm trying to come up with basic OpenStack support for arm64 node.
> I'd like to use 'libvirt_cpu_mode=host-passthrough' configuration option with
> Nova which issues <cpu mode='host-passthrough'> to libvirt xml config.
> But with this option passed libvirt crashes with 'error: unsupported
> configuration: CPU specification not supported by hypervisor'.
> This happens because the following handlers are not implemented (or
> implemented as stubs) inside src/cpu/cpu_aarch64.c:
> * AArch64Decode()
> * AArch64Update()
> * AArch64guestData()
>
> To solve exactly this 'host-passthrough'-related issue that's enough to have
> the following set of handlers:
>
> AArch64Decode(<...>)
> {
> virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES, -1);
>
> /* I don't know any way to detect 'cortex-a57' or any other armv8 CPU for
> now */
> /* But I don't think that we can meet anything else than cortex-a57 */
>
> /* We may also put 'host' there to specifically point out that
> qemu-aarch64 supports only '-cpu host' for now */
> /* pm215 told me that the ETA for '-cpu cortex-a57' and friends is around
> 3 months from now */
>
> return !(VIR_STRDUP(cpu->model, "host" or "cortex-a57") == 1);
> }
>
> static int AArch64Update(<...>)
> {
> /* qemu-aarch64 supports only '-cpu host' for now */
>
> guest->match = VIR_CPU_MATCH_EXACT;
> virCPUDefFreeModel(guest);
> return virCPUDefCopyModel(guest, host, true);
> }
>
> static virCPUCompareResult
> AArch64guestData(<..>)
> {
> return VIR_CPU_COMPARE_IDENTICAL;
> }
>
> That's clear that these handlers provide just basic functionality
> ('host-passthrough'-only) and have to be extended in future.
> But is it something we can commit for now?
>
> Another way to deal with this issue is to adopt some code from PPC handlers
> (including CPU model detection and best fit qemu configuration discovery).
> But this way will be blocked until:
> (1) I find any way to reliably detect CPU model on ARMv8 board (any ideas?)
> (2) pm215 implements TCG for arm64
>
> What is the best way to choose to come up with the commitable code?
>
IMO the above is fine, doesn't look like it should cause any compatibility
issues with a real implementation in the future, and allows launching
qemu-system-aarch64 with its preferred -cpu host flag. I'd say post the patch,
and if other folks disagree they can comment there.
Thanks,
Cole
More information about the libvir-list
mailing list