From 3db397ea5892a8b348cf412739996731884561b3 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Wed, 18 Feb 2015 14:57:20 +1100 Subject: Don't run pollers in time_wait() when a lock is held Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Stewart Smith --- core/timebase.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/timebase.c b/core/timebase.c index ff26689..ce2784a 100644 --- a/core/timebase.c +++ b/core/timebase.c @@ -1,3 +1,4 @@ + /* Copyright 2013-2014 IBM Corp. * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -40,7 +41,14 @@ static void time_wait_poll(unsigned long duration) void time_wait(unsigned long duration) { - if (this_cpu() != boot_cpu) + struct cpu_thread *c = this_cpu(); + + if (this_cpu()->lock_depth) { + time_wait_nopoll(duration); + return; + } + + if (c != boot_cpu) time_wait_nopoll(duration); else time_wait_poll(duration); -- cgit v1.1