linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] Remove __init from padata_do_multithreaded and padata_mt_helper.
@ 2020-07-02 15:55 Nico Pache
  2020-07-08 19:51 ` Daniel Jordan
  0 siblings, 1 reply; 3+ messages in thread
From: Nico Pache @ 2020-07-02 15:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-crypto, steffen.klassert, daniel.m.jordan, npache

Allow padata_do_multithreaded function to be called after bootstrap.

v2: removed __init from padata_work_alloc_mt and padata_works_free

Signed-off-by: Nico Pache <npache@redhat.com>
---
 include/linux/padata.h |  2 +-
 kernel/padata.c        | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/include/linux/padata.h b/include/linux/padata.h
index 7302efff5..2e7d92e80 100644
--- a/include/linux/padata.h
+++ b/include/linux/padata.h
@@ -201,7 +201,7 @@ extern void padata_free_shell(struct padata_shell *ps);
 extern int padata_do_parallel(struct padata_shell *ps,
 			      struct padata_priv *padata, int *cb_cpu);
 extern void padata_do_serial(struct padata_priv *padata);
-extern void __init padata_do_multithreaded(struct padata_mt_job *job);
+extern void padata_do_multithreaded(struct padata_mt_job *job);
 extern int padata_set_cpumask(struct padata_instance *pinst, int cpumask_type,
 			      cpumask_var_t cpumask);
 extern int padata_start(struct padata_instance *pinst);
diff --git a/kernel/padata.c b/kernel/padata.c
index 4373f7ada..c067b1339 100644
--- a/kernel/padata.c
+++ b/kernel/padata.c
@@ -58,7 +58,7 @@ struct padata_mt_job_state {
 };
 
 static void padata_free_pd(struct parallel_data *pd);
-static void __init padata_mt_helper(struct work_struct *work);
+static void padata_mt_helper(struct work_struct *work);
 
 static int padata_index_to_cpu(struct parallel_data *pd, int cpu_index)
 {
@@ -106,7 +106,7 @@ static void padata_work_init(struct padata_work *pw, work_func_t work_fn,
 	pw->pw_data = data;
 }
 
-static int __init padata_work_alloc_mt(int nworks, void *data,
+static int padata_work_alloc_mt(int nworks, void *data,
 				       struct list_head *head)
 {
 	int i;
@@ -132,7 +132,7 @@ static void padata_work_free(struct padata_work *pw)
 	list_add(&pw->pw_list, &padata_free_works);
 }
 
-static void __init padata_works_free(struct list_head *works)
+static void padata_works_free(struct list_head *works)
 {
 	struct padata_work *cur, *next;
 
@@ -463,7 +463,7 @@ static int pd_setup_cpumasks(struct parallel_data *pd,
 	return err;
 }
 
-static void __init padata_mt_helper(struct work_struct *w)
+static void padata_mt_helper(struct work_struct *w)
 {
 	struct padata_work *pw = container_of(w, struct padata_work, pw_work);
 	struct padata_mt_job_state *ps = pw->pw_data;
@@ -503,7 +503,7 @@ static void __init padata_mt_helper(struct work_struct *w)
  *
  * See the definition of struct padata_mt_job for more details.
  */
-void __init padata_do_multithreaded(struct padata_mt_job *job)
+void padata_do_multithreaded(struct padata_mt_job *job)
 {
 	/* In case threads finish at different times. */
 	static const unsigned long load_balance_factor = 4;
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] Remove __init from padata_do_multithreaded and padata_mt_helper.
  2020-07-02 15:55 [PATCH v2] Remove __init from padata_do_multithreaded and padata_mt_helper Nico Pache
@ 2020-07-08 19:51 ` Daniel Jordan
  2020-10-27 21:20   ` Daniel Jordan
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Jordan @ 2020-07-08 19:51 UTC (permalink / raw)
  To: Nico Pache; +Cc: linux-kernel, linux-crypto, steffen.klassert, daniel.m.jordan

(I was away for a while)

On Thu, Jul 02, 2020 at 11:55:48AM -0400, Nico Pache wrote:
> Allow padata_do_multithreaded function to be called after bootstrap.

The functions are __init because they're currently only needed during boot, and
using __init allows the text to be freed once it's over, saving some memory.

So this change, in isolation, doesn't make sense.  If there were an enhancement
you were thinking of making, this patch could then be bundled with it so the
change is made only when it's used.

However, there's still work that needs to be merged before
padata_do_multithreaded can be called after boot.  See the parts about priority
adjustments (MAX_NICE/renicing) and concurrency limits in this branch

  https://oss.oracle.com/git/gitweb.cgi?p=linux-dmjordan.git;a=shortlog;h=refs/heads/padata-mt-wip-v0.5

and the ktask discussions from linux-mm/lkml where concerns about these issues
were raised.  I plan to post these parts fairly soon and can include you if you
want.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] Remove __init from padata_do_multithreaded and padata_mt_helper.
  2020-07-08 19:51 ` Daniel Jordan
@ 2020-10-27 21:20   ` Daniel Jordan
  0 siblings, 0 replies; 3+ messages in thread
From: Daniel Jordan @ 2020-10-27 21:20 UTC (permalink / raw)
  To: Nico Pache; +Cc: linux-kernel, linux-crypto, steffen.klassert, daniel.m.jordan

On 10/27/20 12:46 AM, Nico Pache wrote:
> On Wed, Jul 08, 2020 at 03:51:40PM -0400, Daniel Jordan wrote:
> > (I was away for a while)
> > 
> > On Thu, Jul 02, 2020 at 11:55:48AM -0400, Nico Pache wrote:
> > > Allow padata_do_multithreaded function to be called after bootstrap.
> > 
> > The functions are __init because they're currently only needed during boot, and
> > using __init allows the text to be freed once it's over, saving some memory.
> > 
> > So this change, in isolation, doesn't make sense.  If there were an enhancement
> > you were thinking of making, this patch could then be bundled with it so the
> > change is made only when it's used.
> > 
> > However, there's still work that needs to be merged before
> > padata_do_multithreaded can be called after boot.  See the parts about priority
> > adjustments (MAX_NICE/renicing) and concurrency limits in this branch
> > 
> >   https://oss.oracle.com/git/gitweb.cgi?p=linux-dmjordan.git;a=shortlog;h=refs/heads/padata-mt-wip-v0.5
> > 
> > and the ktask discussions from linux-mm/lkml where concerns about these issues
> > were raised.  I plan to post these parts fairly soon and can include you if you
> > want.
>
> I really like the speed benefits I've been able to achieve by using your
> padata multithreaded interface in the branch you linked me to. Do you
> still have plans on moving forward with this upstream?

Yes, I'm still planning to push these patches upstream, but it's going to take
some time with all the prerequisites.  I'm working on remote charging in the
CPU controller now, which is the biggest unfinished task.  A little background
on that here:

https://lore.kernel.org/linux-mm/20200219220859.GF54486@cmpxchg.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-10-27 21:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-02 15:55 [PATCH v2] Remove __init from padata_do_multithreaded and padata_mt_helper Nico Pache
2020-07-08 19:51 ` Daniel Jordan
2020-10-27 21:20   ` Daniel Jordan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).