LCOV - code coverage report
Current view: top level - arch/x86/kernel - process.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 9 10 90.0 %
Date: 2021-04-22 12:43:58 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : //
       3             : // Code shared between 32 and 64 bit
       4             : 
       5             : #include <asm/spec-ctrl.h>
       6             : 
       7             : void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p);
       8             : 
       9             : /*
      10             :  * This needs to be inline to optimize for the common case where no extra
      11             :  * work needs to be done.
      12             :  */
      13       53473 : static inline void switch_to_extra(struct task_struct *prev,
      14             :                                    struct task_struct *next)
      15             : {
      16       53473 :         unsigned long next_tif = task_thread_info(next)->flags;
      17       53473 :         unsigned long prev_tif = task_thread_info(prev)->flags;
      18             : 
      19       53473 :         if (IS_ENABLED(CONFIG_SMP)) {
      20             :                 /*
      21             :                  * Avoid __switch_to_xtra() invocation when conditional
      22             :                  * STIBP is disabled and the only different bit is
      23             :                  * TIF_SPEC_IB. For CONFIG_SMP=n TIF_SPEC_IB is not
      24             :                  * in the TIF_WORK_CTXSW masks.
      25             :                  */
      26       53473 :                 if (!static_branch_likely(&switch_to_cond_stibp)) {
      27       53463 :                         prev_tif &= ~_TIF_SPEC_IB;
      28       53463 :                         next_tif &= ~_TIF_SPEC_IB;
      29             :                 }
      30             :         }
      31             : 
      32             :         /*
      33             :          * __switch_to_xtra() handles debug registers, i/o bitmaps,
      34             :          * speculation mitigations etc.
      35             :          */
      36       53464 :         if (unlikely(next_tif & _TIF_WORK_CTXSW_NEXT ||
      37             :                      prev_tif & _TIF_WORK_CTXSW_PREV))
      38           0 :                 __switch_to_xtra(prev, next);
      39       53464 : }

Generated by: LCOV version 1.14