On 04/09/2015 02:48 PM, Thomas Gleixner wrote: > On Thu, 9 Apr 2015, Peter Zijlstra wrote: >> On Thu, Apr 09, 2015 at 09:20:39AM +0200, Ingo Molnar wrote: >>> if at least one base is active (on my fairly standard system all cpus >>> have at least one active hrtimer base all the time - and many cpus >>> have two bases active), then we run hrtimer_get_softirq_time(), which >>> dirties the cachelines of all 4 clock bases: >>> >>> base->clock_base[HRTIMER_BASE_REALTIME].softirq_time = xtim; >>> base->clock_base[HRTIMER_BASE_MONOTONIC].softirq_time = mono; >>> base->clock_base[HRTIMER_BASE_BOOTTIME].softirq_time = boot; >>> base->clock_base[HRTIMER_BASE_TAI].softirq_time = tai; >>> >>> so in practice we not only touch every cacheline in every timer >>> interrupt, but we _dirty_ them, even the inactive ones. >>> >> >> Urgh we should really _really_ kill that entire softirq mess. > > That's the !highres part. We cannot kill that one unless we remove all > support for machines which do not provide hardware for highres > support. > > Now the softirq_time thing is an optimization which we added back in > the days when hrtimer went into the tree and Roman complained about > the base->get_time() invocation being overkill. > > The reasoning behing this was that low resolution systems do not need > accurate time for the expiry and the forwarding because everything > happens tick aligned. > > So for !HIGHRES we have: > > static inline ktime_t hrtimer_cb_get_time(struct hrtimer *timer) > { > return timer->base->softirq_time; > }
Why is this called softirq_time when the hrtimer is being serviced in the hard irq context ? Regards Preeti U Murthy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/