mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [GIT PULL] printk: Make it usable on nohz cpus
@ 2012-11-14 20:37 Frederic Weisbecker
  2012-11-14 20:37 ` [PATCH 1/7] irq_work: Fix racy IRQ_WORK_BUSY flag setting Frederic Weisbecker
                   ` (6 more replies)
  0 siblings, 7 replies; 21+ messages in thread
From: Frederic Weisbecker @ 2012-11-14 20:37 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, Frederic Weisbecker, Peter Zijlstra, Thomas Gleixner,
	Andrew Morton, Steven Rostedt, Paul Gortmaker, Anish Kumar

Ingo,

Please pull the printk support in dynticks mode patches that can
be found at:

  git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git tags/printk-dynticks-for-mingo

This branch is based on top of v3.7-rc4
Head is 2fb933986dcef2db1344712162a1feb8d5736ff8:

  printk: Wake up klogd using irq_work (2012-11-14 17:45:37 +0100)

Since last version, very few things have changed:

* Added acks from Steve on patches 1/7 and 2/7
* Fixed an arch_needs_cpu() redefinition due to misordered headers (reported
by Wu Fengguang).

If you get further acks from Peterz or anybody, feel free to cherry pick
the patches instead. Or I can rebase my patches to add them, either way.

Thanks.

----------------------------------------------------------------
Support for printk in dynticks mode:

* Fix two races in irq work claiming

* Generalize irq_work support to all archs

* Don't stop tick with irq works pending. This
fix is generally useful and concerns archs that
can't raise self IPIs.

* Introduce "lazy" irq works that can wait for the
next tick to be executed, unless it's stopped.

* Implement klogd wake up using irq work. This
removes the ad-hoc printk_tick()/printk_needs_cpu()
hooks and make it working even in dynticks mode.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>

----------------------------------------------------------------
Frederic Weisbecker (7):
      irq_work: Fix racy IRQ_WORK_BUSY flag setting
      irq_work: Fix racy check on work pending flag
      irq_work: Remove CONFIG_HAVE_IRQ_WORK
      nohz: Add API to check tick state
      irq_work: Don't stop the tick with pending works
      irq_work: Make self-IPIs optable
      printk: Wake up klogd using irq_work

 arch/alpha/Kconfig                  |    1 -
 arch/arm/Kconfig                    |    1 -
 arch/arm64/Kconfig                  |    1 -
 arch/blackfin/Kconfig               |    1 -
 arch/frv/Kconfig                    |    1 -
 arch/hexagon/Kconfig                |    1 -
 arch/mips/Kconfig                   |    1 -
 arch/parisc/Kconfig                 |    1 -
 arch/powerpc/Kconfig                |    1 -
 arch/s390/Kconfig                   |    1 -
 arch/sh/Kconfig                     |    1 -
 arch/sparc/Kconfig                  |    1 -
 arch/x86/Kconfig                    |    1 -
 drivers/staging/iio/trigger/Kconfig |    1 -
 include/linux/irq_work.h            |   20 +++++++++
 include/linux/printk.h              |    3 --
 include/linux/tick.h                |   17 +++++++-
 init/Kconfig                        |    5 +--
 kernel/irq_work.c                   |   76 +++++++++++++++++++++++------------
 kernel/printk.c                     |   36 +++++++++--------
 kernel/time/tick-sched.c            |    7 ++--
 kernel/timer.c                      |    1 -
 22 files changed, 112 insertions(+), 67 deletions(-)

