Re: [PATCHSET -mm] bitmap, cpumask, nodemask: implement pr_cont functions and use di"

2014-12-10 Thread Tejun Heo
On Wed, Dec 10, 2014 at 01:49:44PM -0800, Andrew Morton wrote:
> On Wed, 10 Dec 2014 10:52:42 -0500 Tejun Heo  wrote:
> > The first two patches implement the pr_cont variants of the formatting
> > functions.  The rest convert the existing users to pr_cont and seq
> > functions subsystem-by-subsystem.  It'd be the easiest to route all
> > through -mm but the conversion patches can go through individual
> > subsystem trees afterwards if necessary.
> 
> But you're working on other code which will depend on this?  If so
> perhaps these should be held in your tree.

Yeah, that works too.  I was still targeting 3.19 window and some of
the conversion patches were conflicting, so thought it'd be easier
through -mm.

Given that the changes aren't that invasive, I think it'd be still a
good idea to merge the workqueue debugging during this merge window as
it gives a lot more visibility into tricky issues.  Once it's agreed
on, I'll try to route the feature patches (the first two from this
series + actual workqueue changes) early through wq branch.

Thanks.

-- 
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHSET -mm] bitmap, cpumask, nodemask: implement pr_cont functions and use di"

2014-12-10 Thread Andrew Morton
On Wed, 10 Dec 2014 10:52:42 -0500 Tejun Heo  wrote:

>  0001-bitmap-restructure-bitmap_sn-list-printf.patch
>  0002-bitmap-cpumask-nodemask-implement-pr_cont-variants-o.patch
>  0003-mips-use-cpu-node-mask-pr_cont-and-seq-output-functi.patch
>  0004-powerpc-use-cpu-node-mask-pr_cont-and-seq-output-fun.patch
>  0005-tile-use-cpu-node-mask-pr_cont-and-seq-output-functi.patch
>  0006-x86-use-cpu-node-mask-pr_cont-and-seq-output-functio.patch
>  0007-xtensa-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
>  0008-cpuset-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
>  0009-rcu-use-cpu-node-mask-pr_cont-and-seq-output-functio.patch
>  0010-sched-use-cpu-node-mask-pr_cont-and-seq-output-funct.patch
>  0011-timer-use-cpu-node-mask-pr_cont-and-seq-output-funct.patch
>  0012-percpu-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
> 
> The first two patches implement the pr_cont variants of the formatting
> functions.  The rest convert the existing users to pr_cont and seq
> functions subsystem-by-subsystem.  It'd be the easiest to route all
> through -mm but the conversion patches can go through individual
> subsystem trees afterwards if necessary.

But you're working on other code which will depend on this?  If so
perhaps these should be held in your tree.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCHSET -mm] bitmap, cpumask, nodemask: implement pr_cont functions and use di"

2014-12-10 Thread Tejun Heo
Hello,

bitmap implements two variants of scnprintf functions to format a
bitmap into a string and cpumask and nodemask wrap them to provide
equivalent interfaces.  The scnprintf family of functions require a
string buffer as an output target which complicates code paths which
just want to print out the mask through printk for informational or
debug purposes as they have to worry about how large the buffer should
be and whether it's too large to allocate on stack.

Neither cpumask or nodemask provides a guildeline on how large the
target buffer should be forcing users come up with their own solutions
- some allocate an arbitrarily sized buffer which is small enough to
allocate on stack but may be too short in corner cases, other come up
with a custom upper limit calculation considering the output format,
some allocate the buffer dynamically while one resorted to using lock
to synchronize access to a static buffer.

This is an artificial problem which is being solved repeatedly for no
benefit.  In a lot of cases, the output area already exists and can be
targeted directly making the intermediate buffer unnecessary.  This
patchset implement pr_cont variants of the formatting functions and
convert the scnprintf output function users to use them or seq_*()
functions to directly target the output area and remove the
intermediate buffers where possible.

This patchset contains the following 12 patches.

 0001-bitmap-restructure-bitmap_sn-list-printf.patch
 0002-bitmap-cpumask-nodemask-implement-pr_cont-variants-o.patch
 0003-mips-use-cpu-node-mask-pr_cont-and-seq-output-functi.patch
 0004-powerpc-use-cpu-node-mask-pr_cont-and-seq-output-fun.patch
 0005-tile-use-cpu-node-mask-pr_cont-and-seq-output-functi.patch
 0006-x86-use-cpu-node-mask-pr_cont-and-seq-output-functio.patch
 0007-xtensa-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
 0008-cpuset-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
 0009-rcu-use-cpu-node-mask-pr_cont-and-seq-output-functio.patch
 0010-sched-use-cpu-node-mask-pr_cont-and-seq-output-funct.patch
 0011-timer-use-cpu-node-mask-pr_cont-and-seq-output-funct.patch
 0012-percpu-use-cpu-node-mask-pr_cont-and-seq-output-func.patch

