• Vaidyanathan Srinivasan's avatar
    powerpc: Cleanup APIs for cpu/thread/core mappings · 99d86705
    Vaidyanathan Srinivasan authored
    These APIs take logical cpu number as input
    Change cpu_first_thread_in_core() to cpu_first_thread_sibling()
    Change cpu_last_thread_in_core() to cpu_last_thread_sibling()
    
    These APIs convert core number (index) to logical cpu/thread numbers
    Add cpu_first_thread_of_core(int core)
    Changed cpu_thread_to_core() to cpu_core_index_of_thread(int cpu)
    
    The goal is to make 'threads_per_core' accessible to the
    pseries_energy module.  Instead of making an API to read
    threads_per_core, this is a higher level wrapper function to
    convert from logical cpu number to core number.
    
    The current APIs cpu_first_thread_in_core() and
    cpu_last_thread_in_core() returns logical CPU number while
    cpu_thread_to_core() returns core number or index which is
    not a logical CPU number.  The new APIs are now clearly named to
    distinguish 'core number' versus first and last 'logical cpu
    number' in that core.
    
    The new APIs cpu_{first,last}_thread_sibling() work on
    logical cpu numbers.  While cpu_first_thread_of_core() and
    cpu_core_index_of_thread() work on core index.
    
    Example usage:  (4 threads per core system)
    
    cpu_first_thread_sibling(5) = 4
    cpu_last_thread_sibling(5) = 7
    cpu_core_index_of_thread(5) = 1
    cpu_first_thread_of_core(1) = 4
    
    cpu_core_index_of_thread() is used in cpu_to_drc_index() in the
    module and cpu_first_thread_of_core() is used in
    drc_index_to_cpu() in the module.
    
    Make API changes to few callers.  Export symbols for use in modules.
    Signed-off-by: default avatarVaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    99d86705
cputhreads.h 2.22 KB