Re: [PATCH] time: Remove CONFIG_TIMER_STATS
On Wed, Feb 8, 2017 at 2:24 AM, Thomas Gleixnerwrote: > On Tue, 7 Feb 2017, John Stultz wrote: >> On Tue, Feb 7, 2017 at 3:40 PM, Kees Cook wrote: >> > Currently CONFIG_TIMER_STATS exposes process information across namespaces: >> > >> > kernel/time/timer_list.c print_timer(): >> > >> > SEQ_printf(m, ", %s/%d", tmp, timer->start_pid); >> > >> > /proc/timer_list: >> > >> > #11: <>, hrtimer_wakeup, S:01, do_nanosleep, cron/2570 >> > >> > Given that the tracer can give the same information, this patch entirely >> > removes CONFIG_TIMER_STATS. >> > >> > Suggested-by: Thomas Gleixner >> > Signed-off-by: Kees Cook >> >> I don't have an issue with this, but I worry this would break some >> tooling out there. Should it be marked as deprecated first? >> >> Or maybe just pulling the band-aid off is the best way? > > I think we should just kill it. > > No tools can really rely on the behaviour of that file because it depends > on CONFIG_TIMER_STATS and the information available there is just a random > snapshot of queued timers at a given point of time, which is in no way > usefull. Fair enough. Acked-by: John Stultz
Re: [PATCH] time: Remove CONFIG_TIMER_STATS
On Wed, Feb 8, 2017 at 2:24 AM, Thomas Gleixner wrote: > On Tue, 7 Feb 2017, John Stultz wrote: >> On Tue, Feb 7, 2017 at 3:40 PM, Kees Cook wrote: >> > Currently CONFIG_TIMER_STATS exposes process information across namespaces: >> > >> > kernel/time/timer_list.c print_timer(): >> > >> > SEQ_printf(m, ", %s/%d", tmp, timer->start_pid); >> > >> > /proc/timer_list: >> > >> > #11: <>, hrtimer_wakeup, S:01, do_nanosleep, cron/2570 >> > >> > Given that the tracer can give the same information, this patch entirely >> > removes CONFIG_TIMER_STATS. >> > >> > Suggested-by: Thomas Gleixner >> > Signed-off-by: Kees Cook >> >> I don't have an issue with this, but I worry this would break some >> tooling out there. Should it be marked as deprecated first? >> >> Or maybe just pulling the band-aid off is the best way? > > I think we should just kill it. > > No tools can really rely on the behaviour of that file because it depends > on CONFIG_TIMER_STATS and the information available there is just a random > snapshot of queued timers at a given point of time, which is in no way > usefull. Fair enough. Acked-by: John Stultz
Re: [PATCH] time: Remove CONFIG_TIMER_STATS
On Tue, 7 Feb 2017, John Stultz wrote: > On Tue, Feb 7, 2017 at 3:40 PM, Kees Cookwrote: > > Currently CONFIG_TIMER_STATS exposes process information across namespaces: > > > > kernel/time/timer_list.c print_timer(): > > > > SEQ_printf(m, ", %s/%d", tmp, timer->start_pid); > > > > /proc/timer_list: > > > > #11: <>, hrtimer_wakeup, S:01, do_nanosleep, cron/2570 > > > > Given that the tracer can give the same information, this patch entirely > > removes CONFIG_TIMER_STATS. > > > > Suggested-by: Thomas Gleixner > > Signed-off-by: Kees Cook > > I don't have an issue with this, but I worry this would break some > tooling out there. Should it be marked as deprecated first? > > Or maybe just pulling the band-aid off is the best way? I think we should just kill it. No tools can really rely on the behaviour of that file because it depends on CONFIG_TIMER_STATS and the information available there is just a random snapshot of queued timers at a given point of time, which is in no way usefull. Thanks, tglx
Re: [PATCH] time: Remove CONFIG_TIMER_STATS
On Tue, 7 Feb 2017, John Stultz wrote: > On Tue, Feb 7, 2017 at 3:40 PM, Kees Cook wrote: > > Currently CONFIG_TIMER_STATS exposes process information across namespaces: > > > > kernel/time/timer_list.c print_timer(): > > > > SEQ_printf(m, ", %s/%d", tmp, timer->start_pid); > > > > /proc/timer_list: > > > > #11: <>, hrtimer_wakeup, S:01, do_nanosleep, cron/2570 > > > > Given that the tracer can give the same information, this patch entirely > > removes CONFIG_TIMER_STATS. > > > > Suggested-by: Thomas Gleixner > > Signed-off-by: Kees Cook > > I don't have an issue with this, but I worry this would break some > tooling out there. Should it be marked as deprecated first? > > Or maybe just pulling the band-aid off is the best way? I think we should just kill it. No tools can really rely on the behaviour of that file because it depends on CONFIG_TIMER_STATS and the information available there is just a random snapshot of queued timers at a given point of time, which is in no way usefull. Thanks, tglx
Re: [PATCH] time: Remove CONFIG_TIMER_STATS
Hi Kees, [auto build test WARNING on tip/timers/core] [also build test WARNING on v4.10-rc7 next-20170207] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Kees-Cook/time-Remove-CONFIG_TIMER_STATS/20170208-080916 reproduce: make htmldocs All warnings (new ones prefixed by >>): make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. include/linux/init.h:1: warning: no structured comments found >> include/linux/hrtimer.h:108: warning: Excess struct/union/enum/typedef >> member 'start_pid' description in 'hrtimer' >> include/linux/hrtimer.h:108: warning: Excess struct/union/enum/typedef >> member 'start_site' description in 'hrtimer' >> include/linux/hrtimer.h:108: warning: Excess struct/union/enum/typedef >> member 'start_comm' description in 'hrtimer' include/linux/kthread.h:26: warning: Excess function parameter '...' description in 'kthread_create' kernel/sys.c:1: warning: no structured comments found drivers/dma-buf/seqno-fence.c:1: warning: no structured comments found include/drm/drm_drv.h:409: warning: No description found for parameter 'load' include/drm/drm_drv.h:409: warning: No description found for parameter 'firstopen' include/drm/drm_drv.h:409: warning: No description found for parameter 'open' include/drm/drm_drv.h:409: warning: No description found for parameter 'preclose' include/drm/drm_drv.h:409: warning: No description found for parameter 'postclose' include/drm/drm_drv.h:409: warning: No description found for parameter 'lastclose' include/drm/drm_drv.h:409: warning: No description found for parameter 'unload' include/drm/drm_drv.h:409: warning: No description found for parameter 'dma_ioctl' include/drm/drm_drv.h:409: warning: No description found for parameter 'dma_quiescent' include/drm/drm_drv.h:409: warning: No description found for parameter 'context_dtor' include/drm/drm_drv.h:409: warning: No description found for parameter 'set_busid' include/drm/drm_drv.h:409: warning: No description found for parameter 'irq_handler' include/drm/drm_drv.h:409: warning: No description found for parameter 'irq_preinstall' include/drm/drm_drv.h:409: warning: No description found for parameter 'irq_postinstall' include/drm/drm_drv.h:409: warning: No description found for parameter 'irq_uninstall' include/drm/drm_drv.h:409: warning: No description found for parameter 'debugfs_init' include/drm/drm_drv.h:409: warning: No description found for parameter 'debugfs_cleanup' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_open_object' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_close_object' include/drm/drm_drv.h:409: warning: No description found for parameter 'prime_handle_to_fd' include/drm/drm_drv.h:409: warning: No description found for parameter 'prime_fd_to_handle' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_export' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_import' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_pin' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_unpin' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_res_obj' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_get_sg_table' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_import_sg_table' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_vmap' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_vunmap' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_mmap' include/drm/drm_drv.h:409: warning: No description found for parameter 'vgaarb_irq' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_vm_ops' include/drm/drm_drv.h:409: warning: No description found for parameter 'major' include/drm/drm_drv.h:409: warning: No description found for parameter 'minor' include/drm/drm_drv.h:409: warning: No description found for parameter 'patchlevel' include/drm/drm_drv.h:409: warning: No description found for parameter 'name' include/drm/drm_drv.h:409: warning: No description found for parameter 'desc' include/drm/drm_drv.h:409: warning: No description found for parameter 'date' include/drm/drm_drv.h:409: warning: No description found for parameter 'driver_features' include/drm/drm_drv.h:409: warning: No description found for parameter 'dev_priv_size' include/drm/drm_drv.h:409: warning: No description found for parameter 'ioctls' include/drm/drm_drv.h:409: warning: No description found for parameter 'num_ioctls'
Re: [PATCH] time: Remove CONFIG_TIMER_STATS
Hi Kees, [auto build test WARNING on tip/timers/core] [also build test WARNING on v4.10-rc7 next-20170207] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Kees-Cook/time-Remove-CONFIG_TIMER_STATS/20170208-080916 reproduce: make htmldocs All warnings (new ones prefixed by >>): make[3]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. include/linux/init.h:1: warning: no structured comments found >> include/linux/hrtimer.h:108: warning: Excess struct/union/enum/typedef >> member 'start_pid' description in 'hrtimer' >> include/linux/hrtimer.h:108: warning: Excess struct/union/enum/typedef >> member 'start_site' description in 'hrtimer' >> include/linux/hrtimer.h:108: warning: Excess struct/union/enum/typedef >> member 'start_comm' description in 'hrtimer' include/linux/kthread.h:26: warning: Excess function parameter '...' description in 'kthread_create' kernel/sys.c:1: warning: no structured comments found drivers/dma-buf/seqno-fence.c:1: warning: no structured comments found include/drm/drm_drv.h:409: warning: No description found for parameter 'load' include/drm/drm_drv.h:409: warning: No description found for parameter 'firstopen' include/drm/drm_drv.h:409: warning: No description found for parameter 'open' include/drm/drm_drv.h:409: warning: No description found for parameter 'preclose' include/drm/drm_drv.h:409: warning: No description found for parameter 'postclose' include/drm/drm_drv.h:409: warning: No description found for parameter 'lastclose' include/drm/drm_drv.h:409: warning: No description found for parameter 'unload' include/drm/drm_drv.h:409: warning: No description found for parameter 'dma_ioctl' include/drm/drm_drv.h:409: warning: No description found for parameter 'dma_quiescent' include/drm/drm_drv.h:409: warning: No description found for parameter 'context_dtor' include/drm/drm_drv.h:409: warning: No description found for parameter 'set_busid' include/drm/drm_drv.h:409: warning: No description found for parameter 'irq_handler' include/drm/drm_drv.h:409: warning: No description found for parameter 'irq_preinstall' include/drm/drm_drv.h:409: warning: No description found for parameter 'irq_postinstall' include/drm/drm_drv.h:409: warning: No description found for parameter 'irq_uninstall' include/drm/drm_drv.h:409: warning: No description found for parameter 'debugfs_init' include/drm/drm_drv.h:409: warning: No description found for parameter 'debugfs_cleanup' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_open_object' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_close_object' include/drm/drm_drv.h:409: warning: No description found for parameter 'prime_handle_to_fd' include/drm/drm_drv.h:409: warning: No description found for parameter 'prime_fd_to_handle' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_export' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_import' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_pin' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_unpin' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_res_obj' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_get_sg_table' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_import_sg_table' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_vmap' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_vunmap' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_prime_mmap' include/drm/drm_drv.h:409: warning: No description found for parameter 'vgaarb_irq' include/drm/drm_drv.h:409: warning: No description found for parameter 'gem_vm_ops' include/drm/drm_drv.h:409: warning: No description found for parameter 'major' include/drm/drm_drv.h:409: warning: No description found for parameter 'minor' include/drm/drm_drv.h:409: warning: No description found for parameter 'patchlevel' include/drm/drm_drv.h:409: warning: No description found for parameter 'name' include/drm/drm_drv.h:409: warning: No description found for parameter 'desc' include/drm/drm_drv.h:409: warning: No description found for parameter 'date' include/drm/drm_drv.h:409: warning: No description found for parameter 'driver_features' include/drm/drm_drv.h:409: warning: No description found for parameter 'dev_priv_size' include/drm/drm_drv.h:409: warning: No description found for parameter 'ioctls' include/drm/drm_drv.h:409: warning: No description found for parameter 'num_ioctls'
Re: [PATCH] time: Remove CONFIG_TIMER_STATS
On Tue, Feb 7, 2017 at 3:40 PM, Kees Cookwrote: > Currently CONFIG_TIMER_STATS exposes process information across namespaces: > > kernel/time/timer_list.c print_timer(): > > SEQ_printf(m, ", %s/%d", tmp, timer->start_pid); > > /proc/timer_list: > > #11: <>, hrtimer_wakeup, S:01, do_nanosleep, cron/2570 > > Given that the tracer can give the same information, this patch entirely > removes CONFIG_TIMER_STATS. > > Suggested-by: Thomas Gleixner > Signed-off-by: Kees Cook I don't have an issue with this, but I worry this would break some tooling out there. Should it be marked as deprecated first? Or maybe just pulling the band-aid off is the best way? thanks -john
Re: [PATCH] time: Remove CONFIG_TIMER_STATS
On Tue, Feb 7, 2017 at 3:40 PM, Kees Cook wrote: > Currently CONFIG_TIMER_STATS exposes process information across namespaces: > > kernel/time/timer_list.c print_timer(): > > SEQ_printf(m, ", %s/%d", tmp, timer->start_pid); > > /proc/timer_list: > > #11: <>, hrtimer_wakeup, S:01, do_nanosleep, cron/2570 > > Given that the tracer can give the same information, this patch entirely > removes CONFIG_TIMER_STATS. > > Suggested-by: Thomas Gleixner > Signed-off-by: Kees Cook I don't have an issue with this, but I worry this would break some tooling out there. Should it be marked as deprecated first? Or maybe just pulling the band-aid off is the best way? thanks -john
[PATCH] time: Remove CONFIG_TIMER_STATS
Currently CONFIG_TIMER_STATS exposes process information across namespaces: kernel/time/timer_list.c print_timer(): SEQ_printf(m, ", %s/%d", tmp, timer->start_pid); /proc/timer_list: #11: <>, hrtimer_wakeup, S:01, do_nanosleep, cron/2570 Given that the tracer can give the same information, this patch entirely removes CONFIG_TIMER_STATS. Suggested-by: Thomas GleixnerSigned-off-by: Kees Cook --- Documentation/timers/timer_stats.txt | 73 -- include/linux/hrtimer.h | 5 - include/linux/timer.h| 45 kernel/kthread.c | 1 - kernel/time/Makefile | 1 - kernel/time/hrtimer.c| 38 kernel/time/timer.c | 48 +--- kernel/time/timer_list.c | 10 - kernel/time/timer_stats.c| 425 --- kernel/workqueue.c | 2 - lib/Kconfig.debug| 14 -- 11 files changed, 2 insertions(+), 660 deletions(-) delete mode 100644 Documentation/timers/timer_stats.txt delete mode 100644 kernel/time/timer_stats.c diff --git a/Documentation/timers/timer_stats.txt b/Documentation/timers/timer_stats.txt deleted file mode 100644 index de835ee97455.. --- a/Documentation/timers/timer_stats.txt +++ /dev/null @@ -1,73 +0,0 @@ -timer_stats - timer usage statistics - - -timer_stats is a debugging facility to make the timer (ab)usage in a Linux -system visible to kernel and userspace developers. If enabled in the config -but not used it has almost zero runtime overhead, and a relatively small -data structure overhead. Even if collection is enabled runtime all the -locking is per-CPU and lookup is hashed. - -timer_stats should be used by kernel and userspace developers to verify that -their code does not make unduly use of timers. This helps to avoid unnecessary -wakeups, which should be avoided to optimize power consumption. - -It can be enabled by CONFIG_TIMER_STATS in the "Kernel hacking" configuration -section. - -timer_stats collects information about the timer events which are fired in a -Linux system over a sample period: - -- the pid of the task(process) which initialized the timer -- the name of the process which initialized the timer -- the function where the timer was initialized -- the callback function which is associated to the timer -- the number of events (callbacks) - -timer_stats adds an entry to /proc: /proc/timer_stats - -This entry is used to control the statistics functionality and to read out the -sampled information. - -The timer_stats functionality is inactive on bootup. - -To activate a sample period issue: -# echo 1 >/proc/timer_stats - -To stop a sample period issue: -# echo 0 >/proc/timer_stats - -The statistics can be retrieved by: -# cat /proc/timer_stats - -While sampling is enabled, each readout from /proc/timer_stats will see -newly updated statistics. Once sampling is disabled, the sampled information -is kept until a new sample period is started. This allows multiple readouts. - -Sample output of /proc/timer_stats: - -Timerstats sample period: 3.888770 s - 12, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick) - 15, 1 swapper hcd_submit_urb (rh_timer_func) - 4, 959 kedacschedule_timeout (process_timeout) - 1, 0 swapper page_writeback_init (wb_timer_fn) - 28, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick) - 22, 2948 IRQ 4tty_flip_buffer_push (delayed_work_timer_fn) - 3, 3100 bash schedule_timeout (process_timeout) - 1, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) - 1, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) - 1, 1 swapper neigh_table_init_no_netlink (neigh_periodic_timer) - 1, 2292 ip __netdev_watchdog_up (dev_watchdog) - 1,23 events/1 do_cache_clean (delayed_work_timer_fn) -90 total events, 30.0 events/sec - -The first column is the number of events, the second column the pid, the third -column is the name of the process. The forth column shows the function which -initialized the timer and in parenthesis the callback function which was -executed on expiry. - -Thomas, Ingo - -Added flag to indicate 'deferrable timer' in /proc/timer_stats. A deferrable -timer will appear as follows - 10D, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) - diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index cdab81ba29f8..19c66b89899c 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -104,11 +104,6 @@ struct hrtimer { struct hrtimer_clock_base *base; u8 state; u8 is_rel; -#ifdef CONFIG_TIMER_STATS - int
[PATCH] time: Remove CONFIG_TIMER_STATS
Currently CONFIG_TIMER_STATS exposes process information across namespaces: kernel/time/timer_list.c print_timer(): SEQ_printf(m, ", %s/%d", tmp, timer->start_pid); /proc/timer_list: #11: <>, hrtimer_wakeup, S:01, do_nanosleep, cron/2570 Given that the tracer can give the same information, this patch entirely removes CONFIG_TIMER_STATS. Suggested-by: Thomas Gleixner Signed-off-by: Kees Cook --- Documentation/timers/timer_stats.txt | 73 -- include/linux/hrtimer.h | 5 - include/linux/timer.h| 45 kernel/kthread.c | 1 - kernel/time/Makefile | 1 - kernel/time/hrtimer.c| 38 kernel/time/timer.c | 48 +--- kernel/time/timer_list.c | 10 - kernel/time/timer_stats.c| 425 --- kernel/workqueue.c | 2 - lib/Kconfig.debug| 14 -- 11 files changed, 2 insertions(+), 660 deletions(-) delete mode 100644 Documentation/timers/timer_stats.txt delete mode 100644 kernel/time/timer_stats.c diff --git a/Documentation/timers/timer_stats.txt b/Documentation/timers/timer_stats.txt deleted file mode 100644 index de835ee97455.. --- a/Documentation/timers/timer_stats.txt +++ /dev/null @@ -1,73 +0,0 @@ -timer_stats - timer usage statistics - - -timer_stats is a debugging facility to make the timer (ab)usage in a Linux -system visible to kernel and userspace developers. If enabled in the config -but not used it has almost zero runtime overhead, and a relatively small -data structure overhead. Even if collection is enabled runtime all the -locking is per-CPU and lookup is hashed. - -timer_stats should be used by kernel and userspace developers to verify that -their code does not make unduly use of timers. This helps to avoid unnecessary -wakeups, which should be avoided to optimize power consumption. - -It can be enabled by CONFIG_TIMER_STATS in the "Kernel hacking" configuration -section. - -timer_stats collects information about the timer events which are fired in a -Linux system over a sample period: - -- the pid of the task(process) which initialized the timer -- the name of the process which initialized the timer -- the function where the timer was initialized -- the callback function which is associated to the timer -- the number of events (callbacks) - -timer_stats adds an entry to /proc: /proc/timer_stats - -This entry is used to control the statistics functionality and to read out the -sampled information. - -The timer_stats functionality is inactive on bootup. - -To activate a sample period issue: -# echo 1 >/proc/timer_stats - -To stop a sample period issue: -# echo 0 >/proc/timer_stats - -The statistics can be retrieved by: -# cat /proc/timer_stats - -While sampling is enabled, each readout from /proc/timer_stats will see -newly updated statistics. Once sampling is disabled, the sampled information -is kept until a new sample period is started. This allows multiple readouts. - -Sample output of /proc/timer_stats: - -Timerstats sample period: 3.888770 s - 12, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick) - 15, 1 swapper hcd_submit_urb (rh_timer_func) - 4, 959 kedacschedule_timeout (process_timeout) - 1, 0 swapper page_writeback_init (wb_timer_fn) - 28, 0 swapper hrtimer_stop_sched_tick (hrtimer_sched_tick) - 22, 2948 IRQ 4tty_flip_buffer_push (delayed_work_timer_fn) - 3, 3100 bash schedule_timeout (process_timeout) - 1, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) - 1, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) - 1, 1 swapper neigh_table_init_no_netlink (neigh_periodic_timer) - 1, 2292 ip __netdev_watchdog_up (dev_watchdog) - 1,23 events/1 do_cache_clean (delayed_work_timer_fn) -90 total events, 30.0 events/sec - -The first column is the number of events, the second column the pid, the third -column is the name of the process. The forth column shows the function which -initialized the timer and in parenthesis the callback function which was -executed on expiry. - -Thomas, Ingo - -Added flag to indicate 'deferrable timer' in /proc/timer_stats. A deferrable -timer will appear as follows - 10D, 1 swapper queue_delayed_work_on (delayed_work_timer_fn) - diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index cdab81ba29f8..19c66b89899c 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -104,11 +104,6 @@ struct hrtimer { struct hrtimer_clock_base *base; u8 state; u8 is_rel; -#ifdef CONFIG_TIMER_STATS - int start_pid; - void