aboutsummaryrefslogtreecommitdiff
path: root/fs/jbd/commit.c
diff options
context:
space:
mode:
authorColin Cross <[email protected]>2013-08-28 18:41:47 -0700
committerRafael J. Wysocki <[email protected]>2013-08-29 22:15:04 +0200
commitf983827bcb9d2c34c4d8935861a1e9128aec2baf (patch)
tree39b917dc5651fe3dfeeb96d6a215ccaa6e73a292 /fs/jbd/commit.c
parent59e998561103a93f294c8d3138dd659af772a5da (diff)
cpuidle: coupled: abort idle if pokes are pending
Joseph Lo <[email protected]> reported a lockup on Tegra20 caused by a race condition in coupled cpuidle. When two or more cpus enter idle at the same time, the first cpus to arrive may go to the ready loop without processing pending pokes from the last cpu to arrive. This patch adds a check for pending pokes once all cpus have been synchronized in the ready loop and resets the coupled state and retries if any cpus failed to handle their pending poke. Retrying on all cpus may trigger the same issue again, so this patch also adds a check to ensure that each cpu has received at least one poke between when it enters the waiting loop and when it moves on to the ready loop. Reported-and-tested-by: Joseph Lo <[email protected]> Tested-by: Stephen Warren <[email protected]> Signed-off-by: Colin Cross <[email protected]> Cc: 3.6+ <[email protected]> # 3.6+ Signed-off-by: Rafael J. Wysocki <[email protected]>
Diffstat (limited to 'fs/jbd/commit.c')
0 files changed, 0 insertions, 0 deletions