• Balbir Singh's avatar
    x86, prctl: Hook L1D flushing in via prctl · e893bb1b
    Balbir Singh authored
    Use the existing PR_GET/SET_SPECULATION_CTRL API to expose the L1D flush
    capability. For L1D flushing PR_SPEC_FORCE_DISABLE and
    PR_SPEC_DISABLE_NOEXEC are not supported.
    
    Enabling L1D flush does not check if the task is running on an SMT enabled
    core, rather a check is done at runtime (at the time of flush), if the task
    runs on a SMT sibling then the task is sent a SIGBUS which is executed
    before the task returns to user space or to a guest.
    
    This is better than the other alternatives of:
    
      a. Ensuring strict affinity of the task (hard to enforce without further
         changes in the scheduler)
    
      b. Silently skipping flush for tasks that move to SMT enabled cores.
    
    Hook up the core prctl and implement the x86 specific parts which in turn
    makes it functional.
    Suggested-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarBalbir Singh <sblbir@amazon.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20210108121056.21940-5-sblbir@amazon.com
    e893bb1b
bugs.c 50.9 KB