For completions who don't want to get tracked by Dept, added
init_completion_nocheck() to disable Dept on it.

Signed-off-by: Byungchul Park <byungchul.p...@lge.com>
---
 include/linux/completion.h | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/include/linux/completion.h b/include/linux/completion.h
index a1ad5a8..9bd3bc9 100644
--- a/include/linux/completion.h
+++ b/include/linux/completion.h
@@ -30,6 +30,7 @@ struct completion {
 };
 
 #ifdef CONFIG_DEPT
+#define dept_wfc_nocheck(m)                    dept_map_nocheck(m)
 #define dept_wfc_init(m, k, s, n)              dept_map_init(m, k, s, n)
 #define dept_wfc_reinit(m)                     dept_map_reinit(m)
 #define dept_wfc_wait(m, ip)                                           \
@@ -41,6 +42,7 @@ struct completion {
 #define dept_wfc_enter(m, ip)                  dept_ecxt_enter(m, 1UL, ip, 
"completion_context_enter", "complete", 0)
 #define dept_wfc_exit(m, ip)                   dept_ecxt_exit(m, ip)
 #else
+#define dept_wfc_nocheck(m)                    do { } while (0)
 #define dept_wfc_init(m, k, s, n)              do { (void)(n); (void)(k); } 
while (0)
 #define dept_wfc_reinit(m)                     do { } while (0)
 #define dept_wfc_wait(m, ip)                   do { } while (0)
@@ -55,10 +57,11 @@ struct completion {
 #define WFC_DEPT_MAP_INIT(work)
 #endif
 
+#define init_completion_nocheck(x) __init_completion(x, NULL, #x, false)
 #define init_completion(x)                                     \
        do {                                                    \
                static struct dept_key __dkey;                  \
-               __init_completion(x, &__dkey, #x);              \
+               __init_completion(x, &__dkey, #x, true);        \
        } while (0)
 
 #define init_completion_map(x, m) init_completion(x)
@@ -117,10 +120,15 @@ static inline void complete_release(struct completion *x) 
{}
  */
 static inline void __init_completion(struct completion *x,
                                     struct dept_key *dkey,
-                                    const char *name)
+                                    const char *name, bool check)
 {
        x->done = 0;
-       dept_wfc_init(&x->dmap, dkey, 0, name);
+
+       if (check)
+               dept_wfc_init(&x->dmap, dkey, 0, name);
+       else
+               dept_wfc_nocheck(&x->dmap);
+
        init_swait_queue_head(&x->wait);
 }
 
-- 
1.9.1

Reply via email to