]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - include/linux/jump_label.h
blktrace: Show requests without sector
[mirror_ubuntu-bionic-kernel.git] / include / linux / jump_label.h
index 3b7675bcca645397d664ef24d6ed5449ff9f3fc4..e0340ca08d9897bd12ecdbb47454961c0237da82 100644 (file)
@@ -82,9 +82,9 @@
 
 extern bool static_key_initialized;
 
-#define STATIC_KEY_CHECK_USE() WARN(!static_key_initialized,                 \
-                                   "%s used before call to jump_label_init", \
-                                   __func__)
+#define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,                      \
+                                   "%s(): static key '%pS' used before call to jump_label_init()", \
+                                   __func__, (key))
 
 #ifdef HAVE_JUMP_LABEL
 
@@ -160,6 +160,8 @@ extern void arch_jump_label_transform_static(struct jump_entry *entry,
 extern int jump_label_text_reserved(void *start, void *end);
 extern void static_key_slow_inc(struct static_key *key);
 extern void static_key_slow_dec(struct static_key *key);
+extern void static_key_slow_inc_cpuslocked(struct static_key *key);
+extern void static_key_slow_dec_cpuslocked(struct static_key *key);
 extern void jump_label_apply_nops(struct module *mod);
 extern int static_key_count(struct static_key *key);
 extern void static_key_enable(struct static_key *key);
@@ -212,16 +214,19 @@ static __always_inline bool static_key_true(struct static_key *key)
 
 static inline void static_key_slow_inc(struct static_key *key)
 {
-       STATIC_KEY_CHECK_USE();
+       STATIC_KEY_CHECK_USE(key);
        atomic_inc(&key->enabled);
 }
 
 static inline void static_key_slow_dec(struct static_key *key)
 {
-       STATIC_KEY_CHECK_USE();
+       STATIC_KEY_CHECK_USE(key);
        atomic_dec(&key->enabled);
 }
 
+#define static_key_slow_inc_cpuslocked(key) static_key_slow_inc(key)
+#define static_key_slow_dec_cpuslocked(key) static_key_slow_dec(key)
+
 static inline int jump_label_text_reserved(void *start, void *end)
 {
        return 0;
@@ -237,7 +242,7 @@ static inline int jump_label_apply_nops(struct module *mod)
 
 static inline void static_key_enable(struct static_key *key)
 {
-       STATIC_KEY_CHECK_USE();
+       STATIC_KEY_CHECK_USE(key);
 
        if (atomic_read(&key->enabled) != 0) {
                WARN_ON_ONCE(atomic_read(&key->enabled) != 1);
@@ -248,7 +253,7 @@ static inline void static_key_enable(struct static_key *key)
 
 static inline void static_key_disable(struct static_key *key)
 {
-       STATIC_KEY_CHECK_USE();
+       STATIC_KEY_CHECK_USE(key);
 
        if (atomic_read(&key->enabled) != 1) {
                WARN_ON_ONCE(atomic_read(&key->enabled) != 0);
@@ -416,6 +421,8 @@ extern bool ____wrong_branch_error(void);
 
 #define static_branch_inc(x)           static_key_slow_inc(&(x)->key)
 #define static_branch_dec(x)           static_key_slow_dec(&(x)->key)
+#define static_branch_inc_cpuslocked(x)        static_key_slow_inc_cpuslocked(&(x)->key)
+#define static_branch_dec_cpuslocked(x)        static_key_slow_dec_cpuslocked(&(x)->key)
 
 /*
  * Normal usage; boolean enable/disable.