public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Byungchul Park <byungchul@sk•com>
To: Petr Pavlu <petr.pavlu@suse•com>
Cc: kernel_team@skhynix•com, 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,
	josef@toxicpanda•com, linux-fsdevel@vger•kernel.org,
	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,
	harry.yoo@oracle•com, chris.p.wilson@intel•com,
	gwan-gyeong.mun@intel•com, max.byungchul.park@gmail•com,
	boqun.feng@gmail•com, longman@redhat•com,
	yunseong.kim@ericsson•com, ysk@kzalloc•com, yeoreum.yun@arm•com,
	netdev@vger•kernel.org, matthew.brost@intel•com,
	her0gyugyu@gmail•com, corbet@lwn•net, catalin.marinas@arm•com,
	bp@alien8•de, x86@kernel•org, hpa@zytor•com, luto@kernel•org,
	sumit.semwal@linaro•org, gustavo@padovan•org,
	christian.koenig@amd•com, andi.shyti@kernel•org, arnd@arndb•de,
	lorenzo.stoakes@oracle•com, Liam.Howlett@oracle•com,
	rppt@kernel•org, surenb@google•com, mcgrof@kernel•org,
	da.gomez@kernel•org, samitolvanen@google•com, paulmck@kernel•org,
	frederic@kernel•org, neeraj.upadhyay@kernel•org,
	joelagnelf@nvidia•com, josh@joshtriplett•org, urezki@gmail•com,
	mathieu.desnoyers@efficios•com, jiangshanlai@gmail•com,
	qiang.zhang@linux•dev, juri.lelli@redhat•com,
	vincent.guittot@linaro•org, dietmar.eggemann@arm•com,
	bsegall@google•com, mgorman@suse•de, vschneid@redhat•com,
	chuck.lever@oracle•com, neil@brown•name, okorniev@redhat•com,
	Dai.Ngo@oracle•com, tom@talpey•com, trondmy@kernel•org,
	anna@kernel•org, kees@kernel•org, bigeasy@linutronix•de,
	clrkwllms@kernel•org, mark.rutland@arm•com,
	ada.coupriediaz@arm•com, kristina.martsenko@arm•com,
	wangkefeng.wang@huawei•com, broonie@kernel•org,
	kevin.brodsky@arm•com, dwmw@amazon•co.uk, shakeel.butt@linux•dev,
	ast@kernel•org, ziy@nvidia•com, yuzhao@google•com,
	baolin.wang@linux•alibaba.com, usamaarif642@gmail•com,
	joel.granados@kernel•org, richard.weiyang@gmail•com,
	geert+renesas@glider•be, tim.c.chen@linux•intel.com,
	linux@treblig•org, alexander.shishkin@linux•intel.com,
	lillian@star-ark•net, chenhuacai@kernel•org, francesco@valla•it,
	guoweikang.kernel@gmail•com, link@vivo•com, jpoimboe@kernel•org,
	masahiroy@kernel•org, brauner@kernel•org,
	thomas.weissschuh@linutronix•de, oleg@redhat•com,
	mjguzik@gmail•com, andrii@kernel•org, wangfushuai@baidu•com,
	linux-doc@vger•kernel.org, linux-arm-kernel@lists•infradead.org,
	linux-media@vger•kernel.org, linaro-mm-sig@lists•linaro.org,
	linux-i2c@vger•kernel.org, linux-arch@vger•kernel.org,
	linux-modules@vger•kernel.org, rcu@vger•kernel.org,
	linux-nfs@vger•kernel.org, linux-rt-devel@lists•linux.dev,
	2407018371@qq•com, dakr@kernel•org,
	miguel.ojeda.sandonis@gmail•com, neilb@ownmail•net,
	bagasdotme@gmail•com, wsa+renesas@sang-engineering•com,
	dave.hansen@intel•com, geert@linux-m68k•org, ojeda@kernel•org,
	alex.gaynor@gmail•com, gary@garyguo•net,
	bjorn3_gh@protonmail•com, lossin@kernel•org,
	a.hindborg@kernel•org, aliceryhl@google•com, tmgross@umich•edu,
	rust-for-linux@vger•kernel.org, linux-kernel@vger•kernel.org