^ permalink raw reply	[flat|nested] 21+ messages in thread
* [PATCH 0/7] printk: Make it usable on nohz CPUs v4
@ 2012-11-08 13:14 Frederic Weisbecker
  2012-11-08 13:14 ` [PATCH 6/7] irq_work: Make self-IPIs optable Frederic Weisbecker
  0 siblings, 1 reply; 21+ messages in thread
From: Frederic Weisbecker @ 2012-11-08 13:14 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, Peter Zijlstra, Thomas Gleixner,
	Ingo Molnar, Andrew Morton, Steven Rostedt, Paul Gortmaker,
	Anish Kumar

Hi,

There are rough changes in this series, the patchset is much simpler:

* Include the two fixes for SMP-safe irq_work claim [1/7],[2/7] 

* Split the part that prevent to stop the tick with pending work
on the queue, to make the review easier.

* Don't care anymore whether the arch can send self-IPIs or not. The real point
of it is for when we stop the tick outside idle, we'll require the self IPI
support from arch. We'll deal with that later.

* Drop the set_need_resched() hack when we enqueue in dyntick idle mode. I'm
just too worried that printk() calls in idle loop may prevent the tick from ever
beeing stopped, and even the CPU from halting.

* When the work is lazy, just never raise unless the tick is stopped. We don't care
whether the arch has obscure way to raise it or not. In any case, the hook in
update_process_times() can take care of it.

* Don't raise an IPI after queueing if there is a pending one already.

* Use per cpu irq work for printk because the printk_pending flags are per CPU
and thus can't be handled remotely.

* Queue an irq work in case of printk_sched() as well.

You can fetch from:

git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
	nohz/printk-v4

Thanks.

Frederic Weisbecker (7):
  irq_work: Fix racy IRQ_WORK_BUSY flag setting
  irq_work: Fix racy check on work pending flag
  irq_work: Remove CONFIG_HAVE_IRQ_WORK
  nohz: Add API to check tick state
  irq_work: Don't stop the tick with pending works
  irq_work: Make self-IPIs optable
  printk: Wake up klogd using irq_work

 arch/alpha/Kconfig                  |    1 -
 arch/arm/Kconfig                    |    1 -
 arch/arm64/Kconfig                  |    1 -
 arch/blackfin/Kconfig               |    1 -
 arch/frv/Kconfig                    |    1 -
 arch/hexagon/Kconfig                |    1 -
 arch/mips/Kconfig                   |    1 -
 arch/parisc/Kconfig                 |    1 -
 arch/powerpc/Kconfig                |    1 -
 arch/s390/Kconfig                   |    1 -
 arch/sh/Kconfig                     |    1 -
 arch/sparc/Kconfig                  |    1 -
 arch/x86/Kconfig                    |    1 -
 drivers/staging/iio/trigger/Kconfig |    1 -
 include/linux/irq_work.h            |   20 +++++++++
 include/linux/printk.h              |    3 -
 include/linux/tick.h                |   17 +++++++-
 init/Kconfig                        |    5 +--
 kernel/irq_work.c                   |   76 +++++++++++++++++++++++-----------
 kernel/printk.c                     |   36 +++++++++-------
 kernel/time/tick-sched.c            |    7 ++-
 kernel/timer.c                      |    1 -
 22 files changed, 112 insertions(+), 67 deletions(-)

-- 
1.7.5.4


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

end of thread, other threads:[~2012-11-15 18:56 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-14 20:37 [GIT PULL] printk: Make it usable on nohz cpus Frederic Weisbecker
2012-11-14 20:37 ` [PATCH 1/7] irq_work: Fix racy IRQ_WORK_BUSY flag setting Frederic Weisbecker
2012-11-14 20:37 ` [PATCH 2/7] irq_work: Fix racy check on work pending flag Frederic Weisbecker
2012-11-14 20:37 ` [PATCH 3/7] irq_work: Remove CONFIG_HAVE_IRQ_WORK Frederic Weisbecker
2012-11-14 20:37 ` [PATCH 4/7] nohz: Add API to check tick state Frederic Weisbecker
2012-11-14 20:37 ` [PATCH 5/7] irq_work: Don't stop the tick with pending works Frederic Weisbecker
2012-11-15  3:59   ` Steven Rostedt
2012-11-15 15:38     ` Frederic Weisbecker
2012-11-14 20:37 ` [PATCH 6/7] irq_work: Make self-IPIs optable Frederic Weisbecker
2012-11-14 20:37 ` [PATCH 7/7] printk: Wake up klogd using irq_work Frederic Weisbecker
2012-11-15  4:26   ` Steven Rostedt
2012-11-15 15:25     ` Frederic Weisbecker
2012-11-15 15:33       ` Frederic Weisbecker
2012-11-15 16:34       ` [PATCH RFC] irq_work: Flush work on CPU_DYING (was: Re: [PATCH 7/7] printk: Wake up klogd using irq_work) Steven Rostedt
2012-11-15 17:52         ` [PATCH RFC] irq_work: Warn if there's still work on cpu_down Steven Rostedt
2012-11-15 18:12           ` Frederic Weisbecker
2012-11-15 18:56             ` Steven Rostedt
2012-11-15 18:08         ` [PATCH RFC] irq_work: Flush work on CPU_DYING (was: Re: [PATCH 7/7] printk: Wake up klogd using irq_work) Frederic Weisbecker
2012-11-15 18:13         ` Steven Rostedt
2012-11-15 18:16           ` Steven Rostedt
  -- strict thread matches above, loose matches on Subject: below --
2012-11-08 13:14 [PATCH 0/7] printk: Make it usable on nohz CPUs v4 Frederic Weisbecker
2012-11-08 13:14 ` [PATCH 6/7] irq_work: Make self-IPIs optable Frederic Weisbecker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®