I'm looking at adding Xen SMP support, so I'm trying to work out what 
pv_ops we need, and how to cut into the existing smp stuff.

smpboot.c has a mixture of stuff which is generally useful for SMP stuff 
(the various CPU sets, and presumably the sibling relationships are 
useful in principle), but also a whole pile of APIC stuff which is 
irrelevent to Xen.  It has these exported symbols, with my first pass 
comments:

    00000644 T __cpu_die                        -- need pv_op
    000008a5 T __cpu_disable            -- need pv_op
    000006aa T __cpu_up                 -- need pv_op
    00000000 T cpu_coregroup_map                -- ? ignore
    00000868 T cpu_exit_clear           -- ?
    00000d9f T initialize_secondary             -- Xen no-op
    000008ee T smp_alloc_memory         -- Xen no-op (doesn't matter if it gets 
called)
    00000057 T smp_cpus_done            -- unwanted for Xen
    00000015 T smp_intr_init            -- need something to set up IPIs, but 
APIC independent
    0000082a T smp_prepare_boot_cpu             -- looks OK for Xen, I think
    00000066 T smp_prepare_cpus         -- need pv_op
      


So at first pass, it looks like we need 6-8 new pv_ops for SMP, which 
isn't very appealing.

Any thoughts about how to come up with a more elegant interface?  I'm 
digging through smpboot.c and friends, but there's a lot of goo in there...

It's not clear to me what we should do with all the topology stuff.  
Clearly a VCPU won't have any fixed physical relationship with other 
VCPUs unless they're pinned; I'm wondering if the existing code will 
confuse itself if it gets basically random topology info from cpuid.

    J
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/virtualization

Reply via email to