
On 06/19/2013 05:32 AM, Michael Giardino wrote:
Sorry to blow up everyone's email on this but I tried something new and found a different problem. I uninstalled all the debian package (libvirt, kvm, qemu, virt-manager, etc.) and then remade all the packages and installed them. Haswell again shows up in virt-manager, but now any CPU I choose including kvm64 and qemu64 give the same error:
root@mal:~# virsh create /etc/libvirt/qemu/debian7-nonsmp.xml 2013-06-19 03:09:42.836+0000: 24248: info : libvirt version: 1.0.6 2013-06-19 03:09:42.836+0000: 24248: warning : virLogParseDefaultPriority:1581 : Ignoring invalid log level setting error: Failed to create domain from /etc/libvirt/qemu/debian7-nonsmp.xml error: internal error Cannot find suitable CPU model for given data
I guess you probably wanted to show that old, "working", domain cannot be defined, but I can't leave following not mentioned. If the machine is defined in /etc/libvirt already, it is loaded upon libvirtd startup, you shouldn't use those files directly, but instead of that use 'virsh start <domain>'
This is using the old "working" xml configuration. I then let virt-manager create a new one by installing a new VM using the qcow2 image from before. If I use the new one created by virt-manager I get the same error. The only major difference I see in the two xmls is
<os> <type arch='x86_64' machine='pc-i440fx-1.5'>hvm</type> <boot dev='hd'/> </os>
This has nothing to do with the CPU model, the reason this is different is that by default the newest machine type is selected to incorporate newest qemu features & settings which we simply cannot explain to end user.
in the new one compared to the old one below.
I'm starting to think I've hosed the whole thing and need to delete everything, remove with configuration files, and start over.
I'll check that flags for you, but in the meantime, is there a possibility that /etc/libvirt/cpu_map.xml is somehow screwed up in Debian packaging? [...]
eax in eax ebx ecx edx 00000000 0000000d 756e6547 6c65746e 49656e69 00000001 000306c3 01100800 7ffafbff bfebfbff 00000002 76036301 00f0b5ff 00000000 00c10000 00000003 00000000 00000000 00000000 00000000 00000004 00000000 00000000 00000000 00000000 00000005 00000040 00000040 00000003 00042120 00000006 00000077 00000002 00000009 00000000 00000007 00000000 00000000 00000000 00000000
From the looks of it, I'd guess both libvirt and cpuid are misdetecting Intel instructions like invpcid etc. The cpuid program doesn't clean ecx, but we do clear e[bcd]x registers before calling cpuid.
I'm looking into kernel flag detection to see how they do it (since it is visible in /proc/cpuinfo), because I can't see any other reason why this should fail. Could you create a bug for this issue in the meantime? Thanks, Martin