From: Byungchul Park <max.byungchul.park@gmail.com> To: linux-kernel@vger.kernel.org Cc: torvalds@linux-foundation.org, damien.lemoal@opensource.wdc.com, linux-ide@vger.kernel.org, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, mingo@redhat.com, peterz@infradead.org, will@kernel.org, tglx@linutronix.de, rostedt@goodmis.org, joel@joelfernandes.org, sashal@kernel.org, daniel.vetter@ffwll.ch, duyuyang@gmail.com, johannes.berg@intel.com, tj@kernel.org, tytso@mit.edu, willy@infradead.org, david@fromorbit.com, amir73il@gmail.com, gregkh@linuxfoundation.org, kernel-team@lge.com, linux-mm@kvack.org, akpm@linux-foundation.org, mhocko@kernel.org, minchan@kernel.org, hannes@cmpxchg.org, vdavydov.dev@gmail.com, sj@kernel.org, jglisse@redhat.com, dennis@kernel.org, cl@linux.com, penberg@kernel.org, rientjes@google.com, vbabka@suse.cz, ngupta@vflare.org, linux-block@vger.kernel.org, paolo.valente@linaro.org, josef@toxicpanda.com, linux-fsdevel@vger.kernel.org, viro@zeniv.linux.org.uk, jack@suse.cz, jlayton@kernel.org, dan.j.williams@intel.com, hch@infradead.org, djwong@kernel.org, dri-devel@lists.freedesktop.org, rodrigosiqueiramelo@gmail.com, melissa.srw@gmail.com, hamohammed.sa@gmail.com, 42.hyeyoo@gmail.com, chris.p.wilson@intel.com, gwan-gyeong.mun@intel.com, max.byungchul.park@gmail.com, boqun.feng@gmail.com, longman@redhat.com, hdanton@sina.com Subject: [PATCH v9 07/25] dept: Apply sdt_might_sleep_{start,end}() to wait_for_completion()/complete() Date: Tue, 31 Jan 2023 17:39:36 +0900 [thread overview] Message-ID: <1675154394-25598-8-git-send-email-max.byungchul.park@gmail.com> (raw) In-Reply-To: <1675154394-25598-1-git-send-email-max.byungchul.park@gmail.com> Makes Dept able to track dependencies by wait_for_completion()/complete(). Signed-off-by: Byungchul Park <max.byungchul.park@gmail.com> --- include/linux/completion.h | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/include/linux/completion.h b/include/linux/completion.h index 62b32b1..32d535a 100644 --- a/include/linux/completion.h +++ b/include/linux/completion.h @@ -10,6 +10,7 @@ */ #include <linux/swait.h> +#include <linux/dept_sdt.h> /* * struct completion - structure used to maintain state for a "completion" @@ -26,14 +27,33 @@ struct completion { unsigned int done; struct swait_queue_head wait; + struct dept_map dmap; }; +#define init_completion(x) \ +do { \ + sdt_map_init(&(x)->dmap); \ + __init_completion(x); \ +} while (0) + +/* + * XXX: No use cases for now. Fill the body when needed. + */ #define init_completion_map(x, m) init_completion(x) -static inline void complete_acquire(struct completion *x) {} -static inline void complete_release(struct completion *x) {} + +static inline void complete_acquire(struct completion *x) +{ + sdt_might_sleep_start(&x->dmap); +} + +static inline void complete_release(struct completion *x) +{ + sdt_might_sleep_end(); +} #define COMPLETION_INITIALIZER(work) \ - { 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait) } + { 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait), \ + .dmap = DEPT_MAP_INITIALIZER(work, NULL), } #define COMPLETION_INITIALIZER_ONSTACK_MAP(work, map) \ (*({ init_completion_map(&(work), &(map)); &(work); })) @@ -75,13 +95,13 @@ static inline void complete_release(struct completion *x) {} #endif /** - * init_completion - Initialize a dynamically allocated completion + * __init_completion - Initialize a dynamically allocated completion * @x: pointer to completion structure that is to be initialized * * This inline function will initialize a dynamically created completion * structure. */ -static inline void init_completion(struct completion *x) +static inline void __init_completion(struct completion *x) { x->done = 0; init_swait_queue_head(&x->wait); -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Byungchul Park <max.byungchul.park@gmail.com> To: linux-kernel@vger.kernel.org Cc: hamohammed.sa@gmail.com, hdanton@sina.com, jack@suse.cz, peterz@infradead.org, daniel.vetter@ffwll.ch, amir73il@gmail.com, david@fromorbit.com, dri-devel@lists.freedesktop.org, mhocko@kernel.org, linux-mm@kvack.org, linux-ide@vger.kernel.org, adilger.kernel@dilger.ca, chris.p.wilson@intel.com, joel@joelfernandes.org, 42.hyeyoo@gmail.com, cl@linux.com, will@kernel.org, duyuyang@gmail.com, sashal@kernel.org, paolo.valente@linaro.org, damien.lemoal@opensource.wdc.com, willy@infradead.org, hch@infradead.org, mingo@redhat.com, djwong@kernel.org, vdavydov.dev@gmail.com, rientjes@google.com, dennis@kernel.org, linux-ext4@vger.kernel.org, ngupta@vflare.org, johannes.berg@intel.com, boqun.feng@gmail.com, dan.j.williams@intel.com, josef@toxicpanda.com, rostedt@goodmis.org, gwan-gyeong.mun@intel.com, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, jglisse@redhat.com, viro@zeniv.linux.org.uk, longman@redhat.com, tglx@linutronix.de, vbabka@suse.cz, melissa.srw@gmail.com, sj@kernel.org, tytso@mit.edu, rodrigosiqueiramelo@gmail.com, kernel-team@lge.com, gregkh@linuxfoundation.org, jlayton@kernel.org, penberg@kernel.org, minchan@kernel.org, max.byungchul.park@gmail.com, hannes@cmpxchg.org, tj@kernel.org, akpm@linux-foundation.org, torvalds@linux-foundation.org Subject: [PATCH v9 07/25] dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete() Date: Tue, 31 Jan 2023 17:39:36 +0900 [thread overview] Message-ID: <1675154394-25598-8-git-send-email-max.byungchul.park@gmail.com> (raw) In-Reply-To: <1675154394-25598-1-git-send-email-max.byungchul.park@gmail.com> Makes Dept able to track dependencies by wait_for_completion()/complete(). Signed-off-by: Byungchul Park <max.byungchul.park@gmail.com> --- include/linux/completion.h | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/include/linux/completion.h b/include/linux/completion.h index 62b32b1..32d535a 100644 --- a/include/linux/completion.h +++ b/include/linux/completion.h @@ -10,6 +10,7 @@ */ #include <linux/swait.h> +#include <linux/dept_sdt.h> /* * struct completion - structure used to maintain state for a "completion" @@ -26,14 +27,33 @@ struct completion { unsigned int done; struct swait_queue_head wait; + struct dept_map dmap; }; +#define init_completion(x) \ +do { \ + sdt_map_init(&(x)->dmap); \ + __init_completion(x); \ +} while (0) + +/* + * XXX: No use cases for now. Fill the body when needed. + */ #define init_completion_map(x, m) init_completion(x) -static inline void complete_acquire(struct completion *x) {} -static inline void complete_release(struct completion *x) {} + +static inline void complete_acquire(struct completion *x) +{ + sdt_might_sleep_start(&x->dmap); +} + +static inline void complete_release(struct completion *x) +{ + sdt_might_sleep_end(); +} #define COMPLETION_INITIALIZER(work) \ - { 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait) } + { 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait), \ + .dmap = DEPT_MAP_INITIALIZER(work, NULL), } #define COMPLETION_INITIALIZER_ONSTACK_MAP(work, map) \ (*({ init_completion_map(&(work), &(map)); &(work); })) @@ -75,13 +95,13 @@ static inline void complete_release(struct completion *x) {} #endif /** - * init_completion - Initialize a dynamically allocated completion + * __init_completion - Initialize a dynamically allocated completion * @x: pointer to completion structure that is to be initialized * * This inline function will initialize a dynamically created completion * structure. */ -static inline void init_completion(struct completion *x) +static inline void __init_completion(struct completion *x) { x->done = 0; init_swait_queue_head(&x->wait); -- 1.9.1
next prev parent reply other threads:[~2023-01-31 8:40 UTC|newest] Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-01-31 8:39 [PATCH v9 00/25] DEPT(Dependency Tracker) Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 01/25] llist: Move llist_{head,node} definition to types.h Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 02/25] dept: Implement Dept(Dependency Tracker) Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 03/25] dept: Add single event dependency tracker APIs Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 04/25] dept: Add lock " Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 05/25] dept: Tie to Lockdep and IRQ tracing Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-02-01 2:28 ` kernel test robot 2023-02-01 17:42 ` kernel test robot 2023-01-31 8:39 ` [PATCH v9 06/25] dept: Add proc knobs to show stats and dependency graph Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` Byungchul Park [this message] 2023-01-31 8:39 ` [PATCH v9 07/25] dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete() Byungchul Park 2023-02-01 3:19 ` [PATCH v9 07/25] dept: Apply sdt_might_sleep_{start,end}() " kernel test robot 2023-01-31 8:39 ` [PATCH v9 08/25] dept: Apply sdt_might_sleep_{start,end}() to PG_{locked,writeback} wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 08/25] dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 09/25] dept: Apply sdt_might_sleep_{start,end}() to swait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 10/25] dept: Apply sdt_might_sleep_{start,end}() to waitqueue wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 10/25] dept: Apply sdt_might_sleep_{start, end}() " Byungchul Park 2023-01-31 8:39 ` [PATCH v9 11/25] dept: Apply sdt_might_sleep_{start,end}() to hashed-waitqueue wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 11/25] dept: Apply sdt_might_sleep_{start, end}() " Byungchul Park 2023-01-31 8:39 ` [PATCH v9 12/25] dept: Distinguish each syscall context from another Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 13/25] dept: Distinguish each work " Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 14/25] dept: Add a mechanism to refill the internal memory pools on running out Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 15/25] locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 16/25] dept: Apply sdt_might_sleep_{start,end}() to dma fence wait Byungchul Park 2023-01-31 8:39 ` [PATCH v9 16/25] dept: Apply sdt_might_sleep_{start, end}() " Byungchul Park 2023-01-31 8:39 ` [PATCH v9 17/25] dept: Track timeout waits separately with a new Kconfig Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 18/25] dept: Apply timeout consideration to wait_for_completion()/complete() Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 19/25] dept: Apply timeout consideration to swait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 20/25] dept: Apply timeout consideration to waitqueue wait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 21/25] dept: Apply timeout consideration to hashed-waitqueue wait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 22/25] dept: Apply timeout consideration to dma fence wait Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 23/25] dept: Record the latest one out of consecutive waits of the same class Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 24/25] dept: Make Dept able to work with an external wgen Byungchul Park 2023-01-31 8:39 ` Byungchul Park 2023-01-31 8:39 ` [PATCH v9 25/25] dept: Track the potential waits of PG_{locked,writeback} Byungchul Park 2023-01-31 8:39 ` [PATCH v9 25/25] dept: Track the potential waits of PG_{locked, writeback} Byungchul Park
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1675154394-25598-8-git-send-email-max.byungchul.park@gmail.com \ --to=max.byungchul.park@gmail.com \ --cc=42.hyeyoo@gmail.com \ --cc=adilger.kernel@dilger.ca \ --cc=akpm@linux-foundation.org \ --cc=amir73il@gmail.com \ --cc=boqun.feng@gmail.com \ --cc=chris.p.wilson@intel.com \ --cc=cl@linux.com \ --cc=damien.lemoal@opensource.wdc.com \ --cc=dan.j.williams@intel.com \ --cc=daniel.vetter@ffwll.ch \ --cc=david@fromorbit.com \ --cc=dennis@kernel.org \ --cc=djwong@kernel.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=duyuyang@gmail.com \ --cc=gregkh@linuxfoundation.org \ --cc=gwan-gyeong.mun@intel.com \ --cc=hamohammed.sa@gmail.com \ --cc=hannes@cmpxchg.org \ --cc=hch@infradead.org \ --cc=hdanton@sina.com \ --cc=jack@suse.cz \ --cc=jglisse@redhat.com \ --cc=jlayton@kernel.org \ --cc=joel@joelfernandes.org \ --cc=johannes.berg@intel.com \ --cc=josef@toxicpanda.com \ --cc=kernel-team@lge.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-ide@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=longman@redhat.com \ --cc=melissa.srw@gmail.com \ --cc=mhocko@kernel.org \ --cc=minchan@kernel.org \ --cc=mingo@redhat.com \ --cc=ngupta@vflare.org \ --cc=paolo.valente@linaro.org \ --cc=penberg@kernel.org \ --cc=peterz@infradead.org \ --cc=rientjes@google.com \ --cc=rodrigosiqueiramelo@gmail.com \ --cc=rostedt@goodmis.org \ --cc=sashal@kernel.org \ --cc=sj@kernel.org \ --cc=tglx@linutronix.de \ --cc=tj@kernel.org \ --cc=torvalds@linux-foundation.org \ --cc=tytso@mit.edu \ --cc=vbabka@suse.cz \ --cc=vdavydov.dev@gmail.com \ --cc=viro@zeniv.linux.org.uk \ --cc=will@kernel.org \ --cc=willy@infradead.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.