Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

can panda2 support SMP? #152

Closed
linuxbest opened this issue Mar 25, 2017 · 1 comment
Closed

can panda2 support SMP? #152

linuxbest opened this issue Mar 25, 2017 · 1 comment

Comments

@linuxbest
Copy link

Hi,

Is panda support smp? if not, any idea or plan to support it?

Thanks.

(gdb) r -smp 2 -kernel ./vmlinuz-p1 -initrd ./initrd-p1 -nographic
.....
(gdb) where
#0 phys_page_set_level (map=map@entry=0x5555577ee960, lp=0x5555589cfeb0, lp@entry=0x5555589616b0, index=index@entry=0x7fffffffd6d0, nb=nb@entry=0x7fffffffd6d8, leaf=leaf@entry=271,
level=level@entry=0) at /home/ubuntu/src/panda-re/panda/exec.c:272
#1 0x00005555559c11e2 in phys_page_set_level (map=map@entry=0x5555577ee960, lp=0x5555589616b0, lp@entry=0x55555895feb0, index=index@entry=0x7fffffffd6d0, nb=nb@entry=0x7fffffffd6d8,
leaf=leaf@entry=271, level=level@entry=1) at /home/ubuntu/src/panda-re/panda/exec.c:277
#2 0x00005555559c11e2 in phys_page_set_level (map=map@entry=0x5555577ee960, lp=0x55555895feb0, lp@entry=0x55555895f6b0, index=index@entry=0x7fffffffd6d0, nb=nb@entry=0x7fffffffd6d8,
leaf=leaf@entry=271, level=level@entry=2) at /home/ubuntu/src/panda-re/panda/exec.c:277
#3 0x00005555559c11e2 in phys_page_set_level (map=map@entry=0x5555577ee960, lp=0x55555895f6b0, lp@entry=0x55555895e6b0, index=index@entry=0x7fffffffd6d0, nb=nb@entry=0x7fffffffd6d8,
leaf=leaf@entry=271, level=level@entry=3) at /home/ubuntu/src/panda-re/panda/exec.c:277
#4 0x00005555559c11e2 in phys_page_set_level (map=map@entry=0x5555577ee960, lp=0x55555895e6b0, lp@entry=0x55555895eeb0, index=index@entry=0x7fffffffd6d0, nb=nb@entry=0x7fffffffd6d8,
leaf=leaf@entry=271, level=level@entry=4) at /home/ubuntu/src/panda-re/panda/exec.c:277
#5 0x00005555559c11e2 in phys_page_set_level (map=map@entry=0x5555577ee960, lp=0x55555895eeb0, lp@entry=0x5555577ee958, index=index@entry=0x7fffffffd6d0, nb=nb@entry=0x7fffffffd6d8,
leaf=leaf@entry=271, level=level@entry=5) at /home/ubuntu/src/panda-re/panda/exec.c:277
#6 0x00005555559c265c in phys_page_set (leaf=271, nb=192, index=0, d=0x5555577ee940) at /home/ubuntu/src/panda-re/panda/exec.c:290
#7 register_multipage (section=0x7fffffffd6e0, d=0x5555577ee940) at /home/ubuntu/src/panda-re/panda/exec.c:1240
#8 mem_add (listener=, section=) at /home/ubuntu/src/panda-re/panda/exec.c:1271
#9 0x0000555555a1c339 in address_space_update_topology_pass (as=as@entry=0x5555577c4600, adding=adding@entry=true, new_view=, new_view=,
old_view=0x55555891b800, old_view=0x55555891b800) at /home/ubuntu/src/panda-re/panda/memory.c:854
#10 0x0000555555a1e45e in address_space_update_topology (as=0x5555577c4600) at /home/ubuntu/src/panda-re/panda/memory.c:888
#11 memory_region_transaction_commit () at /home/ubuntu/src/panda-re/panda/memory.c:928
#12 0x0000555555bc3466 in pci_std_vga_realize (dev=0x55555896bec0, errp=) at /home/ubuntu/src/panda-re/panda/hw/display/vga-pci.c:238
#13 0x0000555555c2babc in pci_qdev_realize (qdev=0x55555896bec0, errp=0x7fffffffda10) at /home/ubuntu/src/panda-re/panda/hw/pci/pci.c:1962
#14 0x0000555555b99b06 in device_set_realized (obj=, value=, errp=0x7fffffffdb20) at /home/ubuntu/src/panda-re/panda/hw/core/qdev.c:918
#15 0x0000555555d0127e in property_set_bool (obj=0x55555896bec0, v=, name=, opaque=0x55555891b9e0, errp=0x7fffffffdb20)
at /home/ubuntu/src/panda-re/panda/qom/object.c:1860
#16 0x0000555555d05d81 in object_property_set_qobject (obj=obj@entry=0x55555896bec0, value=value@entry=0x555557b175d0, name=name@entry=0x5555565004f3 "realized",
errp=errp@entry=0x7fffffffdb20) at /home/ubuntu/src/panda-re/panda/qom/qom-qobject.c:27
#17 0x0000555555d036d0 in object_property_set_bool (obj=0x55555896bec0, value=, name=0x5555565004f3 "realized", errp=0x7fffffffdb20)
at /home/ubuntu/src/panda-re/panda/qom/object.c:1163
#18 0x0000555555b98402 in qdev_init_nofail (dev=dev@entry=0x55555896bec0) at /home/ubuntu/src/panda-re/panda/hw/core/qdev.c:358
#19 0x0000555555c2a94e in pci_create_simple_multifunction (name=, multifunction=, devfn=, bus=)
at /home/ubuntu/src/panda-re/panda/hw/pci/pci.c:2013
#20 pci_create_simple (name=, devfn=, bus=) at /home/ubuntu/src/panda-re/panda/hw/pci/pci.c:2024
#21 pci_vga_init (bus=bus@entry=0x555557a40a80) at /home/ubuntu/src/panda-re/panda/hw/pci/pci.c:1827
#22 0x0000555555a8afb3 in pc_vga_init (isa_bus=0x5555587d4e70, pci_bus=0x555557a40a80) at /home/ubuntu/src/panda-re/panda/hw/i386/pc.c:1498
#23 0x0000555555a8e269 in pc_init1 (machine=0x5555576a04c0, pci_type=0x5555564c19dd "i440FX", host_type=0x5555564c1997 "i440FX-pcihost")
at /home/ubuntu/src/panda-re/panda/hw/i386/pc_piix.c:229
#24 0x000055555598f056 in main (argc=, argv=, envp=) at /home/ubuntu/src/panda-re/panda/vl.c:4705

@moyix
Copy link
Collaborator

moyix commented Mar 26, 2017

We don't have any immediate plans to support SMP. There's not performance gain to be had under current QEMU (the Big QEMU Lock (BQL) currently serializes all CPU threads anyway) and it would require a fair bit of work to get record/replay working with multiple CPUs, since we'd have to record and then reproduce the thread interleaving.

There are probably also quite a few places in current PANDA where first_cpu is used instead of looping over all CPUs, which would make supporting SMP at all tricky, even aside from record/replay.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants