С версии 1,3 в QEMU ввели поддержку Q35,

С версии 1,3 в QEMU ввели поддержку Q35, т.е в качестве виртуальной машины можно указать нечто, основанное на Q35, а не на i440-м как было раньше. Основные нововведения это PCI-E, ICH9. Нас тоже интересуют более свежие чипсеты, но для начала надо понять как работать с тем что есть. BIOS сейчас не UEFI. Бинарник биоса можно указать вместо seabios который идет с самим QEMU. Виртуальная машина прыгает куда нужно, но судя по всему, где-то на стадии опроса IO-портов ломается. Вот и пытаемся понять что к чему.
Пример одного из зависаний (лог из GDB):

0x00000c19 in ?? ()
1: x/i $cs*16+$eip
0xf0c19: add -0x7c9a,%ax
(gdb)
Watchpoint 1: $eax

Old value = 1979000527
New value = -664136
Watchpoint 8: $eip

Old value = (void (*)()) 0xc19


New value = (void (*)()) 0xc1d
Watchpoint 9: $eflags

Old value = [ PF SF ]
New value = [ PF AF SF ]
0x00000c1d in ?? ()
1: x/i $cs*16+$eip
0xf0c1d: add $0x4,%si
(gdb)
Watchpoint 6: $esi

Old value = -294404
New value = -294400
Watchpoint 8: $eip

Old value = (void (*)()) 0xc1d
New value = (void (*)()) 0xc21
0x00000c21 in ?? ()
1: x/i $cs*16+$eip
0xf0c21: loopw 0xf0c19

На этом фрагменте оно зацикливается.