On Mon, Sep 09, 2013 at 10:28:39AM +0100, Daniel P. Berrange wrote:
On Mon, Sep 09, 2013 at 09:09:56AM +0100, Richard W.M. Jones wrote:
>
> I tried this patchset and it works at least as far as being able to
> get the libguestfs appliance up and running on ARM (with KVM) using
> the libvirt backend. Virtio-scsi & virtio-serial work.
>
> Some issues however:
>
> - Why is arch="armv7l"? Why not just "arm", or
"armv7hl"?
The kernel reported uname is 'armv7l', so libvirt matches that.
IIUC 'armv7hl' is an RPM invention to show that the armv7l binaries
were compiled with hard floating point impl.
'arm' alone is too generic - there are ABI incompatible versions
armv5, armv6 which we need to distinguish, as well as big-endian
v7 (eg armv7b).
> - I had to force the <emulator> to be /usr/bin/qemu-system-arm.
> Otherwise libvirt tries to run /usr/bin/qemu-kvm. May be related
> to RHBZ#1005581.
>
https://github.com/libguestfs/libguestfs/commit/37e1e0da5acb34c902d55cde1...
>
https://bugzilla.redhat.com/show_bug.cgi?id=1005581
If it exists, /usr/bin/qemu-kvm should always point to the
qemu-system-NNN which matches the host arch. So if it is
pointing to the x86 emulator that is broken Fedora packaging
> - I had to add -machine kernel_irqchip=off (for KVM):
>
https://github.com/libguestfs/libguestfs/commit/f8d89bc42fbd930c61e4f6a81...
>
http://www.mail-archive.com/arm@lists.fedoraproject.org/msg05546.html
I'd say that's something for QEMU / KVM guys to fix. If the kernel
IRQ chip is known broken for ARM, QEMU shouldn't be trying to use it.
> - Setting <cpu mode="host-model"/> confuses libvirt completely.
Yeah, CPU model stuff for non-x86 seems somewhat problematic in my
experiance.
One more:
- Hotplugging (adding a virtio-scsi disk) doesn't work on ARM:
could not attach disk to libvirt domain: internal error: SCSI controller 0 was missing its
PCI address [code=1 domain=10] at /home/rjones/d/libguestfs/tests/hotplug/test-hot-add.pl
line 50.
The libvirt XML fragment we're trying to add is approximately this one
(I can get the precise one if you need it):
<disk device="disk" type="file">
<source file="..."/>
<target dev="sda" bus="scsi"/>
<driver name="qemu" type="raw" cache="unsafe"/>
<address type="drive" controller="0" bus="0"
target="0" unit="0"/>
</disk>
The controller (which is not part of the XML fragment of course, but
was part of the original domain) is:
<controller type="scsi" index="0"
model="virtio-scsi"/>
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.
http://libguestfs.org