Loading arch/arm64/include/asm/thread_info.h +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ typedef unsigned long mm_segment_t; */ struct thread_info { unsigned long flags; /* low level flags */ unsigned long padding[7]; mm_segment_t addr_limit; /* address limit */ #ifdef CONFIG_ARM64_SW_TTBR0_PAN u64 ttbr0; /* saved TTBR0_EL1 */ Loading kernel/time/hrtimer.c +3 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ #include <linux/sched/deadline.h> #include <linux/timer.h> #include <linux/freezer.h> #include <linux/delay.h> #include <asm/uaccess.h> Loading Loading @@ -149,6 +150,7 @@ struct hrtimer_clock_base *lock_hrtimer_base(const struct hrtimer *timer, raw_spin_unlock_irqrestore(&base->cpu_base->lock, *flags); } cpu_relax(); ndelay(TIMER_LOCK_TIGHT_LOOP_DELAY_NS); } } Loading Loading @@ -1043,6 +1045,7 @@ int hrtimer_cancel(struct hrtimer *timer) if (ret >= 0) return ret; cpu_relax(); ndelay(TIMER_LOCK_TIGHT_LOOP_DELAY_NS); } } EXPORT_SYMBOL_GPL(hrtimer_cancel); Loading kernel/time/tick-internal.h +1 −0 Original line number Diff line number Diff line Loading @@ -165,3 +165,4 @@ DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases); extern u64 get_next_timer_interrupt(unsigned long basej, u64 basem); void timer_clear_idle(void); #define TIMER_LOCK_TIGHT_LOOP_DELAY_NS 350 kernel/time/timer.c +2 −0 Original line number Diff line number Diff line Loading @@ -942,6 +942,7 @@ static struct timer_base *lock_timer_base(struct timer_list *timer, spin_unlock_irqrestore(&base->lock, *flags); } cpu_relax(); ndelay(TIMER_LOCK_TIGHT_LOOP_DELAY_NS); } } Loading Loading @@ -1264,6 +1265,7 @@ int del_timer_sync(struct timer_list *timer) if (ret >= 0) return ret; cpu_relax(); ndelay(TIMER_LOCK_TIGHT_LOOP_DELAY_NS); } } EXPORT_SYMBOL(del_timer_sync); Loading Loading
arch/arm64/include/asm/thread_info.h +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ typedef unsigned long mm_segment_t; */ struct thread_info { unsigned long flags; /* low level flags */ unsigned long padding[7]; mm_segment_t addr_limit; /* address limit */ #ifdef CONFIG_ARM64_SW_TTBR0_PAN u64 ttbr0; /* saved TTBR0_EL1 */ Loading
kernel/time/hrtimer.c +3 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ #include <linux/sched/deadline.h> #include <linux/timer.h> #include <linux/freezer.h> #include <linux/delay.h> #include <asm/uaccess.h> Loading Loading @@ -149,6 +150,7 @@ struct hrtimer_clock_base *lock_hrtimer_base(const struct hrtimer *timer, raw_spin_unlock_irqrestore(&base->cpu_base->lock, *flags); } cpu_relax(); ndelay(TIMER_LOCK_TIGHT_LOOP_DELAY_NS); } } Loading Loading @@ -1043,6 +1045,7 @@ int hrtimer_cancel(struct hrtimer *timer) if (ret >= 0) return ret; cpu_relax(); ndelay(TIMER_LOCK_TIGHT_LOOP_DELAY_NS); } } EXPORT_SYMBOL_GPL(hrtimer_cancel); Loading
kernel/time/tick-internal.h +1 −0 Original line number Diff line number Diff line Loading @@ -165,3 +165,4 @@ DECLARE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases); extern u64 get_next_timer_interrupt(unsigned long basej, u64 basem); void timer_clear_idle(void); #define TIMER_LOCK_TIGHT_LOOP_DELAY_NS 350
kernel/time/timer.c +2 −0 Original line number Diff line number Diff line Loading @@ -942,6 +942,7 @@ static struct timer_base *lock_timer_base(struct timer_list *timer, spin_unlock_irqrestore(&base->lock, *flags); } cpu_relax(); ndelay(TIMER_LOCK_TIGHT_LOOP_DELAY_NS); } } Loading Loading @@ -1264,6 +1265,7 @@ int del_timer_sync(struct timer_list *timer) if (ret >= 0) return ret; cpu_relax(); ndelay(TIMER_LOCK_TIGHT_LOOP_DELAY_NS); } } EXPORT_SYMBOL(del_timer_sync); Loading