TEMP: stop_machine: serialize disable IRQ sequence
authorPrafull Suryawanshi <prafulls@nvidia.com>
Mon, 2 Nov 2015 09:09:02 +0000 (14:09 +0530)
committermobile promotions <svcmobile_promotions@nvidia.com>
Wed, 25 Nov 2015 16:30:02 +0000 (08:30 -0800)
commit9339d91d893266813c21193ee998bd7c1e5fc7ed
tree73d61b939199dcccccfc4050b1a111cbf3b8a88a
parent54006a8e13e5a5bdbc7a761db72daf0772740d79
TEMP: stop_machine: serialize disable IRQ sequence

bug 200044022

On T124 platforms, we hit a hang on cpu_down(cpu=3) where
CPU3 gets stuck waiting on the gic irq_controller_lock in
gic_eoi_irq. The other CPUs have already entered the
DISABLE_IRQ stop machine state at this point.
This therefore causes the watchdog to timeout and the
system to reset. Given that we have the stopper thread
scheduled (preemption disabled), the 'hang scenario' most
likely manifests itself due to some sort of issue in
the irq context. Sequentially entering the DISABLE_IRQ
state from CPU3->CPU0 seem to somehow prevent this hang.

This change is only meant to be a temporary workaround
to improve system stability and is by no means a fix
of any sort. To that end, it is wrapped in a CONFIG
option that is turned off by default.

Change-Id: Ic50ecd5a6d429706e4f68bcd133707fae4e692ce
Signed-off-by: Prafull Suryawanshi <prafulls@nvidia.com>
Reviewed-on: http://git-master/r/836921
Reviewed-by: Dhiren Parmar <dparmar@nvidia.com>
Tested-by: Dhiren Parmar <dparmar@nvidia.com>
arch/arm/mach-tegra/Kconfig
kernel/stop_machine.c