• Peter Zijlstra's avatar
    sched/clock: Provide local_clock_noinstr() · fb7d4948
    Peter Zijlstra authored
    Now that all ARCH_WANTS_NO_INSTR architectures (arm64, loongarch,
    s390, x86) provide sched_clock_noinstr(), use this to provide
    local_clock_noinstr().
    
    This local_clock_noinstr() will be safe to use from noinstr code with
    the assumption that any such noinstr code is non-preemptible (it had
    better be, entry code will have IRQs disabled while __cpuidle must
    have preemption disabled).
    
    Specifically, preempt_enable_notrace(), a common part of many a
    sched_clock() implementation calls out to schedule() -- even though,
    per the above, it will never trigger -- which frustrates noinstr
    validation.
    
      vmlinux.o: warning: objtool: local_clock+0xb5: call to preempt_schedule_notrace_thunk() leaves .noinstr.text section
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: Michael Kelley <mikelley@microsoft.com>  # Hyper-V
    Link: https://lore.kernel.org/r/20230519102715.978624636@infradead.org
    fb7d4948
clock.c 12.7 KB