• Andi Kleen's avatar
    [PATCH] x86-64: Make remote TLB flush more scalable · e5bc8b6b
    Andi Kleen authored
    Instead of using a global spinlock to protect the state
    of the remote TLB flush use a lock and state for each sending CPU.
    
    To tell the receiver where to look for the state use 8 different
    call vectors.  Each CPU uses a specific vector to trigger flushes on other
    CPUs. Depending on the received vector the target CPUs look into
    the right per cpu variable for the flush data.
    
    When the system has more than 8 CPUs they are hashed to the 8 available
    vectors. The limited global vector space forces us to this right now.
    In future when interrupts are split into per CPU domains this could be
    fixed, at the cost of needing more IPIs in flat mode.
    
    Also some minor cleanup in the smp flush code and remove some outdated
    debug code.
    
    Requires patch to move cpu_possible_map setup earlier.
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    e5bc8b6b
entry.S 20.7 KB