cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

migrate.h (3594B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#undef TRACE_SYSTEM
      3#define TRACE_SYSTEM migrate
      4
      5#if !defined(_TRACE_MIGRATE_H) || defined(TRACE_HEADER_MULTI_READ)
      6#define _TRACE_MIGRATE_H
      7
      8#include <linux/tracepoint.h>
      9
     10#define MIGRATE_MODE						\
     11	EM( MIGRATE_ASYNC,	"MIGRATE_ASYNC")		\
     12	EM( MIGRATE_SYNC_LIGHT,	"MIGRATE_SYNC_LIGHT")		\
     13	EMe(MIGRATE_SYNC,	"MIGRATE_SYNC")
     14
     15
     16#define MIGRATE_REASON						\
     17	EM( MR_COMPACTION,	"compaction")			\
     18	EM( MR_MEMORY_FAILURE,	"memory_failure")		\
     19	EM( MR_MEMORY_HOTPLUG,	"memory_hotplug")		\
     20	EM( MR_SYSCALL,		"syscall_or_cpuset")		\
     21	EM( MR_MEMPOLICY_MBIND,	"mempolicy_mbind")		\
     22	EM( MR_NUMA_MISPLACED,	"numa_misplaced")		\
     23	EM( MR_CONTIG_RANGE,	"contig_range")			\
     24	EM( MR_LONGTERM_PIN,	"longterm_pin")			\
     25	EMe(MR_DEMOTION,	"demotion")
     26
     27/*
     28 * First define the enums in the above macros to be exported to userspace
     29 * via TRACE_DEFINE_ENUM().
     30 */
     31#undef EM
     32#undef EMe
     33#define EM(a, b)	TRACE_DEFINE_ENUM(a);
     34#define EMe(a, b)	TRACE_DEFINE_ENUM(a);
     35
     36MIGRATE_MODE
     37MIGRATE_REASON
     38
     39/*
     40 * Now redefine the EM() and EMe() macros to map the enums to the strings
     41 * that will be printed in the output.
     42 */
     43#undef EM
     44#undef EMe
     45#define EM(a, b)	{a, b},
     46#define EMe(a, b)	{a, b}
     47
     48TRACE_EVENT(mm_migrate_pages,
     49
     50	TP_PROTO(unsigned long succeeded, unsigned long failed,
     51		 unsigned long thp_succeeded, unsigned long thp_failed,
     52		 unsigned long thp_split, enum migrate_mode mode, int reason),
     53
     54	TP_ARGS(succeeded, failed, thp_succeeded, thp_failed,
     55		thp_split, mode, reason),
     56
     57	TP_STRUCT__entry(
     58		__field(	unsigned long,		succeeded)
     59		__field(	unsigned long,		failed)
     60		__field(	unsigned long,		thp_succeeded)
     61		__field(	unsigned long,		thp_failed)
     62		__field(	unsigned long,		thp_split)
     63		__field(	enum migrate_mode,	mode)
     64		__field(	int,			reason)
     65	),
     66
     67	TP_fast_assign(
     68		__entry->succeeded	= succeeded;
     69		__entry->failed		= failed;
     70		__entry->thp_succeeded	= thp_succeeded;
     71		__entry->thp_failed	= thp_failed;
     72		__entry->thp_split	= thp_split;
     73		__entry->mode		= mode;
     74		__entry->reason		= reason;
     75	),
     76
     77	TP_printk("nr_succeeded=%lu nr_failed=%lu nr_thp_succeeded=%lu nr_thp_failed=%lu nr_thp_split=%lu mode=%s reason=%s",
     78		__entry->succeeded,
     79		__entry->failed,
     80		__entry->thp_succeeded,
     81		__entry->thp_failed,
     82		__entry->thp_split,
     83		__print_symbolic(__entry->mode, MIGRATE_MODE),
     84		__print_symbolic(__entry->reason, MIGRATE_REASON))
     85);
     86
     87TRACE_EVENT(mm_migrate_pages_start,
     88
     89	TP_PROTO(enum migrate_mode mode, int reason),
     90
     91	TP_ARGS(mode, reason),
     92
     93	TP_STRUCT__entry(
     94		__field(enum migrate_mode, mode)
     95		__field(int, reason)
     96	),
     97
     98	TP_fast_assign(
     99		__entry->mode	= mode;
    100		__entry->reason	= reason;
    101	),
    102
    103	TP_printk("mode=%s reason=%s",
    104		  __print_symbolic(__entry->mode, MIGRATE_MODE),
    105		  __print_symbolic(__entry->reason, MIGRATE_REASON))
    106);
    107
    108DECLARE_EVENT_CLASS(migration_pte,
    109
    110		TP_PROTO(unsigned long addr, unsigned long pte, int order),
    111
    112		TP_ARGS(addr, pte, order),
    113
    114		TP_STRUCT__entry(
    115			__field(unsigned long, addr)
    116			__field(unsigned long, pte)
    117			__field(int, order)
    118		),
    119
    120		TP_fast_assign(
    121			__entry->addr = addr;
    122			__entry->pte = pte;
    123			__entry->order = order;
    124		),
    125
    126		TP_printk("addr=%lx, pte=%lx order=%d", __entry->addr, __entry->pte, __entry->order)
    127);
    128
    129DEFINE_EVENT(migration_pte, set_migration_pte,
    130	TP_PROTO(unsigned long addr, unsigned long pte, int order),
    131	TP_ARGS(addr, pte, order)
    132);
    133
    134DEFINE_EVENT(migration_pte, remove_migration_pte,
    135	TP_PROTO(unsigned long addr, unsigned long pte, int order),
    136	TP_ARGS(addr, pte, order)
    137);
    138
    139#endif /* _TRACE_MIGRATE_H */
    140
    141/* This part must be outside protection */
    142#include <trace/define_trace.h>