Thanks for your advice. I got newer version of OVMF from https://www.kraxel.org/repos/. And compile from source code(git://github.com/tianocore/edk2.git).
With these OVMF, it really works well on only 1 vcpu domain. But still failed with multi-vcpus.
The vcpu0 runnig in an endless loop, and other vcpus is halted. The stack of vcpu0 show below:
#0 0x00005571f4b10959 in address_space_update_topology_pass (as=0x5571f6b76de8, old_view=0x7f6884020690, new_view=0x7f6884022ab0, adding=true)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:753
#1 0x00005571f4b10a18 in address_space_update_topology (as=0x5571f6b76de8) at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:768
#2 0x00005571f4b10bba in memory_region_transaction_commit () at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:809
#3 0x00005571f4b13d8b in memory_region_update_container_subregions (subregion=0x5571f6cc5140)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:1658
#4 0x00005571f4b13e14 in memory_region_add_subregion_common (mr=0x5571f6a22530, offset=655360, subregion=0x5571f6cc5140)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:1668
#5 0x00005571f4b13ee8 in memory_region_add_subregion_overlap (mr=0x5571f6a22530, offset=655360, subregion=0x5571f6cc5140, priority=2)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:1687
#6 0x00005571f4b2c27a in vga_update_memory_access (s=0x5571f6cc4f38) at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/hw/display/vga.c:210
#7 0x00005571f4b2cddb in vga_ioport_write (opaque=0x5571f6cc4f38, addr=975, val=8)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/hw/display/vga.c:538
#8 0x00005571f4cf7072 in qxl_vga_ioport_write (opaque=0x5571f6cc4f38, addr=975, val=8) at hw/display/qxl.c:1197
#9 0x00005571f4b03316 in portio_write (opaque=0x5571f6c72890, addr=14, data=2056, size=2)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/ioport.c:201
#10 0x00005571f4b0ea9c in memory_region_write_accessor (mr=0x5571f6c72890, addr=14, value=0x7f688b73ab28, size=2, shift=0, mask=65535)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:444
#11 0x00005571f4b0ebe4 in access_with_adjusted_size (addr=14, value=0x7f688b73ab28, size=2, access_size_min=1, access_size_max=4,
access=0x5571f4b0ea00 <memory_region_write_accessor>, mr=0x5571f6c72890) at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:481
#12 0x00005571f4b11b28 in memory_region_dispatch_write (mr=0x5571f6c72890, addr=14, data=2056, size=2)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:1138
#13 0x00005571f4b152ce in io_mem_write (mr=0x5571f6c72890, addr=14, val=2056, size=2) at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/memory.c:1971
#14 0x00005571f4abd56b in address_space_rw (as=0x5571f5333b80, addr=974, buf=0x7f689a390000 "\b", <incomplete sequence \307>, len=2, is_write=true)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/exec.c:2123
#15 0x00005571f4b0b028 in kvm_handle_io (port=974, data=0x7f689a390000, direction=1, size=2, count=1)
at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/kvm-all.c:1616
#16 0x00005571f4b0b5d1 in kvm_cpu_exec (cpu=0x5571f6a5d5e0) at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/kvm-all.c:1758
#17 0x00005571f4af0bf0 in qemu_kvm_cpu_thread_fn (arg=0x5571f6a5d5e0) at /vms/V1R3B01D001_newFeature/daemon/qemu/qemu-2.1.2/cpus.c:898
#18 0x00007f6899c18e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#19 0x00007f68963f938d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#20 0x0000000000000000 in ?? ()
Thanks for your advice. I got newer version of OVMF from https:/ /www.kraxel. org/repos/. And compile from source code(git: //github. com/tianocore/ edk2.git) . space_update_ topology_ pass (as=0x5571f6b76de8, old_view= 0x7f6884020690, new_view= 0x7f6884022ab0, adding=true) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:753 space_update_ topology (as=0x5571f6b76de8) at /vms/V1R3B01D00 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:768 region_ transaction_ commit () at /vms/V1R3B01D00 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:809 region_ update_ container_ subregions (subregion= 0x5571f6cc5140) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:1658 region_ add_subregion_ common (mr=0x5571f6a22530, offset=655360, subregion= 0x5571f6cc5140) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:1668 region_ add_subregion_ overlap (mr=0x5571f6a22530, offset=655360, subregion= 0x5571f6cc5140, priority=2) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:1687 memory_ access (s=0x5571f6cc4f38) at /vms/V1R3B01D00 1_newFeature/ daemon/ qemu/qemu- 2.1.2/hw/ display/ vga.c:210 0x5571f6cc4f38, addr=975, val=8) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/hw/ display/ vga.c:538 ioport_ write (opaque= 0x5571f6cc4f38, addr=975, val=8) at hw/display/ qxl.c:1197 0x5571f6c72890, addr=14, data=2056, size=2) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/ioport. c:201 region_ write_accessor (mr=0x5571f6c72890, addr=14, value=0x7f688b7 3ab28, size=2, shift=0, mask=65535) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:444 with_adjusted_ size (addr=14, value=0x7f688b7 3ab28, size=2, access_size_min=1, access_size_max=4, 0x5571f4b0ea00 <memory_ region_ write_accessor> , mr=0x5571f6c72890) at /vms/V1R3B01D00 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:481 region_ dispatch_ write (mr=0x5571f6c72890, addr=14, data=2056, size=2) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:1138 1_newFeature/ daemon/ qemu/qemu- 2.1.2/memory. c:1971 1_newFeature/ daemon/ qemu/qemu- 2.1.2/exec. c:2123 0000, direction=1, size=2, count=1) 1_newFeature/ daemon/ qemu/qemu- 2.1.2/kvm- all.c:1616 d5e0) at /vms/V1R3B01D00 1_newFeature/ daemon/ qemu/qemu- 2.1.2/kvm- all.c:1758 cpu_thread_ fn (arg=0x5571f6a5 d5e0) at /vms/V1R3B01D00 1_newFeature/ daemon/ qemu/qemu- 2.1.2/cpus. c:898 64-linux- gnu/libpthread. so.0 64-linux- gnu/libc. so.6
With these OVMF, it really works well on only 1 vcpu domain. But still failed with multi-vcpus.
The vcpu0 runnig in an endless loop, and other vcpus is halted. The stack of vcpu0 show below:
#0 0x00005571f4b10959 in address_
at /vms/V1R3B01D00
#1 0x00005571f4b10a18 in address_
#2 0x00005571f4b10bba in memory_
#3 0x00005571f4b13d8b in memory_
at /vms/V1R3B01D00
#4 0x00005571f4b13e14 in memory_
at /vms/V1R3B01D00
#5 0x00005571f4b13ee8 in memory_
at /vms/V1R3B01D00
#6 0x00005571f4b2c27a in vga_update_
#7 0x00005571f4b2cddb in vga_ioport_write (opaque=
at /vms/V1R3B01D00
#8 0x00005571f4cf7072 in qxl_vga_
#9 0x00005571f4b03316 in portio_write (opaque=
at /vms/V1R3B01D00
#10 0x00005571f4b0ea9c in memory_
at /vms/V1R3B01D00
#11 0x00005571f4b0ebe4 in access_
access=
#12 0x00005571f4b11b28 in memory_
at /vms/V1R3B01D00
#13 0x00005571f4b152ce in io_mem_write (mr=0x5571f6c72890, addr=14, val=2056, size=2) at /vms/V1R3B01D00
#14 0x00005571f4abd56b in address_space_rw (as=0x5571f5333b80, addr=974, buf=0x7f689a390000 "\b", <incomplete sequence \307>, len=2, is_write=true)
at /vms/V1R3B01D00
#15 0x00005571f4b0b028 in kvm_handle_io (port=974, data=0x7f689a39
at /vms/V1R3B01D00
#16 0x00005571f4b0b5d1 in kvm_cpu_exec (cpu=0x5571f6a5
#17 0x00005571f4af0bf0 in qemu_kvm_
#18 0x00007f6899c18e9a in start_thread () from /lib/x86_
#19 0x00007f68963f938d in clone () from /lib/x86_
#20 0x0000000000000000 in ?? ()