Hi,
I am trying to understand the suspend/resume mechanism in mmc.
The kernel ( in hibernation as well as in suspend to ram) first calls
suspend_thaw_processes() and then calls
pm_notifier_call_chain(PM_POST_SUSPEND/HIBERNATION). The mmc driver
schedules mmc_rescan on receiving the notification of
PM_POST_SUSPEND/HIBERNATION. Thus before mmc_rescan() gets called, the
mmc card is not ready to be used.
So if any processes before hibernation/suspend were using mmc device,
then on resume when these processes would be unfrozen( from
thaw_processes ) and if it tries to access the mmc device( before
mmc_rescan gets scheduled), then it would hit a problem.
Please let me know if my understanding is correct or not.
Regards,
Ayan Kumar Halder
From: Viresh Kumar <viresh.kumar(a)linaro.org>
3.12-stable review patch. If anyone has any objections, please let me know.
===============
commit 27630532ef5ead28b98cfe28d8f95222ef91c2b7 upstream.
Since commit d689fe222 (NOHZ: Check for nohz active instead of nohz
enabled) the tick_nohz_switch_to_nohz() function returns because it
checks for the tick_nohz_active flag. This can't be set, because the
function itself sets it.
Undo the change in tick_nohz_switch_to_nohz().
Signed-off-by: Viresh Kumar <viresh.kumar(a)linaro.org>
Cc: linaro-kernel(a)lists.linaro.org
Cc: fweisbec(a)gmail.com
Cc: Arvind.Chauhan(a)arm.com
Cc: linaro-networking(a)linaro.org
Cc: <stable(a)vger.kernel.org> # 3.13+
Link: http://lkml.kernel.org/r/40939c05f2d65d781b92b20302b02243d0654224.139753798…
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
---
kernel/time/tick-sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index ea20f7d1ac2c..29b063b32ff0 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -970,7 +970,7 @@ static void tick_nohz_switch_to_nohz(void)
struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched);
ktime_t next;
- if (!tick_nohz_active)
+ if (!tick_nohz_enabled)
return;
local_irq_disable();
--
2.0.0
HI Guys,
I have been working on CPU Isolation work since sometime
now. The target here is to isolate a Core (for High performance
Networking: data plane thread) from all kernel activities. A single
data plane thread must run on isolated CPU indefinitely.
So, we need isolation from tasks, timers, ticks, workqueues, etc.
Anything I missed in this list?
I am doing this with help of CPUSets/NO_HZ_FULL, etc currently.
One of the problem which isn't solved very well until now is:
"How can we guarantee that CPU is isolated" ?
Currently, my script is relying on the fact that on most of the
interruptions per-cpu tick gets updated and checking its value
must be enough from /proc/interrupts for clkevt device.
Is that enough? Or there are cases when there might be some
interruption and ticks don't get updated?
The problem with the /proc/interrupts solution is that it changes
with clkevt-driver. Some platforms might have strings as
"arch_timer" or "twd" or something else.
Is there some robust way which would work on any platform?
ARM/X86/etc ..
--
viresh