linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jon Hunter <jonathanh@nvidia.com>
To: Anna-Maria Gleixner <anna-maria@linutronix.de>,
	LKML <linux-kernel@vger.kernel.org>,
	Richard Cochran <rcochran@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>
Subject: Re: [patch 61/66] timers: Convert to hotplug state machine
Date: Mon, 25 Jul 2016 15:56:48 +0100	[thread overview]
Message-ID: <7d37714e-b072-ee90-f14f-364f4fd01f0d@nvidia.com> (raw)
In-Reply-To: <20160711122535.775201614@linutronix.de>

Hi Richard,

On 11/07/16 13:29, Anna-Maria Gleixner wrote:
> From: Richard Cochran <rcochran@linutronix.de>
> 
> When tearing down, call timers_dead_cpu before notify_dead.
> There is a hidden dependency between:
>
> - timers
> - Block multiqueue
> - rcutree
>
> If timers_dead_cpu() comes later than blk_mq_queue_reinit_notify()
> that latter function causes a RCU stall.

After this change is applied I am seeing RCU stalls during suspend
on Tegra. I guess I am hitting the case mentioned above? How should
this be avoided?

[    5.321824] PM: Syncing filesystems ... done.
[    5.349746] Freezing user space processes ... (elapsed 0.001 seconds) done.
[    5.358122] Double checking all user space processes after OOM killer disable... (elapsed 0.000 seconds) 
[    5.367817] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[    5.376746] Suspending console(s) (use no_console_suspend to debug)
[    5.427213] PM: suspend of devices complete after 42.812 msecs
[    5.429909] PM: late suspend of devices complete after 2.680 msecs
[    5.431968] PM: noirq suspend of devices complete after 2.049 msecs
[    5.431973] Disabling non-boot CPUs ...
[    5.432861] CPU1: shutdown
[    5.467806] CPU2: shutdown
[    5.506925] IRQ17 no longer affine to CPU3
[    5.507294] CPU3: shutdown
[   26.509992] INFO: rcu_sched detected stalls on CPUs/tasks:
[   26.510005]  3-O.N: (0 ticks this GP) idle=e13/140000000000000/0 softirq=86/86 fqs=0 
[   26.510016]  (detected by 0, t=4202 jiffies, g=-225, c=-226, q=23)
[   26.510020] Task dump for CPU 3:
[   26.510033] swapper/3       R running      0     0      1 0x00000000
[   26.510063] [<c0b79fac>] (__schedule) from [<c033b808>] (tegra_cpu_die+0x30/0x48)
[   26.510080] [<c033b808>] (tegra_cpu_die) from [<c030dd4c>] (arch_cpu_idle_dead+0x44/0x88)
[   26.510094] [<c030dd4c>] (arch_cpu_idle_dead) from [<c03794bc>] (cpu_startup_entry+0x1c0/0x220)
[   26.510106] [<c03794bc>] (cpu_startup_entry) from [<80301c2c>] (0x80301c2c)
[   26.510116] rcu_sched kthread starved for 4202 jiffies! g4294967071 c4294967070 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x1
[   26.510128] rcu_sched       S c0b79fac     0     7      2 0x00000000
[   26.510139] [<c0b79fac>] (__schedule) from [<c0b7a434>] (schedule+0x38/0x9c)
[   26.510152] [<c0b7a434>] (schedule) from [<c0b7cf3c>] (schedule_timeout+0x158/0x21c)
[   26.510166] [<c0b7cf3c>] (schedule_timeout) from [<c03922e0>] (rcu_gp_kthread+0x414/0x99c)
[   26.510179] [<c03922e0>] (rcu_gp_kthread) from [<c035cdb8>] (kthread+0xd8/0xf4)
[   26.510191] [<c035cdb8>] (kthread) from [<c0307fb8>] (ret_from_fork+0x14/0x3c)
[   26.531238] Enabling non-boot CPUs ...
[   26.546568] CPU1 is up
[   26.566858] CPU2 is up
[   26.587169] CPU3 is up
[   26.588470] PM: noirq resume of devices complete after 1.290 msecs
[   26.591329] PM: early resume of devices complete after 2.574 msecs
[   26.696785] PM: resume of devices complete after 105.439 msecs
[   26.876814] Restarting tasks ... done.

Interestingly I am only seeing the above when using the ARM
multi_v7_defconfig kernel configuration and not with the tegra_defconfig.
One key difference between these is that the multi_v7_defconfig does not
have CONFIG_PREEMPT enabled. Initial testing shows enabling CONFIG_PREEMPT
for multi_v7_defconfig makes the problem go away.

Cheers
Jon

  reply	other threads:[~2016-07-25 14:57 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-11 12:28 [patch 00/66] cpuhotplug: Convert all priority notifiers to the state machine Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 01/66] x86/vdso: Convert to hotplug " Anna-Maria Gleixner