The first two patches implement the pr_cont variants of the formatting
functions.  The rest convert the existing users to pr_cont and seq
functions subsystem-by-subsystem.  It'd be the easiest to route all
through -mm but the conversion patches can go through individual
subsystem trees afterwards if necessary.

While there's ~70 line increase in LOC, the increase is from the
restructuring of bitmap output functions and addition of inline
interface functions along with comments and things get simplified /
more robust on the user side and future users won't have to try to
solve the same fruitless problem over and over again.

The patchset is based on top of -mm as of Dec 9, 2014 and also
available in the following git branch.

 git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git review-bitmap-pr_cont

 arch/mips/netlogic/common/smp.c |   11 +-
 arch/powerpc/sysdev/xics/ics-opal.c |7 -
 arch/powerpc/sysdev/xics/ics-rtas.c |8 -
 arch/tile/kernel/hardwall.c |6 -
 arch/tile/kernel/proc.c |6 -
 arch/tile/kernel/setup.c|   12 +-
 arch/tile/mm/homecache.c|   14 +--
 arch/tile/mm/init.c |   12 +-
 arch/x86/mm/numa.c  |9 --
 arch/x86/platform/uv/uv_nmi.c   |   27 ++
 arch/xtensa/kernel/setup.c  |   10 --
 drivers/net/ethernet/tile/tilegx.c  |6 -
 drivers/net/ethernet/tile/tilepro.c |6 -
 include/linux/bitmap.h  |4 
 include/linux/cpumask.h |   18 
 include/linux/nodemask.h|   16 +++
 kernel/cpuset.c |   13 ---
 kernel/rcu/tree_plugin.h|6 -
 kernel/sched/core.c |   11 +-
 kernel/sched/stats.c|   11 --
 kernel/time/tick-sched.c|   12 --
 lib/bitmap.c|  148 ++--
 mm/percpu.c |7 -
 23 files changed, 224 insertions(+), 156 deletions(-)

Thanks.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCHSET -mm] bitmap, cpumask, nodemask: implement pr_cont functions and use di

2014-12-10 Thread Tejun Heo
Hello,

bitmap implements two variants of scnprintf functions to format a
bitmap into a string and cpumask and nodemask wrap them to provide
equivalent interfaces.  The scnprintf family of functions require a
string buffer as an output target which complicates code paths which
just want to print out the mask through printk for informational or
debug purposes as they have to worry about how large the buffer should
be and whether it's too large to allocate on stack.

Neither cpumask or nodemask provides a guildeline on how large the
target buffer should be forcing users come up with their own solutions
- some allocate an arbitrarily sized buffer which is small enough to
allocate on stack but may be too short in corner cases, other come up
with a custom upper limit calculation considering the output format,
some allocate the buffer dynamically while one resorted to using lock
to synchronize access to a static buffer.

This is an artificial problem which is being solved repeatedly for no
benefit.  In a lot of cases, the output area already exists and can be
targeted directly making the intermediate buffer unnecessary.  This
patchset implement pr_cont variants of the formatting functions and
convert the scnprintf output function users to use them or seq_*()
functions to directly target the output area and remove the
intermediate buffers where possible.

This patchset contains the following 12 patches.

 0001-bitmap-restructure-bitmap_sn-list-printf.patch
 0002-bitmap-cpumask-nodemask-implement-pr_cont-variants-o.patch
 0003-mips-use-cpu-node-mask-pr_cont-and-seq-output-functi.patch
 0004-powerpc-use-cpu-node-mask-pr_cont-and-seq-output-fun.patch
 0005-tile-use-cpu-node-mask-pr_cont-and-seq-output-functi.patch
 0006-x86-use-cpu-node-mask-pr_cont-and-seq-output-functio.patch
 0007-xtensa-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
 0008-cpuset-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
 0009-rcu-use-cpu-node-mask-pr_cont-and-seq-output-functio.patch
 0010-sched-use-cpu-node-mask-pr_cont-and-seq-output-funct.patch
 0011-timer-use-cpu-node-mask-pr_cont-and-seq-output-funct.patch
 0012-percpu-use-cpu-node-mask-pr_cont-and-seq-output-func.patch

