• Gautham R Shenoy's avatar
    powerpc/pseries: Reduce the polling interval in __cpu_up() · 67764263
    Gautham R Shenoy authored
    Time time taken for a single cpu online operation on a pseries machine
    is as follows:
    Dedicated LPAR (POWER6): ~220ms.
    Shared LPAR (POWER5)   : ~240ms.
    
    Of this time, approximately 200ms is taken up by __cpu_up(). This is because
    we poll every 200ms to check if the new cpu has notified it's presence
    through the cpu_callin_map. We repeat this operation until the new cpu sets
    the value in cpu_callin_map or 5 seconds elapse, whichever comes earlier.
    
    However, using completion_structs instead of polling loops,
    the time taken by the new processor to indicate it's presence has
    found to be less than 1ms on pseries. This method however may not
    work on all powerpc platforms due to the time-base synchronization code.
    
    Keeping this in mind, we could reduce msleep polling interval from
    200ms to 1ms while retaining the 5 second timeout.
    
    With this, the time taken for a cpu online operation changes as follows:
    Dedicated LPAR (POWER6): 20-25ms.
    Shared LPAR (POWER5)   : 60-80ms.
    
    In both these cases, it was found that the code polls through the loop
    only once indicating that 1ms is a reasonable value, atleast on pseries.
    
    The code needs testing on other powerpc platforms.
    Signed-off-by: default avatarGautham R Shenoy <ego@in.ibm.com>
    Acked-by: default avatarJoel Schopp <jschopp@austin.ibm.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    67764263
smp.c 13.1 KB