• Vineet Gupta's avatar
    ARC: __switch_to: move ksp to thread_info from thread_struct · fd476197
    Vineet Gupta authored
    task's arch specific bits are carried in 2 places
     - embedded thread_struct in task_struct
     - associated thread_info (hoisted in task's stack page) and
       syntactically: (thread_info *)(task_struct->stack)
    
    ksp (dynamic kernel stack top) currently lives in thread_struct but
    given its deep location in task struct likely to cache miss when
    accessed from  __switch_to(). Moving it to thread_info would be more
    efficient given proximity to frequently accessed items such as
    preempt_count thus very likely to be in cache, specially in schedular
    code.
    
    Note however that currently tsk.thread.ksp takes 1 memory access (off
    of tsk pointer) while new code tsk->stack.ksp would take 2, but likely
    to be in cache. Moreover if task is current the 2nd reference can be
    elided and instead derived from SP as (SP & ~(THREAD_SIZE - 1))
    
    All of this also makes __switch_to() code simpler and we can see the 2
    ways of retirving ksp (descrobed above) in new code.
    Signed-off-by: default avatarVineet Gupta <vgupta@kernel.org>
    fd476197
processor.h 2.96 KB