The first two patches implement the pr_cont variants of the formatting
functions.  The rest convert the existing users to pr_cont and seq
functions subsystem-by-subsystem.  It'd be the easiest to route all
through -mm but the conversion patches can go through individual
subsystem trees afterwards if necessary.

While there's ~70 line increase in LOC, the increase is from the
restructuring of bitmap output functions and addition of inline
interface functions along with comments and things get simplified /
more robust on the user side and future users won't have to try to
solve the same fruitless problem over and over again.

The patchset is based on top of -mm as of Dec 9, 2014 and also
available in the following git branch.

 git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git review-bitmap-pr_cont

 arch/mips/netlogic/common/smp.c |   11 +-
 arch/powerpc/sysdev/xics/ics-opal.c |7 -
 arch/powerpc/sysdev/xics/ics-rtas.c |8 -
 arch/tile/kernel/hardwall.c |6 -
 arch/tile/kernel/proc.c |6 -
 arch/tile/kernel/setup.c|   12 +-
 arch/tile/mm/homecache.c|   14 +--
 arch/tile/mm/init.c |   12 +-
 arch/x86/mm/numa.c  |9 --
 arch/x86/platform/uv/uv_nmi.c   |   27 ++
 arch/xtensa/kernel/setup.c  |   10 --
 drivers/net/ethernet/tile/tilegx.c  |6 -
 drivers/net/ethernet/tile/tilepro.c |6 -
 include/linux/bitmap.h  |4 
 include/linux/cpumask.h |   18 
 include/linux/nodemask.h|   16 +++
 kernel/cpuset.c |   13 ---
 kernel/rcu/tree_plugin.h|6 -
 kernel/sched/core.c |   11 +-
 kernel/sched/stats.c|   11 --
 kernel/time/tick-sched.c|   12 --
 lib/bitmap.c|  148 ++--
 mm/percpu.c |7 -
 23 files changed, 224 insertions(+), 156 deletions(-)

Thanks.

--
tejun
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHSET -mm] bitmap, cpumask, nodemask: implement pr_cont functions and use di

2014-12-10 Thread Andrew Morton
On Wed, 10 Dec 2014 10:52:42 -0500 Tejun Heo t...@kernel.org wrote:

  0001-bitmap-restructure-bitmap_sn-list-printf.patch
  0002-bitmap-cpumask-nodemask-implement-pr_cont-variants-o.patch
  0003-mips-use-cpu-node-mask-pr_cont-and-seq-output-functi.patch
  0004-powerpc-use-cpu-node-mask-pr_cont-and-seq-output-fun.patch
  0005-tile-use-cpu-node-mask-pr_cont-and-seq-output-functi.patch
  0006-x86-use-cpu-node-mask-pr_cont-and-seq-output-functio.patch
  0007-xtensa-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
  0008-cpuset-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
  0009-rcu-use-cpu-node-mask-pr_cont-and-seq-output-functio.patch
  0010-sched-use-cpu-node-mask-pr_cont-and-seq-output-funct.patch
  0011-timer-use-cpu-node-mask-pr_cont-and-seq-output-funct.patch
  0012-percpu-use-cpu-node-mask-pr_cont-and-seq-output-func.patch
 
 The first two patches implement the pr_cont variants of the formatting
 functions.  The rest convert the existing users to pr_cont and seq
 functions subsystem-by-subsystem.  It'd be the easiest to route all
 through -mm but the conversion patches can go through individual
 subsystem trees afterwards if necessary.

But you're working on other code which will depend on this?  If so
perhaps these should be held in your tree.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHSET -mm] bitmap, cpumask, nodemask: implement pr_cont functions and use di

2014-12-10 Thread Tejun Heo
On Wed, Dec 10, 2014 at 01:49:44PM -0800, Andrew Morton wrote:
 On Wed, 10 Dec 2014 10:52:42 -0500 Tejun Heo t...@kernel.org wrote:
  The first two patches implement the pr_cont variants of the formatting
  functions.  The rest convert the existing users to pr_cont and seq
  functions subsystem-by-subsystem.  It'd be the easiest to route all
  through -mm but the conversion patches can go through individual
  subsystem trees afterwards if necessary.
 
 But you're working on other code which will depend on this?  If so
 perhaps these should be held in your tree.

Yeah, that works too.  I was still targeting 3.19 window and some of
the conversion patches were conflicting, so thought it'd be easier
through -mm.

Given that the changes aren't that invasive, I think it'd be still a
good idea to merge the workqueue debugging during this merge window as
it gives a lot more visibility into tricky issues.  Once it's agreed
on, I'll try to route the feature patches (the first two from this
series + actual workqueue changes) early through wq branch.

Thanks.

-- 
tejun
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/