pv_ops smp support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jeremy Fitzhardinge wrote:
> Zachary Amsden wrote:
>> 1) What do you plan to do to address per-cpu data structures?
>
> Er, what's there at the moment, more or less.  The main thing is that 
> the secondary CPU get the PDA set up (init gdt and %gs) before anyone 
> wants to use it (which is generally the first use of 
> smp_processor_id() or current). At some point we'll probably fold the 
> PDA and PER_CPU together.  Xen can more or less completely initialize 
> the VCPU state before it is brought up, so there's little or no need 
> for any kind of bootstrap code.

No, I don't mean the Linux PDA - how do you access the Xen PDA?  Or have 
they conjoined somehow?



>> 2) What is your remote TLB shootdown model?
>
> Xen has a hypercall to shoot down a set of CPU's TLBs, so it doesn't 
> need to do an IPI (we'll need to extend the flush_tlb interface to 
> make good use of this).  It will still need IPIs for reschedule and 
> remote function calls or course.

So your invalidate "IPI" is actually a hypercall, and you can use the 
existing flush_tlb interface for the most part.  You just need a 
paravirt-op then for the IPI itself, which takes a CPU mask - and this 
seems to match nicely onto your hypercall.  I think you might want to 
optimize this a bit more, however, since in some cases you will issue 
implicit shootdown IPIs during a pte update hypercall.

This might require some reworking of the MMU interfaces in paravirt-ops 
to accomodate providing such a record, and perhaps adding a function to 
flush the tlb_gather interface so that pte updates which have such 
properties can record the shootdown.

This seems much cleaner than designing the shootdown semantic directly 
into such PTE updates, which is I believe what some of the older Xen 
patches did, although I could have misread them.

Zach


[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux