Description of problem: This is using a SandyBridge CPU which has AVX instructions: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions I'm booting a guest using . Inside the guest, when initializing an mdadm device (yes, this guest has RAID arrays inside), we see the trace attached below. I think what is happening here: (a) CPU flags are copied from host to guest, advertising 'avx' (b) Guest tries to use 'avx'. (c) KVM doesn't emulate it, so it all falls in a hole. Perhaps libvirt should filter flags based on what KVM can actually do? Version-Release number of selected component (if applicable): qemu-1.2.0-16.fc18.x86_64 libvirt-0.10.2-3.fc18.x86_64 kernel-3.6.2-2.fc18.x86_64 How reproducible: 100% Steps to Reproduce: 1. in libguestfs test suite: make -C tests/md check Additional info: Host CPU flags: flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid mdadm --create --run r5t1 --level 5 --raid-devices 4 --spare-devices 1 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2 missing mdadm: Defaulting to version 1.2 metadata [ 5.131487] md: bind [ 5.132218] md: bind [ 5.132966] md: bind [ 5.133773] md: bind [ 5.150258] async_tx: api initialized (async) [ 5.152459] xor: automatically using best checksumming function: [ 5.153064] invalid opcode: 0000 [#1] SMP [ 5.153423] Modules linked in: xor(+) async_tx raid1 ghash_clmulni_intel microcode virtio_net virtio_scsi virtio_blk virtio_rng virtio_balloon virtio_mmio sparse_keymap rfkill sym53c8xx scsi_transport_spi crc8 crc_ccitt crc_itu_t crc32c_intel libcrc32c [ 5.154012] CPU 0 [ 5.154012] Pid: 262, comm: modprobe Not tainted 3.6.2-2.fc18.x86_64.debug #1 Bochs Bochs [ 5.154012] RIP: 0010:[] [] xor_avx_2+0x5c/0x270 [xor] [ 5.154012] RSP: 0018:ffff88001abfdd00 EFLAGS: 00010202 [ 5.154012] RAX: 000000008005003b RBX: ffff8800192d0000 RCX: 0000000000000001 [ 5.154012] RDX: ffff8800192d3000 RSI: ffff8800192d0000 RDI: 0000000000001000 [ 5.154012] RBP: ffff88001abfddc8 R08: 0000000000000000 R09: 0000000000000000 [ 5.154012] R10: 0000000000000001 R11: 0000000000000000 R12: ffff8800192d3000 [ 5.154012] R13: 0000000000000008 R14: 000000008005003b R15: ffff8800192d0000 [ 5.154012] FS: 00007f1e5e769740(0000) GS:ffff88001f000000(0000) knlGS:0000000000000000 [ 5.154012] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 5.154012] CR2: 00007fff1f8d5000 CR3: 0000000019278000 CR4: 00000000000007f0 [ 5.154012] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 5.154012] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 5.154012] Process modprobe (pid: 262, threadinfo ffff88001abfc000, task ffff88001a0fa450) [ 5.154012] Stack: [ 5.154012] ffffffff8134df3e 0000000000000000 0000000000000000 0000000000000001 [ 5.154012] 0000000000000001 ffff88001abfdfd8 ffff88001abfc000 ffff88001a0fa450 [ 5.154012] ffff88001abfdd48 ffffffff8111c227 ffffffff816dcb30 0000000000000000 [ 5.154012] Call Trace: [ 5.154012] [] ? trace_hardirqs_on_thunk+0x3a/0x3f [ 5.154012] [] ? rcu_irq_exit+0x87/0xd0 [ 5.154012] [] ? retint_restore_args+0x13/0x13 [ 5.154012] [] do_xor_speed+0x7d/0xe7 [xor] [ 5.154012] [] calibrate_xor_blocks+0x75/0x1000 [xor] [ 5.154012] [] ? 0xffffffffa0004fff [ 5.154012] [] do_one_initcall+0x12a/0x180 [ 5.154012] [] sys_init_module+0x133/0x2340 [ 5.154012] [] ? ddebug_proc_open+0xd0/0xd0 [ 5.154012] [] ? up_write+0x23/0x40 [ 5.154012] [] system_call_fastpath+0x16/0x1b [ 5.154012] Code: 98 00 00 00 31 c0 49 c1 ed 09 65 48 8b 04 25 b0 c8 00 00 83 80 44 e0 ff ff 01 e8 10 54 fb e0 66 90 49 89 c6 0f 06 66 66 90 66 90 fc 29 04 24 c5 fc 29 4c 24 20 c5 fc 29 54 24 40 c5 fc 29 5c [ 5.154012] RIP [] xor_avx_2+0x5c/0x270 [xor] [ 5.154012] RSP [ 5.174236] ---[ end trace 1500dad90bed99ad ]--- [ 5.174615] BUG: sleeping function called from invalid context at kernel/rwsem.c:20 [ 5.175227] in_atomic(): 1, irqs_disabled(): 0, pid: 262, name: modprobe [ 5.175754] INFO: lockdep is turned off. [ 5.176088] Pid: 262, comm: modprobe Tainted: G D 3.6.2-2.fc18.x86_64.debug #1 [ 5.176725] Call Trace: [ 5.176922] [] __might_sleep+0x18a/0x240 [ 5.177381] [] down_read+0x26/0x98 [ 5.177790] [] exit_signals+0x24/0x130 [ 5.178243] [] do_exit+0xbd/0xb00 [ 5.178629] [] ? kmsg_dump+0x1b8/0x240 [ 5.179089] [] ? kmsg_dump+0x25/0x240 [ 5.179499] [] oops_end+0x9d/0xe0 [ 5.179893] [] die+0x58/0x90 [ 5.180282] [] do_trap+0xc0/0x170 [ 5.180669] [] ? do_invalid_op+0x86/0xc0 [ 5.181147] [] do_invalid_op+0xb0/0xc0 [ 5.181563] [] ? xor_avx_2+0x5c/0x270 [xor] [ 5.182016] [] ? trace_hardirqs_off_thunk+0x3a/0x3c [ 5.182559] [] ? restore_args+0x30/0x30 [ 5.182981] [] invalid_op+0x1b/0x20 [ 5.183428] [] ? xor_avx_2+0x5c/0x270 [xor] [ 5.183878] [] ? trace_hardirqs_on_thunk+0x3a/0x3f [ 5.184418] [] ? rcu_irq_exit+0x87/0xd0 [ 5.184844] [] ? retint_restore_args+0x13/0x13 [ 5.185347] [] do_xor_speed+0x7d/0xe7 [xor] [ 5.185816] [] calibrate_xor_blocks+0x75/0x1000 [xor] [ 5.186381] [] ? 0xffffffffa0004fff [ 5.186810] [] do_one_initcall+0x12a/0x180 [ 5.187292] [] sys_init_module+0x133/0x2340 [ 5.187775] [] ? ddebug_proc_open+0xd0/0xd0 [ 5.188273] [] ? up_write+0x23/0x40 [ 5.188692] [] system_call_fastpath+0x16/0x1b [ 5.189202] BUG: scheduling while atomic: modprobe/262/0x10000003 [ 5.189683] INFO: lockdep is turned off. [ 5.190034] Modules linked in: xor(+) async_tx raid1 ghash_clmulni_intel microcode virtio_net virtio_scsi virtio_blk virtio_rng virtio_balloon virtio_mmio sparse_keymap rfkill sym53c8xx scsi_transport_spi crc8 crc_ccitt crc_itu_t crc32c_intel libcrc32c [ 5.192151] Pid: 262, comm: modprobe Tainted: G D 3.6.2-2.fc18.x86_64.debug #1 [ 5.192779] Call Trace: [ 5.192979] [] __schedule_bug+0x67/0x75 [ 5.193452] [] __schedule+0x98b/0x9f0 [ 5.193872] [] __cond_resched+0x2a/0x40 [ 5.194356] [] _cond_resched+0x30/0x40 [ 5.194783] [] down_read+0x2b/0x98 [ 5.195211] [] exit_signals+0x24/0x130 [ 5.195657] [] do_exit+0xbd/0xb00 [ 5.196079] [] ? kmsg_dump+0x1b8/0x240 [ 5.196524] [] ? kmsg_dump+0x25/0x240 [ 5.196946] [] oops_end+0x9d/0xe0 [ 5.197372] [] die+0x58/0x90 [ 5.197755] [] do_trap+0xc0/0x170 [ 5.198182] [] ? do_invalid_op+0x86/0xc0 [ 5.198642] [] do_invalid_op+0xb0/0xc0 [ 5.199095] [] ? xor_avx_2+0x5c/0x270 [xor] [ 5.199557] [] ? trace_hardirqs_off_thunk+0x3a/0x3c [ 5.200119] [] ? restore_args+0x30/0x30 [ 5.200551] [] invalid_op+0x1b/0x20 [ 5.200975] [] ? xor_avx_2+0x5c/0x270 [xor] [ 5.201465] [] ? trace_hardirqs_on_thunk+0x3a/0x3f [ 5.201992] [] ? rcu_irq_exit+0x87/0xd0 [ 5.202455] [] ? retint_restore_args+0x13/0x13 [ 5.202944] [] do_xor_speed+0x7d/0xe7 [xor] [ 5.203446] [] calibrate_xor_blocks+0x75/0x1000 [xor] [ 5.203976] [] ? 0xffffffffa0004fff [ 5.204432] [] do_one_initcall+0x12a/0x180 [ 5.204887] [] sys_init_module+0x133/0x2340 [ 5.205395] [] ? ddebug_proc_open+0xd0/0xd0 [ 5.205858] [] ? up_write+0x23/0x40 [ 5.206314] [] system_call_fastpath+0x16/0x1b [ 5.206857] note: modprobe[262] exited with preempt_count 2 [ 5.207586] BUG: scheduling while atomic: modprobe/262/0x10000003 [ 5.208102] INFO: lockdep is turned off. [ 5.208424] Modules linked in: xor(+) async_tx raid1 ghash_clmulni_intel microcode virtio_net virtio_scsi virtio_blk virtio_rng virtio_balloon virtio_mmio sparse_keymap rfkill sym53c8xx scsi_transport_spi crc8 crc_ccitt crc_itu_t crc32c_intel libcrc32c [ 5.210496] Pid: 262, comm: modprobe Tainted: G D W 3.6.2-2.fc18.x86_64.debug #1 [ 5.211161] Call Trace: [ 5.211369] [] __schedule_bug+0x67/0x75 [ 5.211825] [] __schedule+0x98b/0x9f0 [ 5.212264] [] ? lock_hrtimer_base.isra.20+0x30/0x60 [ 5.212772] [] __cond_resched+0x2a/0x40 [ 5.213241] [] _cond_resched+0x30/0x40 [ 5.213657] [] down_read+0x2b/0x98 [ 5.214091] [] acct_collect+0x4e/0x1b0 [ 5.214507] [] do_exit+0x805/0xb00 [ 5.214896] [] ? kmsg_dump+0x1b8/0x240 [ 5.215363] [] ? kmsg_dump+0x25/0x240 [ 5.215773] [] oops_end+0x9d/0xe0 [ 5.216205] [] die+0x58/0x90 [ 5.216557] [] do_trap+0xc0/0x170 [ 5.216942] [] ? do_invalid_op+0x86/0xc0 [ 5.217419] [] do_invalid_op+0xb0/0xc0 [ 5.217834] [] ? xor_avx_2+0x5c/0x270 [xor] [ 5.218324] [] ? trace_hardirqs_off_thunk+0x3a/0x3c [ 5.218834] [] ? restore_args+0x30/0x30 [ 5.219287] [] invalid_op+0x1b/0x20 [ 5.219704] [] ? xor_avx_2+0x5c/0x270 [xor] [ 5.220181] [] ? trace_hardirqs_on_thunk+0x3a/0x3f [ 5.220700] [] ? rcu_irq_exit+0x87/0xd0 [ 5.221153] [] ? retint_restore_args+0x13/0x13 [ 5.221638] [] do_xor_speed+0x7d/0xe7 [xor] [ 5.222140] [] calibrate_xor_blocks+0x75/0x1000 [xor] [ 5.222656] [] ? 0xffffffffa0004fff [ 5.223103] [] do_one_initcall+0x12a/0x180 [ 5.223550] [] sys_init_module+0x133/0x2340 [ 5.224034] [] ? ddebug_proc_open+0xd0/0xd0 [ 5.224492] [] ? up_write+0x23/0x40 [ 5.224887] [] system_call_fastpath+0x16/0x1b [ 5.225927] md: personality for level 5 is not loaded! [ 5.226402] md: md125 stopped. [ 5.226664] md: unbind [ 5.226902] md: export_rdev(sdd2) mdadm: RUN_ARRAY failed: Invalid argument [ 5.227520] md: unbind [ 5.227759] md: export_rdev(sdc2) [ 5.228085] md: unbind [ 5.228343] md: export_rdev(sdb2) [ 5.228626] md: unbind [ 5.228863] md: export_rdev(sda2)