|
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