• Suresh Siddha's avatar
    x86/tsc: Reduce the TSC sync check time for core-siblings · b0e5c779
    Suresh Siddha authored
    For each logical CPU that is coming online, we spend 20msec for
    checking the TSC synchronization. And as this is done
    sequentially for each logical CPU boot, this time gets added up
    depending on the number of logical CPU's supported by the
    platform.
    
    Minimize this by using the socket topology information.
    
    If the target CPU coming online doesn't have any of its
    core-siblings online, a timeout of 20msec will be used for the
    TSC-warp measurement loop. Otherwise a smaller timeout of 2msec
    will be used, as we have some information about this socket
    already (and this information grows as we have more and more
    logical-siblings in that socket).
    
    Ideally we should be able to skip the TSC sync check on the
    other core-siblings, if the first logical CPU in a socket passed
    the sync test. But as the TSC is per-logical CPU and can
    potentially be modified wrongly by the bios before the OS boot,
    TSC sync test for smaller duration should be able to catch such
    errors. Also this will catch the condition where all the cores
    in the socket doesn't get reset at the same time.
    
    For example, with this modification, time spent in TSC sync
    checks on a 4 socket 10-core with HT system gets reduced from
    1580msec to 212msec.
    Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
    Acked-by: default avatarArjan van de Ven <arjan@linux.intel.com>
    Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Jack Steiner <steiner@sgi.com>
    Cc: venki@google.com
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Link: http://lkml.kernel.org/r/1328581940.29790.20.camel@sbsiddha-desk.sc.intel.comSigned-off-by: default avatarIngo Molnar <mingo@elte.hu>
    b0e5c779
tsc_sync.c 5.51 KB