[Openstack-operators] [nova][glance] nova-compute choosing incorrect qemu binary when scheduling 'alternate' (ppc64, armv7l) architectures?
Chris Apsey
bitskrieg at bitskrieg.net
Thu Aug 9 11:03:14 UTC 2018
Exactly. And I agree, it seems like hw_architecture should dictate
which emulator is chosen, but as you mentioned its currently not. I'm
not sure if this is a bug and it's supposed to 'just work', or just
something that was never fully implemented (intentionally) and would be
more of a feature request/suggestion for a later version. The docs are
kind of sparse in this area.
What are your thoughts? I can open a bug if you think the scope is
reasonable.
---
v/r
Chris Apsey
bitskrieg at bitskrieg.net
https://www.bitskrieg.net
On 2018-08-08 06:40 PM, Matt Riedemann wrote:
> On 8/8/2018 2:42 PM, Chris Apsey wrote:
>> qemu-system-arm, qemu-system-ppc64, etc. in our environment are all
>> x86 packages, but they perform system-mode emulation (via dynamic
>> instruction translation) for those target environments. So, you run
>> qemu-system-ppc64 on an x86 host in order to get a ppc64-emulated VM.
>> Our use case is specifically directed at reverse engineering binaries
>> and fuzzing for vulnerabilities inside of those architectures for
>> things that aren't built for x86, but there are others.
>>
>> If you were to apt-get install qemu-system and then hit autocomplete,
>> you'd get a list of archiectures that qemu can emulate on x86 hardware
>> - that's what we're trying to do incorporate. We still want to run
>> normal qemu-x86 with KVM virtualization extensions, but we ALSO want
>> to run the other emulators without the KVM virtualization extensions
>> in order to have more choice for target environments.
>>
>> So to me, openstack would interpret this by checking to see if a
>> target host supports the architecture specified in the image (it does
>> this correctly), then it would choose the correct qemu-system-xx for
>> spawning the instance based on the architecture flag of the image,
>> which it currently does not (it always choose qemu-system-x86_64).
>>
>> Does that make sense?
>
> OK yeah now I'm following you - running ppc guests on an x86 host
> (virt_type=qemu rather than kvm right?).
>
> I would have thought the hw_architecture image property was used for
> this somehow to configure the arch in the guest xml properly, like
> it's used in a few places [1][2][3].
>
> See [4], I'd think we'd set the guest.arch but don't see that
> happening. We do set the guest.os_type though [5].
>
> [1]
> https://github.com/openstack/nova/blob/c18b1c1bd646d7cefa3d3e4b25ce59460d1a6ebc/nova/virt/libvirt/driver.py#L4649
> [2]
> https://github.com/openstack/nova/blob/c18b1c1bd646d7cefa3d3e4b25ce59460d1a6ebc/nova/virt/libvirt/driver.py#L4927
> [3]
> https://github.com/openstack/nova/blob/c18b1c1bd646d7cefa3d3e4b25ce59460d1a6ebc/nova/virt/libvirt/blockinfo.py#L257
> [4] https://libvirt.org/formatcaps.html#elementGuest
> [5]
> https://github.com/openstack/nova/blob/c18b1c1bd646d7cefa3d3e4b25ce59460d1a6ebc/nova/virt/libvirt/driver.py#L5196
More information about the OpenStack-operators
mailing list