Commit 8eb42bea authored by John Hubbard's avatar John Hubbard Committed by Linus Torvalds

mm/migrate: de-duplicate migrate_reason strings

In order to remove the need to manually keep three different files in
synch, provide a common definition of the mapping between enum
migrate_reason, and the associated strings for each enum item.

1. Use the tracing system's mapping of enums to strings, by redefining
   and reusing the MIGRATE_REASON and supporting macros, and using that
   to populate the string array in mm/debug.c.

2. Move enum migrate_reason to migrate_mode.h. This is not strictly
   necessary for this patch, but migrate mode and migrate reason go
   together, so this will slightly clarify things.

Link: https://lkml.kernel.org/r/20210922041755.141817-2-jhubbard@nvidia.comSigned-off-by: default avatarJohn Hubbard <jhubbard@nvidia.com>
Reviewed-by: default avatarWeizhao Ouyang <o451686892@gmail.com>
Cc: "Huang, Ying" <ying.huang@intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent b5389086
...@@ -19,24 +19,7 @@ struct migration_target_control; ...@@ -19,24 +19,7 @@ struct migration_target_control;
*/ */
#define MIGRATEPAGE_SUCCESS 0 #define MIGRATEPAGE_SUCCESS 0
/* /* Defined in mm/debug.c: */
* Keep sync with:
* - macro MIGRATE_REASON in include/trace/events/migrate.h
* - migrate_reason_names[MR_TYPES] in mm/debug.c
*/
enum migrate_reason {
MR_COMPACTION,
MR_MEMORY_FAILURE,
MR_MEMORY_HOTPLUG,
MR_SYSCALL, /* also applies to cpusets */
MR_MEMPOLICY_MBIND,
MR_NUMA_MISPLACED,
MR_CONTIG_RANGE,
MR_LONGTERM_PIN,
MR_DEMOTION,
MR_TYPES
};
extern const char *migrate_reason_names[MR_TYPES]; extern const char *migrate_reason_names[MR_TYPES];
#ifdef CONFIG_MIGRATION #ifdef CONFIG_MIGRATION
......
...@@ -19,4 +19,17 @@ enum migrate_mode { ...@@ -19,4 +19,17 @@ enum migrate_mode {
MIGRATE_SYNC_NO_COPY, MIGRATE_SYNC_NO_COPY,
}; };
enum migrate_reason {
MR_COMPACTION,
MR_MEMORY_FAILURE,
MR_MEMORY_HOTPLUG,
MR_SYSCALL, /* also applies to cpusets */
MR_MEMPOLICY_MBIND,
MR_NUMA_MISPLACED,
MR_CONTIG_RANGE,
MR_LONGTERM_PIN,
MR_DEMOTION,
MR_TYPES
};
#endif /* MIGRATE_MODE_H_INCLUDED */ #endif /* MIGRATE_MODE_H_INCLUDED */
...@@ -16,17 +16,19 @@ ...@@ -16,17 +16,19 @@
#include <linux/ctype.h> #include <linux/ctype.h>
#include "internal.h" #include "internal.h"
#include <trace/events/migrate.h>
/*
* Define EM() and EMe() so that MIGRATE_REASON from trace/events/migrate.h can
* be used to populate migrate_reason_names[].
*/
#undef EM
#undef EMe
#define EM(a, b) b,
#define EMe(a, b) b
const char *migrate_reason_names[MR_TYPES] = { const char *migrate_reason_names[MR_TYPES] = {
"compaction", MIGRATE_REASON
"memory_failure",
"memory_hotplug",
"syscall_or_cpuset",
"mempolicy_mbind",
"numa_misplaced",
"contig_range",
"longterm_pin",
"demotion",
}; };
const struct trace_print_flags pageflag_names[] = { const struct trace_print_flags pageflag_names[] = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment