Merge tag 'for-5.9/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/devic...
[linux-2.6-microblaze.git] / mm / shuffle.c
index dd13ab8..9b5cd4b 100644 (file)
 #include "shuffle.h"
 
 DEFINE_STATIC_KEY_FALSE(page_alloc_shuffle_key);
-static unsigned long shuffle_state __ro_after_init;
-
-/*
- * Depending on the architecture, module parameter parsing may run
- * before, or after the cache detection. SHUFFLE_FORCE_DISABLE prevents,
- * or reverts the enabling of the shuffle implementation. SHUFFLE_ENABLE
- * attempts to turn on the implementation, but aborts if it finds
- * SHUFFLE_FORCE_DISABLE already set.
- */
-__meminit void page_alloc_shuffle(enum mm_shuffle_ctl ctl)
-{
-       if (ctl == SHUFFLE_FORCE_DISABLE)
-               set_bit(SHUFFLE_FORCE_DISABLE, &shuffle_state);
-
-       if (test_bit(SHUFFLE_FORCE_DISABLE, &shuffle_state)) {
-               if (test_and_clear_bit(SHUFFLE_ENABLE, &shuffle_state))
-                       static_branch_disable(&page_alloc_shuffle_key);
-       } else if (ctl == SHUFFLE_ENABLE
-                       && !test_and_set_bit(SHUFFLE_ENABLE, &shuffle_state))
-               static_branch_enable(&page_alloc_shuffle_key);
-}
 
 static bool shuffle_param;
 static int shuffle_show(char *buffer, const struct kernel_param *kp)
 {
-       return sprintf(buffer, "%c\n", test_bit(SHUFFLE_ENABLE, &shuffle_state)
-                       ? 'Y' : 'N');
+       return sprintf(buffer, "%c\n", shuffle_param ? 'Y' : 'N');
 }
 
 static __meminit int shuffle_store(const char *val,
@@ -47,9 +25,7 @@ static __meminit int shuffle_store(const char *val,
        if (rc < 0)
                return rc;
        if (shuffle_param)
-               page_alloc_shuffle(SHUFFLE_ENABLE);
-       else
-               page_alloc_shuffle(SHUFFLE_FORCE_DISABLE);
+               static_branch_enable(&page_alloc_shuffle_key);
        return 0;
 }
 module_param_call(shuffle, shuffle_store, shuffle_show, &shuffle_param, 0400);