The hrtimer_cpu_base struct member expires_next and next_timer are
conditional members (CONFIG_HIGH_RES_TIMERS). This makes the hrtimer code
more complex and harder to understand than it actually is.

Reduce the conditionals related to those two struct members.

Signed-off-by: Anna-Maria Gleixner <[email protected]>
---
 include/linux/hrtimer.h |   10 +++++-----
 kernel/time/hrtimer.c   |   24 +++++-------------------
 2 files changed, 10 insertions(+), 24 deletions(-)

--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -160,13 +160,13 @@ enum  hrtimer_base_type {
  * @in_hrtirq:         hrtimer_interrupt() is currently executing
  * @hres_active:       State of high resolution mode
  * @hang_detected:     The last hrtimer interrupt detected a hang
- * @expires_next:      absolute time of the next event, is required for remote
- *                     hrtimer enqueue
- * @next_timer:                Pointer to the first expiring timer
  * @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
+ * @expires_next:      absolute time of the next event, is required for remote
+ *                     hrtimer enqueue
+ * @next_timer:                Pointer to the first expiring timer
  * @clock_base:                array of clock bases for this cpu
  *
  * Note: next_timer is just an optimization for __remove_hrtimer().
@@ -184,13 +184,13 @@ struct hrtimer_cpu_base {
 #ifdef CONFIG_HIGH_RES_TIMERS
        unsigned int                    in_hrtirq       : 1,
                                        hang_detected   : 1;
-       ktime_t                         expires_next;
-       struct hrtimer                  *next_timer;
        unsigned int                    nr_events;
        unsigned int                    nr_retries;
        unsigned int                    nr_hangs;
        unsigned int                    max_hang_time;
 #endif
+       ktime_t                         expires_next;
+       struct hrtimer                  *next_timer;
        struct hrtimer_clock_base       clock_base[HRTIMER_MAX_CLOCK_BASES];
 } ____cacheline_aligned;
 
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -154,16 +154,16 @@ struct hrtimer_clock_base *lock_hrtimer_
 }
 
 /*
- * With HIGHRES=y we do not migrate the timer when it is expiring
- * before the next event on the target cpu because we cannot reprogram
- * the target cpu hardware and we would cause it to fire late.
+ * With high resolution timers enabled we do not migrate the timer
+ * when it is expiring before the next event on the target cpu because
+ * we cannot reprogram the target cpu hardware and we would cause it
+ * to fire late.
  *
  * Called with cpu_base->lock of target cpu held.
  */
 static int
 hrtimer_check_target(struct hrtimer *timer, struct hrtimer_clock_base 
*new_base)
 {
-#ifdef CONFIG_HIGH_RES_TIMERS
        ktime_t expires;
 
        if (!new_base->cpu_base->hres_active)
@@ -171,9 +171,6 @@ hrtimer_check_target(struct hrtimer *tim
 
        expires = ktime_sub(hrtimer_get_expires(timer), new_base->offset);
        return expires <= new_base->cpu_base->expires_next;
-#else
-       return 0;
-#endif
 }
 
 #ifdef CONFIG_NO_HZ_COMMON
@@ -456,9 +453,7 @@ static inline void debug_deactivate(stru
 static inline void hrtimer_update_next_timer(struct hrtimer_cpu_base *cpu_base,
                                             struct hrtimer *timer)
 {
-#ifdef CONFIG_HIGH_RES_TIMERS
        cpu_base->next_timer = timer;
-#endif
 }
 
 static ktime_t __hrtimer_get_next_event(struct hrtimer_cpu_base *cpu_base)
@@ -649,14 +644,6 @@ static void hrtimer_reprogram(struct hrt
 }
 
 /*
- * Initialize the high resolution related parts of cpu_base
- */
-static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base)
-{
-       base->expires_next = KTIME_MAX;
-}
-
-/*
  * Retrigger next event is called after clock was set
  *
  * Called with interrupts disabled via on_each_cpu()
@@ -721,7 +708,6 @@ static inline int hrtimer_reprogram(stru
 {
        return 0;
 }
-static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) { }
 static inline void retrigger_next_event(void *arg) { }
 
 #endif /* CONFIG_HIGH_RES_TIMERS */
@@ -1590,7 +1576,7 @@ int hrtimers_prepare_cpu(unsigned int cp
 
        cpu_base->cpu = cpu;
        cpu_base->hres_active = 0;
-       hrtimer_init_hres(cpu_base);
+       cpu_base->expires_next = KTIME_MAX;
        return 0;
 }
 


Reply via email to