2016-07-11 18:50   ` Andy Lutomirski
2016-07-11 12:28 ` [patch 02/66] irqchip/gic: " Anna-Maria Gleixner
2016-07-11 14:34   ` Ingo Molnar
2016-07-11 14:46     ` Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 03/66] irqchip/gicv3: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 04/66] irqchip/hip04: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 06/66] irqchip/bcm2836: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 05/66] irqchip/armada-370-xp: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 07/66] ARM: mvebu: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 09/66] perf/x86: Convert the core to the " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 08/66] perf: Convert to " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 10/66] perf/x86/intel/uncore: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 12/66] perf/x86/amd/ibs: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 11/66] perf/x86/amd/uncore: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 13/66] perf/x86/intel/rapl: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 14/66] perf/x86/intel/cqm: Convert Intel CQM " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 15/66] perf/x86/intel/cstate: Convert Intel CSTATE " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 17/66] powerpc: perf: Convert book3s notifier to state machine callbacks Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 16/66] blackfin: perf: Convert hotplug notifier to state machine Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 18/66] s390: perf: Convert the hotplug notifier to state machine callbacks (Counter) Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 19/66] s390: perf: Convert the hotplug notifier to state machine callbacks (Sampling) Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 20/66] sh: perf: Convert the hotplug notifiers to state machine callbacks Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 21/66] bus: arm-cci: convert to hotplug statemachine Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 23/66] xtensa: perf: Convert the hotplug notifier to state machine callbacks Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 22/66] bus: arm-ccn: convert to hotplug statemachine Anna-Maria Gleixner
2016-07-12 10:05   ` Pawel Moll
2016-07-12 11:16   ` Pawel Moll
2016-07-12 11:21     ` Sebastian Andrzej Siewior
2016-07-11 12:28 ` [patch 24/66] perf/x86/amd/power: Change hotplug notifier to a symmetric structure Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 25/66] perf/x86/amd/power: Convert the hotplug notifier to state machine Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 26/66] perf: Remove perf cpu notifier code Anna-Maria Gleixner
2016-07-11 14:36   ` Ingo Molnar
2016-07-11 14:50     ` Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 27/66] workqueue: Convert to state machine callbacks Anna-Maria Gleixner
2016-07-11 14:38   ` Ingo Molnar
2016-07-11 14:52     ` Anna-Maria Gleixner
2016-07-12 14:39   ` Tejun Heo
2016-07-11 12:28 ` [patch 28/66] x86/hpet: Convert to hotplug state machine Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 29/66] powerpc: numa: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 30/66] KVM: x86: Remove superfluous SMP function call Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 31/66] x86/kvm/kvmclock: Convert to hotplug state machine Anna-Maria Gleixner
2016-07-11 14:11   ` Anna-Maria Gleixner
2016-07-11 14:41   ` Paolo Bonzini
2016-07-11 12:28 ` [patch 32/66] x86/apb_timer: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 33/66] arm: Convert VFP hotplug notifiers to " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 34/66] arm: perf: Convert to hotplug " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 35/66] virt: Convert kvm hotplug to " Anna-Maria Gleixner
2016-07-11 14:41   ` Paolo Bonzini
2016-07-11 12:28 ` [patch 36/66] ACPI/processor: avoid STARTING/DYING actions in a more logical way Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 37/66] clocksource/arm_arch_timer: Convert to hotplug state machine Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 38/66] clocksource/arm_global_timer: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 40/66] clocksource/exynos_mct: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 39/66] clocksource/dummy_timer: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 41/66] clocksource/metag: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 42/66] clocksource/qcom-timer: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 43/66] clocksource/armada-370-xp: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 44/66] clocksource/atlas7: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 45/66] clocksource/mips-gic: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 46/66] leds: trigger: cpu: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 47/66] arm: kvm: vgic: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 48/66] arm: kvm: arch_timer: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 49/66] metag: perf: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 50/66] arm: l2c: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 51/66] arm: twd: " Anna-Maria Gleixner
2016-07-11 12:28 ` [patch 52/66] arm: xen: " Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 53/66] MIPS: Loongson-3: Convert oprofile " Anna-Maria Gleixner
2016-07-11 15:57   ` Ralf Baechle
2016-07-11 12:29 ` [patch 54/66] hwtracing: coresight-etm3x: Convert " Anna-Maria Gleixner
2016-07-12 15:19   ` Mathieu Poirier
2016-07-11 12:29 ` [patch 55/66] hwtracing: coresight-etm4x: " Anna-Maria Gleixner
2016-07-12 15:21   ` Mathieu Poirier
2016-07-11 12:29 ` [patch 56/66] arm64: armv8 deprecated: " Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 57/66] ARC/time: " Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 58/66] x86/tboot: " Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 59/66] rcu: Convert rcutree " Anna-Maria Gleixner
2016-07-11 18:38   ` Paul E. McKenney
2016-07-12 10:57     ` Anna-Maria Gleixner
2016-07-12 14:23       ` Paul E. McKenney
2016-08-18 17:35     ` Sebastian Andrzej Siewior
2016-08-18 18:30       ` Paul E. McKenney
2016-08-19 20:12         ` Sebastian Andrzej Siewior
2016-08-19 21:14           ` Paul E. McKenney
2016-07-11 12:29 ` [patch 60/66] hrtimer: Convert " Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 61/66] timers: " Anna-Maria Gleixner
2016-07-25 14:56   ` Jon Hunter [this message]
2016-07-25 15:35     ` rcochran
2016-07-25 20:46       ` rcochran
2016-07-26  9:23         ` Jon Hunter
2016-07-26  9:20       ` Jon Hunter
2016-07-26 14:15         ` Thomas Gleixner
2016-07-26 18:20           ` Jon Hunter
2016-07-26 14:40         ` rcochran
2016-07-26 18:22           ` Jon Hunter
2016-07-26 15:42     ` rcochran
2016-07-26 18:16       ` Jon Hunter
2016-07-11 12:29 ` [patch 62/66] profile: " Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 64/66] smp: Convert core " Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 63/66] x86/x2apic: Convert to CPU " Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 66/66] cpuhotplug: Remove CPU_STARTING and CPU_DYING notifier Anna-Maria Gleixner
2016-07-11 12:29 ` [patch 65/66] KVM: arm/arm64: vgic-new: Convert to hotplug state machine Anna-Maria Gleixner

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=7d37714e-b072-ee90-f14f-364f4fd01f0d@nvidia.com \
    --to=jonathanh@nvidia.com \
    --cc=anna-maria@linutronix.de \
    --cc=bigeasy@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rcochran@linutronix.de \
    /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: link
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;
as well as URLs for NNTP newsgroup(s).