|
85 | 85 | #include <linux/highmem.h> |
86 | 86 | #include <linux/hugetlb.h> |
87 | 87 | #include <linux/kernel.h> |
| 88 | +#include <linux/ktime.h> |
88 | 89 | #include <linux/sched.h> |
89 | 90 | #include <linux/sched/mm.h> |
90 | 91 | #include <linux/sched/numa_balancing.h> |
@@ -138,6 +139,7 @@ static struct mempolicy default_policy = { |
138 | 139 | .refcnt = ATOMIC_INIT(1), /* never free it */ |
139 | 140 | .mode = MPOL_LOCAL, |
140 | 141 | }; |
| 142 | +static bool mempolicy_cmdline_set; |
141 | 143 |
|
142 | 144 | static struct mempolicy preferred_node_policy[MAX_NUMNODES]; |
143 | 145 |
|
@@ -1629,6 +1631,14 @@ static long kernel_set_mempolicy(int mode, const unsigned long __user *nmask, |
1629 | 1631 | int err; |
1630 | 1632 |
|
1631 | 1633 | err = sanitize_mpol_flags(&lmode, &mode_flags); |
| 1634 | + |
| 1635 | + if (mempolicy_cmdline_set) { |
| 1636 | + // ignore messages during boot which are expected |
| 1637 | + if (ktime_get_boottime_seconds() > 40) |
| 1638 | + pr_info("Request to set policy to %d ignored\n", mode); |
| 1639 | + return 0; |
| 1640 | + } |
| 1641 | + |
1632 | 1642 | if (err) |
1633 | 1643 | return err; |
1634 | 1644 |
|
@@ -3402,6 +3412,7 @@ static int __init setup_numapolicy(char *str) |
3402 | 3412 | default_policy = pol; |
3403 | 3413 | mpol_to_str(buf, sizeof(buf), &pol); |
3404 | 3414 | pr_info("NUMA default policy overridden to '%s'\n", buf); |
| 3415 | + mempolicy_cmdline_set = pol.mode != MPOL_DEFAULT; |
3405 | 3416 | } else { |
3406 | 3417 | pr_warn("Unable to parse numa_policy=\n"); |
3407 | 3418 | } |
|
0 commit comments