Re: [PATCH] qemu: x86_64 is good enough for i686

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 16, 2014 at 09:28:00PM +0200, Lubomir Rintel wrote:
virt-manager on Fedora sets up i686 hosts with "/usr/bin/qemu-kvm" emulator,
which in turn unconditionally execs qemu-system-x86_64 querying capabilities
then fails:

Error launching details: invalid argument: architecture from emulator 'x86_64' doesn't match given architecture 'i686'

Traceback (most recent call last):
 File "/usr/share/virt-manager/virtManager/engine.py", line 748, in _show_vm_helper
   details = self._get_details_dialog(uri, vm.get_connkey())
 File "/usr/share/virt-manager/virtManager/engine.py", line 726, in _get_details_dialog
   obj = vmmDetails(conn.get_vm(connkey))
 File "/usr/share/virt-manager/virtManager/details.py", line 399, in __init__
   self.init_details()
 File "/usr/share/virt-manager/virtManager/details.py", line 784, in init_details
   domcaps = self.vm.get_domain_capabilities()
 File "/usr/share/virt-manager/virtManager/domain.py", line 518, in get_domain_capabilities
   self.get_xmlobj().os.machine, self.get_xmlobj().type)
 File "/usr/lib/python2.7/site-packages/libvirt.py", line 3492, in getDomainCapabilities
   if ret is None: raise libvirtError ('virConnectGetDomainCapabilities() failed', conn=self)
libvirtError: invalid argument: architecture from emulator 'x86_64' doesn't match given architecture 'i686'

Journal:

Oct 16 21:08:26 goatlord.localdomain libvirtd[1530]: invalid argument: architecture from emulator 'x86_64' doesn't match given architecture 'i686'
---
src/qemu/qemu_driver.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 7377320..e4b2b6c 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -17809,7 +17809,8 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,

        arch_from_caps = virQEMUCapsGetArch(qemuCaps);

-        if (arch_from_caps != arch) {
+        if (arch_from_caps != arch &&
+	    (arch_from_caps != VIR_ARCH_X86_64 || arch != VIR_ARCH_I686)) {

You haven't ran make syntax-check, otherwise it would tell you there's
tab with 4 spaces after that and we use spaces only.

It would be nice to add a test case for this particular case.  Anyway
ACK, I'll push it in a while with that line fixed.

However, I wonder if we only limit the 32/64 bit machines by the
processor, because it looks like one can run even the following
combination:

 qemu-system-i686 -cpu Haswell

And this is even with <type arch='x86_64' machine='pc-q35-2.2'>!  Is
this still 64bit cpu running in 32bit mode?

Martin

Attachment: signature.asc
Description: Digital signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]