]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Merge tag 'v6.8-rc5' into timers/core, to resolve conflict
authorIngo Molnar <mingo@kernel.org>
Mon, 19 Feb 2024 20:13:31 +0000 (21:13 +0100)
committerIngo Molnar <mingo@kernel.org>
Mon, 19 Feb 2024 21:27:57 +0000 (22:27 +0100)
There's a conflict between this recent upstream fix:

  dad6a09f3148 ("hrtimer: Report offline hrtimer enqueue")

and a pending commit in the timers tree:

  1a4729ecafc2 ("hrtimers: Move hrtimer base related definitions into hrtimer_defs.h")

Resolve it by applying the upstream fix to the new <linux/hrtimer_defs.h> header.

 Conflict:
include/linux/hrtimer.h
 Semantic conflict:
include/linux/hrtimer_defs.h

Signed-off-by: Ingo Molnar <mingo@kernel.org>
1  2 
include/linux/hrtimer_defs.h
kernel/time/hrtimer.c

index b12869dba59a0d2b3c6c59cd29780f11b636c2e4,2d3e3c5fb94662cd497171e758b05364475d2ca8..c3b4b7ed7c163fa4cbcba9168266566357f5865e
  
  #endif
  
-                                       softirq_activated       : 1;
 +#ifdef CONFIG_64BIT
 +# define __hrtimer_clock_base_align   ____cacheline_aligned
 +#else
 +# define __hrtimer_clock_base_align
 +#endif
 +
 +/**
 + * struct hrtimer_clock_base - the timer base for a specific clock
 + * @cpu_base:         per cpu clock base
 + * @index:            clock type index for per_cpu support when moving a
 + *                    timer to a base on another cpu.
 + * @clockid:          clock id for per_cpu support
 + * @seq:              seqcount around __run_hrtimer
 + * @running:          pointer to the currently running hrtimer
 + * @active:           red black tree root node for the active timers
 + * @get_time:         function to retrieve the current time of the clock
 + * @offset:           offset of this clock to the monotonic base
 + */
 +struct hrtimer_clock_base {
 +      struct hrtimer_cpu_base *cpu_base;
 +      unsigned int            index;
 +      clockid_t               clockid;
 +      seqcount_raw_spinlock_t seq;
 +      struct hrtimer          *running;
 +      struct timerqueue_head  active;
 +      ktime_t                 (*get_time)(void);
 +      ktime_t                 offset;
 +} __hrtimer_clock_base_align;
 +
 +enum  hrtimer_base_type {
 +      HRTIMER_BASE_MONOTONIC,
 +      HRTIMER_BASE_REALTIME,
 +      HRTIMER_BASE_BOOTTIME,
 +      HRTIMER_BASE_TAI,
 +      HRTIMER_BASE_MONOTONIC_SOFT,
 +      HRTIMER_BASE_REALTIME_SOFT,
 +      HRTIMER_BASE_BOOTTIME_SOFT,
 +      HRTIMER_BASE_TAI_SOFT,
 +      HRTIMER_MAX_CLOCK_BASES,
 +};
 +
 +/**
 + * struct hrtimer_cpu_base - the per cpu clock bases
 + * @lock:             lock protecting the base and associated clock bases
 + *                    and timers
 + * @cpu:              cpu number
 + * @active_bases:     Bitfield to mark bases with active timers
 + * @clock_was_set_seq:        Sequence counter of clock was set events
 + * @hres_active:      State of high resolution mode
 + * @in_hrtirq:                hrtimer_interrupt() is currently executing
 + * @hang_detected:    The last hrtimer interrupt detected a hang
 + * @softirq_activated:        displays, if the softirq is raised - update of softirq
 + *                    related settings is not required then.
 + * @nr_events:                Total number of hrtimer interrupt events
 + * @nr_retries:               Total number of hrtimer interrupt retries
 + * @nr_hangs:         Total number of hrtimer interrupt hangs
 + * @max_hang_time:    Maximum time spent in hrtimer_interrupt
 + * @softirq_expiry_lock: Lock which is taken while softirq based hrtimer are
 + *                     expired
++ * @online:           CPU is online from an hrtimers point of view
 + * @timer_waiters:    A hrtimer_cancel() invocation waits for the timer
 + *                    callback to finish.
 + * @expires_next:     absolute time of the next event, is required for remote
 + *                    hrtimer enqueue; it is the total first expiry time (hard
 + *                    and soft hrtimer are taken into account)
 + * @next_timer:               Pointer to the first expiring timer
 + * @softirq_expires_next: Time to check, if soft queues needs also to be expired
 + * @softirq_next_timer: Pointer to the first expiring softirq based timer
 + * @clock_base:               array of clock bases for this cpu
 + *
 + * Note: next_timer is just an optimization for __remove_hrtimer().
 + *     Do not dereference the pointer because it is not reliable on
 + *     cross cpu removals.
 + */
 +struct hrtimer_cpu_base {
 +      raw_spinlock_t                  lock;
 +      unsigned int                    cpu;
 +      unsigned int                    active_bases;
 +      unsigned int                    clock_was_set_seq;
 +      unsigned int                    hres_active             : 1,
 +                                      in_hrtirq               : 1,
 +                                      hang_detected           : 1,
++                                      softirq_activated       : 1,
++                                      online                  : 1;
 +#ifdef CONFIG_HIGH_RES_TIMERS
 +      unsigned int                    nr_events;
 +      unsigned short                  nr_retries;
 +      unsigned short                  nr_hangs;
 +      unsigned int                    max_hang_time;
 +#endif
 +#ifdef CONFIG_PREEMPT_RT
 +      spinlock_t                      softirq_expiry_lock;
 +      atomic_t                        timer_waiters;
 +#endif
 +      ktime_t                         expires_next;
 +      struct hrtimer                  *next_timer;
 +      ktime_t                         softirq_expires_next;
 +      struct hrtimer                  *softirq_next_timer;
 +      struct hrtimer_clock_base       clock_base[HRTIMER_MAX_CLOCK_BASES];
 +} ____cacheline_aligned;
 +
 +
  #endif
Simple merge