136e40df3SAnna-Maria Behnsen /* SPDX-License-Identifier: GPL-2.0-only */ 236e40df3SAnna-Maria Behnsen 336e40df3SAnna-Maria Behnsen #undef TRACE_SYSTEM 436e40df3SAnna-Maria Behnsen #define TRACE_SYSTEM timer_migration 536e40df3SAnna-Maria Behnsen 636e40df3SAnna-Maria Behnsen #if !defined(_TRACE_TIMER_MIGRATION_H) || defined(TRACE_HEADER_MULTI_READ) 736e40df3SAnna-Maria Behnsen #define _TRACE_TIMER_MIGRATION_H 836e40df3SAnna-Maria Behnsen 936e40df3SAnna-Maria Behnsen #include <linux/tracepoint.h> 1036e40df3SAnna-Maria Behnsen 1136e40df3SAnna-Maria Behnsen /* Group events */ 1236e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_group_set, 1336e40df3SAnna-Maria Behnsen 1436e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_group *group), 1536e40df3SAnna-Maria Behnsen 1636e40df3SAnna-Maria Behnsen TP_ARGS(group), 1736e40df3SAnna-Maria Behnsen 1836e40df3SAnna-Maria Behnsen TP_STRUCT__entry( 1936e40df3SAnna-Maria Behnsen __field( void *, group ) 2036e40df3SAnna-Maria Behnsen __field( unsigned int, lvl ) 2136e40df3SAnna-Maria Behnsen __field( unsigned int, numa_node ) 2236e40df3SAnna-Maria Behnsen ), 2336e40df3SAnna-Maria Behnsen 2436e40df3SAnna-Maria Behnsen TP_fast_assign( 2536e40df3SAnna-Maria Behnsen __entry->group = group; 2636e40df3SAnna-Maria Behnsen __entry->lvl = group->level; 2736e40df3SAnna-Maria Behnsen __entry->numa_node = group->numa_node; 2836e40df3SAnna-Maria Behnsen ), 2936e40df3SAnna-Maria Behnsen 3036e40df3SAnna-Maria Behnsen TP_printk("group=%p lvl=%d numa=%d", 3136e40df3SAnna-Maria Behnsen __entry->group, __entry->lvl, __entry->numa_node) 3236e40df3SAnna-Maria Behnsen ); 3336e40df3SAnna-Maria Behnsen 3436e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_connect_child_parent, 3536e40df3SAnna-Maria Behnsen 3636e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_group *child), 3736e40df3SAnna-Maria Behnsen 3836e40df3SAnna-Maria Behnsen TP_ARGS(child), 3936e40df3SAnna-Maria Behnsen 4036e40df3SAnna-Maria Behnsen TP_STRUCT__entry( 4136e40df3SAnna-Maria Behnsen __field( void *, child ) 4236e40df3SAnna-Maria Behnsen __field( void *, parent ) 4336e40df3SAnna-Maria Behnsen __field( unsigned int, lvl ) 4436e40df3SAnna-Maria Behnsen __field( unsigned int, numa_node ) 4536e40df3SAnna-Maria Behnsen __field( unsigned int, num_children ) 46*835a9a67SAnna-Maria Behnsen __field( u32, groupmask ) 4736e40df3SAnna-Maria Behnsen ), 4836e40df3SAnna-Maria Behnsen 4936e40df3SAnna-Maria Behnsen TP_fast_assign( 5036e40df3SAnna-Maria Behnsen __entry->child = child; 5136e40df3SAnna-Maria Behnsen __entry->parent = child->parent; 5236e40df3SAnna-Maria Behnsen __entry->lvl = child->parent->level; 5336e40df3SAnna-Maria Behnsen __entry->numa_node = child->parent->numa_node; 5436e40df3SAnna-Maria Behnsen __entry->num_children = child->parent->num_children; 55*835a9a67SAnna-Maria Behnsen __entry->groupmask = child->groupmask; 5636e40df3SAnna-Maria Behnsen ), 5736e40df3SAnna-Maria Behnsen 58*835a9a67SAnna-Maria Behnsen TP_printk("group=%p groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d", 59*835a9a67SAnna-Maria Behnsen __entry->child, __entry->groupmask, __entry->parent, 6036e40df3SAnna-Maria Behnsen __entry->lvl, __entry->numa_node, __entry->num_children) 6136e40df3SAnna-Maria Behnsen ); 6236e40df3SAnna-Maria Behnsen 6336e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_connect_cpu_parent, 6436e40df3SAnna-Maria Behnsen 6536e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc), 6636e40df3SAnna-Maria Behnsen 6736e40df3SAnna-Maria Behnsen TP_ARGS(tmc), 6836e40df3SAnna-Maria Behnsen 6936e40df3SAnna-Maria Behnsen TP_STRUCT__entry( 7036e40df3SAnna-Maria Behnsen __field( void *, parent ) 7136e40df3SAnna-Maria Behnsen __field( unsigned int, cpu ) 7236e40df3SAnna-Maria Behnsen __field( unsigned int, lvl ) 7336e40df3SAnna-Maria Behnsen __field( unsigned int, numa_node ) 7436e40df3SAnna-Maria Behnsen __field( unsigned int, num_children ) 75*835a9a67SAnna-Maria Behnsen __field( u32, groupmask ) 7636e40df3SAnna-Maria Behnsen ), 7736e40df3SAnna-Maria Behnsen 7836e40df3SAnna-Maria Behnsen TP_fast_assign( 7936e40df3SAnna-Maria Behnsen __entry->parent = tmc->tmgroup; 8036e40df3SAnna-Maria Behnsen __entry->cpu = tmc->cpuevt.cpu; 8136e40df3SAnna-Maria Behnsen __entry->lvl = tmc->tmgroup->level; 8236e40df3SAnna-Maria Behnsen __entry->numa_node = tmc->tmgroup->numa_node; 8336e40df3SAnna-Maria Behnsen __entry->num_children = tmc->tmgroup->num_children; 84*835a9a67SAnna-Maria Behnsen __entry->groupmask = tmc->groupmask; 8536e40df3SAnna-Maria Behnsen ), 8636e40df3SAnna-Maria Behnsen 87*835a9a67SAnna-Maria Behnsen TP_printk("cpu=%d groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d", 88*835a9a67SAnna-Maria Behnsen __entry->cpu, __entry->groupmask, __entry->parent, 8936e40df3SAnna-Maria Behnsen __entry->lvl, __entry->numa_node, __entry->num_children) 9036e40df3SAnna-Maria Behnsen ); 9136e40df3SAnna-Maria Behnsen 9236e40df3SAnna-Maria Behnsen DECLARE_EVENT_CLASS(tmigr_group_and_cpu, 9336e40df3SAnna-Maria Behnsen 9436e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask), 9536e40df3SAnna-Maria Behnsen 9636e40df3SAnna-Maria Behnsen TP_ARGS(group, state, childmask), 9736e40df3SAnna-Maria Behnsen 9836e40df3SAnna-Maria Behnsen TP_STRUCT__entry( 9936e40df3SAnna-Maria Behnsen __field( void *, group ) 10036e40df3SAnna-Maria Behnsen __field( void *, parent ) 10136e40df3SAnna-Maria Behnsen __field( unsigned int, lvl ) 10236e40df3SAnna-Maria Behnsen __field( unsigned int, numa_node ) 10336e40df3SAnna-Maria Behnsen __field( u32, childmask ) 10436e40df3SAnna-Maria Behnsen __field( u8, active ) 10536e40df3SAnna-Maria Behnsen __field( u8, migrator ) 10636e40df3SAnna-Maria Behnsen ), 10736e40df3SAnna-Maria Behnsen 10836e40df3SAnna-Maria Behnsen TP_fast_assign( 10936e40df3SAnna-Maria Behnsen __entry->group = group; 11036e40df3SAnna-Maria Behnsen __entry->parent = group->parent; 11136e40df3SAnna-Maria Behnsen __entry->lvl = group->level; 11236e40df3SAnna-Maria Behnsen __entry->numa_node = group->numa_node; 11336e40df3SAnna-Maria Behnsen __entry->childmask = childmask; 11436e40df3SAnna-Maria Behnsen __entry->active = state.active; 11536e40df3SAnna-Maria Behnsen __entry->migrator = state.migrator; 11636e40df3SAnna-Maria Behnsen ), 11736e40df3SAnna-Maria Behnsen 11836e40df3SAnna-Maria Behnsen TP_printk("group=%p lvl=%d numa=%d active=%0x migrator=%0x " 11936e40df3SAnna-Maria Behnsen "parent=%p childmask=%0x", 12036e40df3SAnna-Maria Behnsen __entry->group, __entry->lvl, __entry->numa_node, 12136e40df3SAnna-Maria Behnsen __entry->active, __entry->migrator, 12236e40df3SAnna-Maria Behnsen __entry->parent, __entry->childmask) 12336e40df3SAnna-Maria Behnsen ); 12436e40df3SAnna-Maria Behnsen 12536e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_group_and_cpu, tmigr_group_set_cpu_inactive, 12636e40df3SAnna-Maria Behnsen 12736e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask), 12836e40df3SAnna-Maria Behnsen 12936e40df3SAnna-Maria Behnsen TP_ARGS(group, state, childmask) 13036e40df3SAnna-Maria Behnsen ); 13136e40df3SAnna-Maria Behnsen 13236e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_group_and_cpu, tmigr_group_set_cpu_active, 13336e40df3SAnna-Maria Behnsen 13436e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask), 13536e40df3SAnna-Maria Behnsen 13636e40df3SAnna-Maria Behnsen TP_ARGS(group, state, childmask) 13736e40df3SAnna-Maria Behnsen ); 13836e40df3SAnna-Maria Behnsen 13936e40df3SAnna-Maria Behnsen /* CPU events*/ 14036e40df3SAnna-Maria Behnsen DECLARE_EVENT_CLASS(tmigr_cpugroup, 14136e40df3SAnna-Maria Behnsen 14236e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc), 14336e40df3SAnna-Maria Behnsen 14436e40df3SAnna-Maria Behnsen TP_ARGS(tmc), 14536e40df3SAnna-Maria Behnsen 14636e40df3SAnna-Maria Behnsen TP_STRUCT__entry( 14736e40df3SAnna-Maria Behnsen __field( u64, wakeup ) 14836e40df3SAnna-Maria Behnsen __field( void *, parent ) 14936e40df3SAnna-Maria Behnsen __field( unsigned int, cpu ) 15036e40df3SAnna-Maria Behnsen 15136e40df3SAnna-Maria Behnsen ), 15236e40df3SAnna-Maria Behnsen 15336e40df3SAnna-Maria Behnsen TP_fast_assign( 15436e40df3SAnna-Maria Behnsen __entry->wakeup = tmc->wakeup; 15536e40df3SAnna-Maria Behnsen __entry->parent = tmc->tmgroup; 15636e40df3SAnna-Maria Behnsen __entry->cpu = tmc->cpuevt.cpu; 15736e40df3SAnna-Maria Behnsen ), 15836e40df3SAnna-Maria Behnsen 15936e40df3SAnna-Maria Behnsen TP_printk("cpu=%d parent=%p wakeup=%llu", __entry->cpu, __entry->parent, __entry->wakeup) 16036e40df3SAnna-Maria Behnsen ); 16136e40df3SAnna-Maria Behnsen 16236e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_new_timer, 16336e40df3SAnna-Maria Behnsen 16436e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc), 16536e40df3SAnna-Maria Behnsen 16636e40df3SAnna-Maria Behnsen TP_ARGS(tmc) 16736e40df3SAnna-Maria Behnsen ); 16836e40df3SAnna-Maria Behnsen 16936e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_active, 17036e40df3SAnna-Maria Behnsen 17136e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc), 17236e40df3SAnna-Maria Behnsen 17336e40df3SAnna-Maria Behnsen TP_ARGS(tmc) 17436e40df3SAnna-Maria Behnsen ); 17536e40df3SAnna-Maria Behnsen 17636e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_online, 17736e40df3SAnna-Maria Behnsen 17836e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc), 17936e40df3SAnna-Maria Behnsen 18036e40df3SAnna-Maria Behnsen TP_ARGS(tmc) 18136e40df3SAnna-Maria Behnsen ); 18236e40df3SAnna-Maria Behnsen 18336e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_offline, 18436e40df3SAnna-Maria Behnsen 18536e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc), 18636e40df3SAnna-Maria Behnsen 18736e40df3SAnna-Maria Behnsen TP_ARGS(tmc) 18836e40df3SAnna-Maria Behnsen ); 18936e40df3SAnna-Maria Behnsen 19036e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_handle_remote_cpu, 19136e40df3SAnna-Maria Behnsen 19236e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc), 19336e40df3SAnna-Maria Behnsen 19436e40df3SAnna-Maria Behnsen TP_ARGS(tmc) 19536e40df3SAnna-Maria Behnsen ); 19636e40df3SAnna-Maria Behnsen 19736e40df3SAnna-Maria Behnsen DECLARE_EVENT_CLASS(tmigr_idle, 19836e40df3SAnna-Maria Behnsen 19936e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt), 20036e40df3SAnna-Maria Behnsen 20136e40df3SAnna-Maria Behnsen TP_ARGS(tmc, nextevt), 20236e40df3SAnna-Maria Behnsen 20336e40df3SAnna-Maria Behnsen TP_STRUCT__entry( 20436e40df3SAnna-Maria Behnsen __field( u64, nextevt) 20536e40df3SAnna-Maria Behnsen __field( u64, wakeup) 20636e40df3SAnna-Maria Behnsen __field( void *, parent) 20736e40df3SAnna-Maria Behnsen __field( unsigned int, cpu) 20836e40df3SAnna-Maria Behnsen ), 20936e40df3SAnna-Maria Behnsen 21036e40df3SAnna-Maria Behnsen TP_fast_assign( 21136e40df3SAnna-Maria Behnsen __entry->nextevt = nextevt; 21236e40df3SAnna-Maria Behnsen __entry->wakeup = tmc->wakeup; 21336e40df3SAnna-Maria Behnsen __entry->parent = tmc->tmgroup; 21436e40df3SAnna-Maria Behnsen __entry->cpu = tmc->cpuevt.cpu; 21536e40df3SAnna-Maria Behnsen ), 21636e40df3SAnna-Maria Behnsen 21736e40df3SAnna-Maria Behnsen TP_printk("cpu=%d parent=%p nextevt=%llu wakeup=%llu", 21836e40df3SAnna-Maria Behnsen __entry->cpu, __entry->parent, __entry->nextevt, __entry->wakeup) 21936e40df3SAnna-Maria Behnsen ); 22036e40df3SAnna-Maria Behnsen 22136e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_idle, tmigr_cpu_idle, 22236e40df3SAnna-Maria Behnsen 22336e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt), 22436e40df3SAnna-Maria Behnsen 22536e40df3SAnna-Maria Behnsen TP_ARGS(tmc, nextevt) 22636e40df3SAnna-Maria Behnsen ); 22736e40df3SAnna-Maria Behnsen 22836e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_idle, tmigr_cpu_new_timer_idle, 22936e40df3SAnna-Maria Behnsen 23036e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt), 23136e40df3SAnna-Maria Behnsen 23236e40df3SAnna-Maria Behnsen TP_ARGS(tmc, nextevt) 23336e40df3SAnna-Maria Behnsen ); 23436e40df3SAnna-Maria Behnsen 23536e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_update_events, 23636e40df3SAnna-Maria Behnsen 23736e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_group *child, struct tmigr_group *group, 23836e40df3SAnna-Maria Behnsen union tmigr_state childstate, union tmigr_state groupstate, 23936e40df3SAnna-Maria Behnsen u64 nextevt), 24036e40df3SAnna-Maria Behnsen 24136e40df3SAnna-Maria Behnsen TP_ARGS(child, group, childstate, groupstate, nextevt), 24236e40df3SAnna-Maria Behnsen 24336e40df3SAnna-Maria Behnsen TP_STRUCT__entry( 24436e40df3SAnna-Maria Behnsen __field( void *, child ) 24536e40df3SAnna-Maria Behnsen __field( void *, group ) 24636e40df3SAnna-Maria Behnsen __field( u64, nextevt ) 24736e40df3SAnna-Maria Behnsen __field( u64, group_next_expiry ) 24836e40df3SAnna-Maria Behnsen __field( u64, child_evt_expiry ) 24936e40df3SAnna-Maria Behnsen __field( unsigned int, group_lvl ) 25036e40df3SAnna-Maria Behnsen __field( unsigned int, child_evtcpu ) 25136e40df3SAnna-Maria Behnsen __field( u8, child_active ) 25236e40df3SAnna-Maria Behnsen __field( u8, group_active ) 25336e40df3SAnna-Maria Behnsen ), 25436e40df3SAnna-Maria Behnsen 25536e40df3SAnna-Maria Behnsen TP_fast_assign( 25636e40df3SAnna-Maria Behnsen __entry->child = child; 25736e40df3SAnna-Maria Behnsen __entry->group = group; 25836e40df3SAnna-Maria Behnsen __entry->nextevt = nextevt; 25936e40df3SAnna-Maria Behnsen __entry->group_next_expiry = group->next_expiry; 26036e40df3SAnna-Maria Behnsen __entry->child_evt_expiry = child ? child->groupevt.nextevt.expires : 0; 26136e40df3SAnna-Maria Behnsen __entry->group_lvl = group->level; 26236e40df3SAnna-Maria Behnsen __entry->child_evtcpu = child ? child->groupevt.cpu : 0; 26336e40df3SAnna-Maria Behnsen __entry->child_active = childstate.active; 26436e40df3SAnna-Maria Behnsen __entry->group_active = groupstate.active; 26536e40df3SAnna-Maria Behnsen ), 26636e40df3SAnna-Maria Behnsen 26736e40df3SAnna-Maria Behnsen TP_printk("child=%p group=%p group_lvl=%d child_active=%0x group_active=%0x " 26836e40df3SAnna-Maria Behnsen "nextevt=%llu next_expiry=%llu child_evt_expiry=%llu child_evtcpu=%d", 26936e40df3SAnna-Maria Behnsen __entry->child, __entry->group, __entry->group_lvl, __entry->child_active, 27036e40df3SAnna-Maria Behnsen __entry->group_active, 27136e40df3SAnna-Maria Behnsen __entry->nextevt, __entry->group_next_expiry, __entry->child_evt_expiry, 27236e40df3SAnna-Maria Behnsen __entry->child_evtcpu) 27336e40df3SAnna-Maria Behnsen ); 27436e40df3SAnna-Maria Behnsen 27536e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_handle_remote, 27636e40df3SAnna-Maria Behnsen 27736e40df3SAnna-Maria Behnsen TP_PROTO(struct tmigr_group *group), 27836e40df3SAnna-Maria Behnsen 27936e40df3SAnna-Maria Behnsen TP_ARGS(group), 28036e40df3SAnna-Maria Behnsen 28136e40df3SAnna-Maria Behnsen TP_STRUCT__entry( 28236e40df3SAnna-Maria Behnsen __field( void * , group ) 28336e40df3SAnna-Maria Behnsen __field( unsigned int , lvl ) 28436e40df3SAnna-Maria Behnsen ), 28536e40df3SAnna-Maria Behnsen 28636e40df3SAnna-Maria Behnsen TP_fast_assign( 28736e40df3SAnna-Maria Behnsen __entry->group = group; 28836e40df3SAnna-Maria Behnsen __entry->lvl = group->level; 28936e40df3SAnna-Maria Behnsen ), 29036e40df3SAnna-Maria Behnsen 29136e40df3SAnna-Maria Behnsen TP_printk("group=%p lvl=%d", 29236e40df3SAnna-Maria Behnsen __entry->group, __entry->lvl) 29336e40df3SAnna-Maria Behnsen ); 29436e40df3SAnna-Maria Behnsen 29536e40df3SAnna-Maria Behnsen #endif /* _TRACE_TIMER_MIGRATION_H */ 29636e40df3SAnna-Maria Behnsen 29736e40df3SAnna-Maria Behnsen /* This part must be outside protection */ 29836e40df3SAnna-Maria Behnsen #include <trace/define_trace.h> 299