Subject: Re: [PATCH v18 34/42] dept: add module support for struct dept_event_site and dept_event_site_dep
Date: Mon, 23 Feb 2026 09:33:30 +0900	[thread overview]
Message-ID: <20260223003330.GB44876@system.software.com> (raw)
In-Reply-To: <7765df86-b08a-4f70-900d-4b4d85c07d49@suse.com>

On Wed, Feb 18, 2026 at 04:08:19PM +0100, Petr Pavlu wrote:
> On 2/13/26 6:50 AM, Byungchul Park wrote:
> > On Wed, Jan 07, 2026 at 01:19:00PM +0100, Petr Pavlu wrote:
> >> On 12/5/25 8:18 AM, Byungchul Park wrote:
> >>> struct dept_event_site and struct dept_event_site_dep have been
> >>> introduced to track dependencies between multi event sites for a single
> >>> wait, that will be loaded to data segment.  Plus, a custom section,
> >>> '.dept.event_sites', also has been introduced to keep pointers to the
> >>> objects to make sure all the event sites defined exist in code.
> >>>
> >>> dept should work with the section and segment of module.  Add the
> >>> support to handle the section and segment properly whenever modules are
> >>> loaded and unloaded.
> >>>
> >>> Signed-off-by: Byungchul Park <byungchul@sk•com>
> >>
> >> Below are a few comments from the module loader perspective.
> >
> > Sorry about the late reply.  I've been going through some major life
> > changes lately. :(
> >
> > Thank you sooooo~ much for your helpful feedback.  I will leave my
> > opinion below.
> >
> [...]
> >>> diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
> >>> index b14400c4f83b..07d883579269 100644
> >>> --- a/kernel/dependency/dept.c
> >>> +++ b/kernel/dependency/dept.c
> >>> @@ -984,6 +984,9 @@ static void bfs(void *root, struct bfs_ops *ops, void *in, void **out)
> >>>   * event sites.
> >>>   */
> >>>
> >>> +static LIST_HEAD(dept_event_sites);
> >>> +static LIST_HEAD(dept_event_site_deps);
> >>> +
> >>>  /*
> >>>   * Print all events in the circle.
> >>>   */
> >>> @@ -2043,6 +2046,33 @@ static void del_dep_rcu(struct rcu_head *rh)
> >>>       preempt_enable();
> >>>  }
> >>>
> >>> +/*
> >>> + * NOTE: Must be called with dept_lock held.
> >>> + */
> >>> +static void disconnect_event_site_dep(struct dept_event_site_dep *esd)
> >>> +{
> >>> +     list_del_rcu(&esd->dep_node);
> >>> +     list_del_rcu(&esd->dep_rev_node);
> >>> +}
> >>> +
> >>> +/*
> >>> + * NOTE: Must be called with dept_lock held.
> >>> + */
> >>> +static void disconnect_event_site(struct dept_event_site *es)
> >>> +{
> >>> +     struct dept_event_site_dep *esd, *next_esd;
> >>> +
> >>> +     list_for_each_entry_safe(esd, next_esd, &es->dep_head, dep_node) {
> >>> +             list_del_rcu(&esd->dep_node);
> >>> +             list_del_rcu(&esd->dep_rev_node);
> >>> +     }
> >>> +
> >>> +     list_for_each_entry_safe(esd, next_esd, &es->dep_rev_head, dep_rev_node) {
> >>> +             list_del_rcu(&esd->dep_node);
> >>> +             list_del_rcu(&esd->dep_rev_node);
> >>> +     }
> >>> +}
> >>> +
> >>>  /*
> >>>   * NOTE: Must be called with dept_lock held.
> >>>   */
> >>> @@ -2384,6 +2414,8 @@ void dept_free_range(void *start, unsigned int sz)
> >>>  {
> >>>       struct dept_task *dt = dept_task();
> >>>       struct dept_class *c, *n;
> >>> +     struct dept_event_site_dep *esd, *next_esd;
> >>> +     struct dept_event_site *es, *next_es;
> >>>       unsigned long flags;
> >>>
> >>>       if (unlikely(!dept_working()))
> >>> @@ -2405,6 +2437,24 @@ void dept_free_range(void *start, unsigned int sz)
> >>>       while (unlikely(!dept_lock()))
> >>>               cpu_relax();
> >>>
> >>> +     list_for_each_entry_safe(esd, next_esd, &dept_event_site_deps, all_node) {
> >>> +             if (!within((void *)esd, start, sz))
> >>> +                     continue;
> >>> +
> >>> +             disconnect_event_site_dep(esd);
> >>> +             list_del(&esd->all_node);
> >>> +     }
> >>> +
> >>> +     list_for_each_entry_safe(es, next_es, &dept_event_sites, all_node) {
> >>> +             if (!within((void *)es, start, sz) &&
> >>> +                 !within(es->name, start, sz) &&
> >>> +                 !within(es->func_name, start, sz))
> >>> +                     continue;
> >>> +
> >>> +             disconnect_event_site(es);
> >>> +             list_del(&es->all_node);
> >>> +     }
> >>> +
> >>>       list_for_each_entry_safe(c, n, &dept_classes, all_node) {
> >>>               if (!within((void *)c->key, start, sz) &&
> >>>                   !within(c->name, start, sz))
> >>> @@ -3337,6 +3387,7 @@ void __dept_recover_event(struct dept_event_site_dep *esd,
> >>>
> >>>       list_add(&esd->dep_node, &es->dep_head);
> >>>       list_add(&esd->dep_rev_node, &rs->dep_rev_head);
> >>> +     list_add(&esd->all_node, &dept_event_site_deps);
> >>>       check_recover_dl_bfs(esd);
> >>>  unlock:
> >>>       dept_unlock();
> >>> @@ -3347,6 +3398,23 @@ EXPORT_SYMBOL_GPL(__dept_recover_event);
> >>>
> >>>  #define B2KB(B) ((B) / 1024)
> >>>
> >>> +void dept_mark_event_site_used(void *start, void *end)
> >>
> >> Nit: I suggest that dept_mark_event_site_used() take pointers to
> >> dept_event_site_init, which would catch the type mismatch with
> >
> > IMO, this is the easiest way to get all the pointers from start to the
> > end, or I can't get the number of the pointers.  It's similar to the
> > initcalls section for device drivers.
> 
> This was a minor suggestion.. The idea is to simply change the function
> signature to:
> 
> void dept_mark_event_site_used(struct dept_event_site_init **start,
>                                struct dept_event_site_init **end))

I got what you meant.  I will.  Thanks.

	Byungchul

> This way, the compiler can provide proper type checking to ensure that
> correct pointers are passed to dept_mark_event_site_used(). It would
> catch the type mismatch with module::dept_event_sites.
> 
> >
> >> module::dept_event_sites.
> >>
> >>> +{
> >>> +     struct dept_event_site_init **evtinitpp;
> >>> +
> >>> +     for (evtinitpp = (struct dept_event_site_init **)start;
> >>> +          evtinitpp < (struct dept_event_site_init **)end;
> >>> +          evtinitpp++) {
> >>> +             (*evtinitpp)->evt_site->used = true;
> >>> +             (*evtinitpp)->evt_site->func_name = (*evtinitpp)->func_name;
> >>> +             list_add(&(*evtinitpp)->evt_site->all_node, &dept_event_sites);
> >>> +
> >>> +             pr_info("dept_event_site %s@%s is initialized.\n",
> >>> +                             (*evtinitpp)->evt_site->name,
> >>> +                             (*evtinitpp)->evt_site->func_name);
> >>> +     }
> >>> +}
> >>> +
> >>>  extern char __dept_event_sites_start[], __dept_event_sites_end[];
> >>
> >> Related to the above, __dept_event_sites_start and
> >> __dept_event_sites_end can already be properly typed here.
> >
> > How can I get the number of the pointers?
> 
> Similarly here, changing the code to:
> 
> extern struct dept_event_site_init *__dept_event_sites_start[], *__dept_event_sites_end[];
> 
> It is the same for the initcalls you mentioned. The declarations of
> their start/end symbols are also already properly typed as
> initcall_entry_t[] in include/linux/init.h.
> 
> --
> Thanks,
> Petr

  reply	other threads:[~2026-02-23  0:33 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-05  7:18 [PATCH v18 00/42] DEPT(DEPendency Tracker) Byungchul Park
2025-12-05  7:18 ` [PATCH v18 01/42] dept: implement " Byungchul Park
2025-12-05  7:18 ` [PATCH v18 02/42] dept: add single event dependency tracker APIs Byungchul Park
2025-12-05  7:18 ` [PATCH v18 03/42] dept: add lock " Byungchul Park
2025-12-05  7:18 ` [PATCH v18 04/42] dept: tie to lockdep and IRQ tracing Byungchul Park
2025-12-05  7:18 ` [PATCH v18 05/42] dept: add proc knobs to show stats and dependency graph Byungchul Park
2025-12-05  7:18 ` [PATCH v18 06/42] dept: distinguish each kernel context from another Byungchul Park
2025-12-05  7:18 ` [PATCH v18 07/42] dept: distinguish each work " Byungchul Park
2025-12-05  7:18 ` [PATCH v18 08/42] dept: add a mechanism to refill the internal memory pools on running out Byungchul Park
2025-12-05  7:18 ` [PATCH v18 09/42] dept: record the latest one out of consecutive waits of the same class Byungchul Park
2025-12-05  7:18 ` [PATCH v18 10/42] dept: apply sdt_might_sleep_{start,end}() to wait_for_completion()/complete() Byungchul Park
2025-12-05  7:18 ` [PATCH v18 11/42] dept: apply sdt_might_sleep_{start,end}() to swait Byungchul Park
2025-12-05  7:18 ` [PATCH v18 12/42] dept: apply sdt_might_sleep_{start,end}() to waitqueue wait Byungchul Park
2025-12-05  7:18 ` [PATCH v18 13/42] dept: apply sdt_might_sleep_{start,end}() to hashed-waitqueue wait Byungchul Park
2025-12-05  7:18 ` [PATCH v18 14/42] dept: apply sdt_might_sleep_{start,end}() to dma fence Byungchul Park
2025-12-05  7:18 ` [PATCH v18 15/42] dept: track timeout waits separately with a new Kconfig Byungchul Park
2025-12-05  7:18 ` [PATCH v18 16/42] dept: apply timeout consideration to wait_for_completion()/complete() Byungchul Park
2025-12-05  7:18 ` [PATCH v18 17/42] dept: apply timeout consideration to swait Byungchul Park
2025-12-05  7:18 ` [PATCH v18 18/42] dept: apply timeout consideration to waitqueue wait Byungchul Park
2025-12-05  7:18 ` [PATCH v18 19/42] dept: apply timeout consideration to hashed-waitqueue wait Byungchul Park
2025-12-05  7:18 ` [PATCH v18 20/42] dept: apply timeout consideration to dma fence wait Byungchul Park
2025-12-05  7:18 ` [PATCH v18 21/42] dept: make dept able to work with an external wgen Byungchul Park
2025-12-05  7:18 ` [PATCH v18 22/42] dept: track PG_locked with dept Byungchul Park
2025-12-05  7:18 ` [PATCH v18 23/42] dept: print staged wait's stacktrace on report Byungchul Park
2025-12-05  7:18 ` [PATCH v18 24/42] locking/lockdep: prevent various lockdep assertions when lockdep_off()'ed Byungchul Park
2025-12-05  7:18 ` [PATCH v18 25/42] dept: add documents for dept Byungchul Park
2025-12-06  0:25   ` Bagas Sanjaya
2025-12-15  4:22     ` Byungchul Park
2025-12-15  9:06       ` Bagas Sanjaya
2026-04-28 16:26     ` [PATCH] dept: update documentation function names to match implementation Yunseong Kim
2026-05-06  6:27       ` Byungchul Park
2025-12-05  7:18 ` [PATCH v18 26/42] cpu/hotplug: use a weaker annotation in AP thread Byungchul Park
2025-12-05  7:18 ` [PATCH v18 27/42] dept: assign dept map to mmu notifier invalidation synchronization Byungchul Park
2025-12-05  7:18 ` [PATCH v18 28/42] dept: assign unique dept_key to each distinct dma fence caller Byungchul Park
2025-12-05  7:18 ` [PATCH v18 29/42] dept: make dept aware of lockdep_set_lock_cmp_fn() annotation Byungchul Park
2025-12-05  7:18 ` [PATCH v18 30/42] dept: make dept stop from working on debug_locks_off() Byungchul Park
2025-12-05  7:18 ` [PATCH v18 31/42] dept: assign unique dept_key to each distinct wait_for_completion() caller Byungchul Park
2026-02-15  6:42   ` Dirk Behme
2026-02-23  0:32     ` Byungchul Park
2025-12-05  7:18 ` [PATCH v18 32/42] completion, dept: introduce init_completion_dmap() API Byungchul Park
2025-12-05  7:18 ` [PATCH v18 33/42] dept: introduce a new type of dependency tracking between multi event sites Byungchul Park
2025-12-05  7:18 ` [PATCH v18 34/42] dept: add module support for struct dept_event_site and dept_event_site_dep Byungchul Park
2026-01-07 12:19   ` Petr Pavlu
2026-02-13  5:50     ` Byungchul Park
2026-02-18 15:08       ` Petr Pavlu
2026-02-23  0:33         ` Byungchul Park [this message]
2025-12-05  7:18 ` [PATCH v18 35/42] dept: introduce event_site() to disable event tracking if it's recoverable Byungchul Park
2025-12-05  7:18 ` [PATCH v18 36/42] dept: implement a basic unit test for dept Byungchul Park
2025-12-05  7:18 ` [PATCH v18 37/42] dept: call dept_hardirqs_off() in local_irq_*() regardless of irq state Byungchul Park
2025-12-05  7:18 ` [PATCH v18 38/42] rcu/update: fix same dept key collision between various types of RCU Byungchul Park
2025-12-05  7:18 ` [PATCH v18 39/42] dept: introduce APIs to set page usage and use subclasses_evt for the usage Byungchul Park
2025-12-05  7:18 ` [PATCH v18 40/42] dept: track PG_writeback with dept Byungchul Park
2025-12-05  7:18 ` [PATCH v18 41/42] SUNRPC: relocate struct rcu_head to the first field of struct rpc_xprt Byungchul Park
2025-12-05  9:27   ` Jeff Layton
2025-12-15  5:15     ` Byungchul Park
2025-12-05  7:18 ` [PATCH v18 42/42] mm: percpu: increase PERCPU_DYNAMIC_SIZE_SHIFT on DEPT and large PAGE_SIZE Byungchul Park
2026-03-17  4:44 ` [PATCH v18 00/42] DEPT(DEPendency Tracker) Byungchul Park
2026-03-18  5:58   ` Yunseong Kim
2026-05-23 12:32 ` DEPT (the dependency tracker) as AI review prompt? (was: DEPT v18) Harry Yoo
2026-05-23 14:00   ` Yunseong Kim
2026-05-23 14:34     ` DEPT (the dependency tracker) as AI review prompt? Harry Yoo
2026-05-23 15:04       ` Yunseong Kim

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=20260223003330.GB44876@system.software.com \
    --to=byungchul@sk$(echo .)com \
    --cc=2407018371@qq$(echo .)com \
    --cc=Dai.Ngo@oracle$(echo .)com \
    --cc=Liam.Howlett@oracle$(echo .)com \
    --cc=a.hindborg@kernel$(echo .)org \
    --cc=ada.coupriediaz@arm$(echo .)com \
    --cc=adilger.kernel@dilger$(echo .)ca \
    --cc=akpm@linux-foundation$(echo .)org \
    --cc=alex.gaynor@gmail$(echo .)com \
    --cc=alexander.shishkin@linux$(echo .)intel.com \
    --cc=aliceryhl@google$(echo .)com \
    --cc=amir73il@gmail$(echo .)com \
    --cc=andi.shyti@kernel$(echo .)org \
    --cc=andrii@kernel$(echo .)org \
    --cc=anna@kernel$(echo .)org \
    --cc=arnd@arndb$(echo .)de \
    --cc=ast@kernel$(echo .)org \
    --cc=bagasdotme@gmail$(echo .)com \
    --cc=baolin.wang@linux$(echo .)alibaba.com \
    --cc=bigeasy@linutronix$(echo .)de \
    --cc=bjorn3_gh@protonmail$(echo .)com \
    --cc=boqun.feng@gmail$(echo .)com \
    --cc=bp@alien8$(echo .)de \
    --cc=brauner@kernel$(echo .)org \
    --cc=broonie@kernel$(echo .)org \
    --cc=bsegall@google$(echo .)com \
    --cc=catalin.marinas@arm$(echo .)com \
    --cc=chenhuacai@kernel$(echo .)org \
    --cc=chris.p.wilson@intel$(echo .)com \
    --cc=christian.koenig@amd$(echo .)com \
    --cc=chuck.lever@oracle$(echo .)com \
    --cc=cl@linux$(echo .)com \
    --cc=clrkwllms@kernel$(echo .)org \
    --cc=corbet@lwn$(echo .)net \
    --cc=da.gomez@kernel$(echo .)org \
    --cc=dakr@kernel$(echo .)org \
    --cc=damien.lemoal@opensource$(echo .)wdc.com \
    --cc=dan.j.williams@intel$(echo .)com \
    --cc=daniel.vetter@ffwll$(echo .)ch \
    --cc=dave.hansen@intel$(echo .)com \
    --cc=david@fromorbit$(echo .)com \
    --cc=dennis@kernel$(echo .)org \
    --cc=dietmar.eggemann@arm$(echo .)com \
    --cc=djwong@kernel$(echo .)org \
    --cc=dri-devel@lists$(echo .)freedesktop.org \
    --cc=duyuyang@gmail$(echo .)com \
    --cc=dwmw@amazon$(echo .)co.uk \
    --cc=francesco@valla$(echo .)it \
    --cc=frederic@kernel$(echo .)org \
    --cc=gary@garyguo$(echo .)net \
    --cc=geert+renesas@glider$(echo .)be \
    --cc=geert@linux-m68k$(echo .)org \
    --cc=gregkh@linuxfoundation$(echo .)org \
    --cc=guoweikang.kernel@gmail$(echo .)com \
    --cc=gustavo@padovan$(echo .)org \
    --cc=gwan-gyeong.mun@intel$(echo .)com \
    --cc=hamohammed.sa@gmail$(echo .)com \
    --cc=hannes@cmpxchg$(echo .)org \
    --cc=harry.yoo@oracle$(echo .)com \
    --cc=hch@infradead$(echo .)org \
    --cc=her0gyugyu@gmail$(echo .)com \
    --cc=hpa@zytor$(echo .)com \
    --cc=jack@suse$(echo .)cz \
    --cc=jglisse@redhat$(echo .)com \
    --cc=jiangshanlai@gmail$(echo .)com \
    --cc=jlayton@kernel$(echo .)org \
    --cc=joel.granados@kernel$(echo .)org \
    --cc=joel@joelfernandes$(echo .)org \
    --cc=joelagnelf@nvidia$(echo .)com \
    --cc=johannes.berg@intel$(echo .)com \
    --cc=josef@toxicpanda$(echo .)com \
    --cc=josh@joshtriplett$(echo .)org \
    --cc=jpoimboe@kernel$(echo .)org \
    --cc=juri.lelli@redhat$(echo .)com \
    --cc=kees@kernel$(echo .)org \
    --cc=kernel-team@lge$(echo .)com \
    --cc=kernel_team@skhynix$(echo .)com \
    --cc=kevin.brodsky@arm$(echo .)com \
    --cc=kristina.martsenko@arm$(echo .)com \
    --cc=lillian@star-ark$(echo .)net \
    --cc=linaro-mm-sig@lists$(echo .)linaro.org \
    --cc=link@vivo$(echo .)com \
    --cc=linux-arch@vger$(echo .)kernel.org \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    --cc=linux-block@vger$(echo .)kernel.org \
    --cc=linux-doc@vger$(echo .)kernel.org \
    --cc=linux-ext4@vger$(echo .)kernel.org \
    --cc=linux-fsdevel@vger$(echo .)kernel.org \
    --cc=linux-i2c@vger$(echo .)kernel.org \
    --cc=linux-ide@vger$(echo .)kernel.org \
    --cc=linux-kernel@vger$(echo .)kernel.org \
    --cc=linux-media@vger$(echo .)kernel.org \
    --cc=linux-mm@kvack$(echo .)org \
    --cc=linux-modules@vger$(echo .)kernel.org \
    --cc=linux-nfs@vger$(echo .)kernel.org \
    --cc=linux-rt-devel@lists$(echo .)linux.dev \
    --cc=linux@treblig$(echo .)org \
    --cc=longman@redhat$(echo .)com \
    --cc=lorenzo.stoakes@oracle$(echo .)com \
    --cc=lossin@kernel$(echo .)org \
    --cc=luto@kernel$(echo .)org \
    --cc=mark.rutland@arm$(echo .)com \
    --cc=masahiroy@kernel$(echo .)org \
    --cc=mathieu.desnoyers@efficios$(echo .)com \
    --cc=matthew.brost@intel$(echo .)com \
    --cc=max.byungchul.park@gmail$(echo .)com \
    --cc=mcgrof@kernel$(echo .)org \
    --cc=melissa.srw@gmail$(echo .)com \
    --cc=mgorman@suse$(echo .)de \
    --cc=mhocko@kernel$(echo .)org \
    --cc=miguel.ojeda.sandonis@gmail$(echo .)com \
    --cc=minchan@kernel$(echo .)org \
    --cc=mingo@redhat$(echo .)com \
    --cc=mjguzik@gmail$(echo .)com \
    --cc=neeraj.upadhyay@kernel$(echo .)org \
    --cc=neil@brown$(echo .)name \
    --cc=neilb@ownmail$(echo .)net \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=ngupta@vflare$(echo .)org \
    --cc=ojeda@kernel$(echo .)org \
    --cc=okorniev@redhat$(echo .)com \
    --cc=oleg@redhat$(echo .)com \
    --cc=paulmck@kernel$(echo .)org \
    --cc=penberg@kernel$(echo .)org \
    --cc=peterz@infradead$(echo .)org \
    --cc=petr.pavlu@suse$(echo .)com \
    --cc=qiang.zhang@linux$(echo .)dev \
    --cc=rcu@vger$(echo .)kernel.org \
    --cc=richard.weiyang@gmail$(echo .)com \
    --cc=rientjes@google$(echo .)com \
    --cc=rodrigosiqueiramelo@gmail$(echo .)com \
    --cc=rostedt@goodmis$(echo .)org \
    --cc=rppt@kernel$(echo .)org \
    --cc=rust-for-linux@vger$(echo .)kernel.org \
    --cc=samitolvanen@google$(echo .)com \
    --cc=sashal@kernel$(echo .)org \
    --cc=shakeel.butt@linux$(echo .)dev \
    --cc=sj@kernel$(echo .)org \
    --cc=sumit.semwal@linaro$(echo .)org \
    --cc=surenb@google$(echo .)com \
    --cc=tglx@linutronix$(echo .)de \
    --cc=thomas.weissschuh@linutronix$(echo .)de \
    --cc=tim.c.chen@linux$(echo .)intel.com \
    --cc=tj@kernel$(echo .)org \
    --cc=tmgross@umich$(echo .)edu \
    --cc=tom@talpey$(echo .)com \
    --cc=torvalds@linux-foundation$(echo .)org \
    --cc=trondmy@kernel$(echo .)org \
    --cc=tytso@mit$(echo .)edu \
    --cc=urezki@gmail$(echo .)com \
    --cc=usamaarif642@gmail$(echo .)com \
    --cc=vbabka@suse$(echo .)cz \
    --cc=vdavydov.dev@gmail$(echo .)com \
    --cc=vincent.guittot@linaro$(echo .)org \
    --cc=vschneid@redhat$(echo .)com \
    --cc=wangfushuai@baidu$(echo .)com \
    --cc=wangkefeng.wang@huawei$(echo .)com \
    --cc=will@kernel$(echo .)org \
    --cc=willy@infradead$(echo .)org \
    --cc=wsa+renesas@sang-engineering$(echo .)com \
    --cc=x86@kernel$(echo .)org \
    --cc=yeoreum.yun@arm$(echo .)com \
    --cc=ysk@kzalloc$(echo .)com \
    --cc=yunseong.kim@ericsson$(echo .)com \
    --cc=yuzhao@google$(echo .)com \
    --cc=ziy@nvidia$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox