Re: [Letux-kernel] [PATCH 5/5] input: twl6040-vibra: remove mutex

From: H. Nikolaus Schaller
Date: Wed Apr 20 2016 - 05:23:13 EST



> Am 19.04.2016 um 10:08 schrieb H. Nikolaus Schaller <hns@xxxxxxxxxxxxx>:
>
>
>> Am 19.04.2016 um 10:01 schrieb Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>:
>>
>> On Tue, Apr 19, 2016 at 09:49:01AM +0200, H. Nikolaus Schaller wrote:
>>>
>>>> Am 18.04.2016 um 23:20 schrieb Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>:
>>>>
>>>> On Mon, Apr 18, 2016 at 09:55:41PM +0200, H. Nikolaus Schaller wrote:
>>>>> The mutex does not seem to be needed.
>>>>
>>>> twl6040_vibra_suspend() and vibra_play_work() may run concurrently, no?
>>>
>>> Hm. I don't know about the rule that would give an answer to this question...
>>
>> Sorry, that was actually a statement, not really a question.
>
> Indeed. In doubt about the answer we should take measures for the worst case.
>
>> It is
>> possible (although very unlikely) that userspace posts play request and
>> workqueue will not run until after suspend callback.
>>
>> Thinking about it some more I wonder if we better do what
>> twl6040_vibra_close() does and cancel the work before shutting off the
>> device, so that there is no chance of work executing after suspend
>> callback and reenabling the device. This way we can indeed remove the
>> mutex.
>
> Ok, I am fine with this.
>
> Will post an update ASAP.

While doing testing I did run again into another locking related issue which I
had not yet tried to address with my patch set. It is a:

BUG: scheduling while atomic

report which sometimes ends in a kernel panic.

I have attached such a log. vibra.py is here:

http://git.goldelico.com/?p=gta04-kernel.git;a=blob;f=Letux/root/vibra.py;hb=refs/heads/letux-4.6-rc4

Basically it does an ioctl(EVIOCSFF) which triggers vibra_play.

Maybe, can you decipher from the log what the reason could be?

I only conjecture that it happens when vibra_play tries to read the regmap
of the twl6040 to get twl6040_get_vibralr_status (which has no pendant
in the twl4030 driver).

Do we have to configure the twl6040 regmap differently?

BR and thanks,
Nikolaus


root@letux:~# ./vibra.py
[ 503.058501] BUG: scheduling while atomic: python/2591/0x00000002
[ 503.064866] 4 locks held by python/2591:
[ 503.069010] #0: (&evdev->mutex){+.+.+.}, at: [<c068e9b0>] evdev_write+0x38/0xc0
[ 503.077000] #1: (&(&dev->event_lock)->rlock){......}, at: [<c0688ba4>] input_inject_event+0x40/0x1ac
[ 503.086913] #2: (rcu_read_lock){......}, at: [<c0688b98>] input_inject_event+0x34/0x1ac
[ 503.095616] #3: (twl6040:642:(&twl6040_regmap_config)->lock){+.+...}, at: [<c05c5500>] regmap_read+0x30/0x58
[ 503.106269] Modules linked in: bluetooth autofs4 usb_f_ecm g_ether usb_f_rndis u_ether libcomposite configfs ipv6 arc4 wl18xx wlcore mac80211 omapdrm cfg80211 drm_kms_helper cfbfillrect syscopyarea cfbimgblt sysfillrect snd_soc_omap_hdmi_audio sysimgblt panel_mipi_debug fb_sys_fops dwc3 cfbcopyarea drm connector_hdmi encoder_tpd12s015 snd_soc_omap_abe_twl6040 w2cbw003_bluetooth snd_soc_twl6040 omapdss wwan_on_off leds_gpio wlcore_sdio pwm_bl pwm_omap_dmtimer ehci_omap dwc3_omap snd_soc_ts3a225e leds_is31fl319x leds_tca6507 tsc2007 bq27xxx_battery_i2c bq2429x_charger bq27xxx_battery gpio_twl6040 twl6040_vibra ina2xx palmas_gpadc tca8418_keypad bmp085_i2c palmas_pwrbutton as5013 bmg160_i2c usb3503 bmp280 bmp085 bma150 bmg160_core input_polldev snd_soc_omap_mcbsp snd_soc_omap_mcpdm snd_soc_omap snd_pcm_dmaengine
[ 503.182770] irq event stamp: 29172
[ 503.186366] hardirqs last enabled at (29171): [<c0809f94>] _raw_spin_unlock_irq+0x24/0x60
[ 503.195114] hardirqs last disabled at (29172): [<c08097e8>] _raw_spin_lock_irqsave+0x18/0x54
[ 503.204028] softirqs last enabled at (29154): [<c024ff80>] __do_softirq+0x5bc/0x66c
[ 503.212216] softirqs last disabled at (29041): [<c0250328>] irq_exit+0x98/0x118
[ 503.219954] Preemption disabled at:[< (null)>] (null)
[ 503.225571]
[ 503.227162] CPU: 1 PID: 2591 Comm: python Tainted: G W 4.6.0-rc4-letux+ #69
[ 503.235693] Hardware name: Generic OMAP5 (Flattened Device Tree)
[ 503.242062] [<c022789c>] (unwind_backtrace) from [<c022403c>] (show_stack+0x10/0x14)
[ 503.250259] [<c022403c>] (show_stack) from [<c0517e44>] (dump_stack+0x88/0xc0)
[ 503.257897] [<c0517e44>] (dump_stack) from [<c0318e38>] (__schedule_bug+0xa8/0xcc)
[ 503.265900] [<c0318e38>] (__schedule_bug) from [<c08042e4>] (__schedule+0x70/0x7fc)
[ 503.273993] [<c08042e4>] (__schedule) from [<c0804ca8>] (schedule+0x9c/0xc0)
[ 503.281451] [<c0804ca8>] (schedule) from [<c0804ed4>] (schedule_preempt_disabled+0x14/0x20)
[ 503.290278] [<c0804ed4>] (schedule_preempt_disabled) from [<c0806ab4>] (mutex_lock_nested+0x258/0x43c)
[ 503.300115] [<c0806ab4>] (mutex_lock_nested) from [<c05c5500>] (regmap_read+0x30/0x58)
[ 503.308488] [<c05c5500>] (regmap_read) from [<c05d5208>] (twl6040_get_vibralr_status+0x18/0x48)
[ 503.317680] [<c05d5208>] (twl6040_get_vibralr_status) from [<bf080674>] (vibra_play+0x18/0x7c [twl6040_vibra])
[ 503.328333] [<bf080674>] (vibra_play [twl6040_vibra]) from [<c068a94c>] (ml_play_effects+0x34/0x5c)
[ 503.337897] [<c068a94c>] (ml_play_effects) from [<c068aa2c>] (ml_ff_playback+0x88/0x94)
[ 503.346359] [<c068aa2c>] (ml_ff_playback) from [<c0689bf4>] (input_ff_event+0x9c/0xa4)
[ 503.354722] [<c0689bf4>] (input_ff_event) from [<c0688a7c>] (input_handle_event+0x4c/0x134)
[ 503.363543] [<c0688a7c>] (input_handle_event) from [<c0688c7c>] (input_inject_event+0x118/0x1ac)
[ 503.372824] [<c0688c7c>] (input_inject_event) from [<c068ea00>] (evdev_write+0x88/0xc0)
[ 503.381281] [<c068ea00>] (evdev_write) from [<c036eff8>] (__vfs_write+0x18/0x38)
[ 503.389092] [<c036eff8>] (__vfs_write) from [<c036fdc8>] (vfs_write+0xac/0x130)
[ 503.396819] [<c036fdc8>] (vfs_write) from [<c036ffec>] (SyS_write+0x40/0x78)
[ 503.404275] [<c036ffec>] (SyS_write) from [<c0220740>] (ret_fast_syscall+0x0/0x1c)
[ 503.414230]
[ 503.415818] =========================================================
[ 503.422608] [ INFO: possible irq lock inversion dependency detected ]
[ 503.429403] 4.6.0-rc4-letux+ #69 Tainted: G W
[ 503.435207] ---------------------------------------------------------
[ 503.441998] swapper/1/0 just changed the state of lock:
[ 503.447510] (&(&dev->event_lock)->rlock){..-...}, at: [<c068aa50>] ml_effect_timer+0x18/0x34
[ 503.456578] but this lock took another, SOFTIRQ-unsafe lock in the past:
[ 503.463646] (twl6040:642:(&twl6040_regmap_config)->lock){+.+...}

and interrupts could create inverse lock ordering between them.

[ 503.476449]
[ 503.476449] other info that might help us debug this:
[ 503.483339] Possible interrupt unsafe locking scenario:
[ 503.483339]
[ 503.490516] CPU0 CPU1
[ 503.495307] ---- ----
[ 503.500094] lock(twl6040:642:(&twl6040_regmap_config)->lock);
[ 503.506370] local_irq_disable();
[ 503.512627] lock(&(&dev->event_lock)->rlock);
[ 503.520092] lock(twl6040:642:(&twl6040_regmap_config)->lock);
[ 503.529020] <Interrupt>
[ 503.531793] lock(&(&dev->event_lock)->rlock);
[ 503.536781]
[ 503.536781] *** DEADLOCK ***
[ 503.536781]
[ 503.543033] 1 lock held by swapper/1/0:
[ 503.547090] #0: (((&ml->timer))){+.-...}, at: [<c02b75b8>] call_timer_fn+0x0/0x47c
[ 503.555344]
[ 503.555344] the shortest dependencies between 2nd lock and 1st lock:
[ 503.563643] -> (twl6040:642:(&twl6040_regmap_config)->lock){+.+...} ops: 93 {
[ 503.571339] HARDIRQ-ON-W at:
[ 503.574757] [<c0299fc8>] lock_acquire+0x25c/0x290
[ 503.581785] [<c08068a8>] mutex_lock_nested+0x4c/0x43c
[ 503.589162] [<c05c78f8>] regmap_register_patch+0xa0/0xfc
[ 503.596819] [<c05d53a4>] twl6040_probe+0x150/0x414
[ 503.603917] [<c0698dc8>] i2c_device_probe+0x198/0x1ec
[ 503.611304] [<c05aa3ac>] really_probe+0xfc/0x258
[ 503.618227] [<c05aa6ac>] driver_probe_device+0x44/0x70
[ 503.625706] [<c05a8e2c>] bus_for_each_drv+0x4c/0x84
[ 503.632916] [<c05aa5d4>] __device_attach+0x84/0xf8
[ 503.640025] [<c05a99e8>] bus_probe_device+0x28/0x84
[ 503.647218] [<c05a8068>] device_add+0x204/0x34c
[ 503.654050] [<c0699e7c>] i2c_new_device+0x10c/0x18c
[ 503.661253] [<c069a1d8>] of_i2c_register_device+0x15c/0x180
[ 503.669187] [<c069a49c>] i2c_register_adapter+0x1e0/0x30c
[ 503.676947] [<c069e8e4>] omap_i2c_probe+0x330/0x42c
[ 503.684148] [<c05ac2d8>] platform_drv_probe+0x50/0x98
[ 503.691531] [<c05aa3ac>] really_probe+0xfc/0x258
[ 503.698455] [<c05aa6ac>] driver_probe_device+0x44/0x70
[ 503.705926] [<c05a8e2c>] bus_for_each_drv+0x4c/0x84
[ 503.713119] [<c05aa5d4>] __device_attach+0x84/0xf8
[ 503.720221] [<c05a99e8>] bus_probe_device+0x28/0x84
[ 503.727418] [<c05a9e50>] deferred_probe_work_func+0x5c/0x8c
[ 503.735351] [<c02653c8>] process_one_work+0x3fc/0x770
[ 503.742738] [<c0265964>] worker_thread+0x1f8/0x2fc
[ 503.749840] [<c026ad08>] kthread+0xdc/0xf0
[ 503.756210] [<c02207c8>] ret_from_fork+0x14/0x2c
[ 503.763126] SOFTIRQ-ON-W at:
[ 503.766544] [<c0299fc8>] lock_acquire+0x25c/0x290
[ 503.773562] [<c08068a8>] mutex_lock_nested+0x4c/0x43c
[ 503.780953] [<c05c78f8>] regmap_register_patch+0xa0/0xfc
[ 503.788594] [<c05d53a4>] twl6040_probe+0x150/0x414
[ 503.795698] [<c0698dc8>] i2c_device_probe+0x198/0x1ec
[ 503.803069] [<c05aa3ac>] really_probe+0xfc/0x258
[ 503.809972] [<c05aa6ac>] driver_probe_device+0x44/0x70
[ 503.817440] [<c05a8e2c>] bus_for_each_drv+0x4c/0x84
[ 503.824627] [<c05aa5d4>] __device_attach+0x84/0xf8
[ 503.831726] [<c05a99e8>] bus_probe_device+0x28/0x84
[ 503.838929] [<c05a8068>] device_add+0x204/0x34c
[ 503.845762] [<c0699e7c>] i2c_new_device+0x10c/0x18c
[ 503.852949] [<c069a1d8>] of_i2c_register_device+0x15c/0x180
[ 503.860874] [<c069a49c>] i2c_register_adapter+0x1e0/0x30c
[ 503.868634] [<c069e8e4>] omap_i2c_probe+0x330/0x42c
[ 503.875836] [<c05ac2d8>] platform_drv_probe+0x50/0x98
[ 503.883211] [<c05aa3ac>] really_probe+0xfc/0x258
[ 503.890130] [<c05aa6ac>] driver_probe_device+0x44/0x70
[ 503.897602] [<c05a8e2c>] bus_for_each_drv+0x4c/0x84
[ 503.904794] [<c05aa5d4>] __device_attach+0x84/0xf8
[ 503.911903] [<c05a99e8>] bus_probe_device+0x28/0x84
[ 503.919104] [<c05a9e50>] deferred_probe_work_func+0x5c/0x8c
[ 503.927034] [<c02653c8>] process_one_work+0x3fc/0x770
[ 503.934418] [<c0265964>] worker_thread+0x1f8/0x2fc
[ 503.941537] [<c026ad08>] kthread+0xdc/0xf0
[ 503.947902] [<c02207c8>] ret_from_fork+0x14/0x2c
[ 503.954815] INITIAL USE at:
[ 503.958145] [<c08068a8>] mutex_lock_nested+0x4c/0x43c
[ 503.965433] [<c05c78f8>] regmap_register_patch+0xa0/0xfc
[ 503.973003] [<c05d53a4>] twl6040_probe+0x150/0x414
[ 503.980022] [<c0698dc8>] i2c_device_probe+0x198/0x1ec
[ 503.987314] [<c05aa3ac>] really_probe+0xfc/0x258
[ 503.994145] [<c05aa6ac>] driver_probe_device+0x44/0x70
[ 504.001518] [<c05a8e2c>] bus_for_each_drv+0x4c/0x84
[ 504.008629] [<c05aa5d4>] __device_attach+0x84/0xf8
[ 504.015643] [<c05a99e8>] bus_probe_device+0x28/0x84
[ 504.022734] [<c05a8068>] device_add+0x204/0x34c
[ 504.029475] [<c0699e7c>] i2c_new_device+0x10c/0x18c
[ 504.036577] [<c069a1d8>] of_i2c_register_device+0x15c/0x180
[ 504.044421] [<c069a49c>] i2c_register_adapter+0x1e0/0x30c
[ 504.052072] [<c069e8e4>] omap_i2c_probe+0x330/0x42c
[ 504.059173] [<c05ac2d8>] platform_drv_probe+0x50/0x98
[ 504.066472] [<c05aa3ac>] really_probe+0xfc/0x258
[ 504.073285] [<c05aa6ac>] driver_probe_device+0x44/0x70
[ 504.080657] [<c05a8e2c>] bus_for_each_drv+0x4c/0x84
[ 504.087760] [<c05aa5d4>] __device_attach+0x84/0xf8
[ 504.094773] [<c05a99e8>] bus_probe_device+0x28/0x84
[ 504.101880] [<c05a9e50>] deferred_probe_work_func+0x5c/0x8c
[ 504.109712] [<c02653c8>] process_one_work+0x3fc/0x770
[ 504.117007] [<c0265964>] worker_thread+0x1f8/0x2fc
[ 504.124021] [<c026ad08>] kthread+0xdc/0xf0
[ 504.130299] [<c02207c8>] ret_from_fork+0x14/0x2c
[ 504.137126] }
[ 504.138974] ... key at: [<c186b9e0>] _key.26438+0x0/0x8
[ 504.145144] ... acquired at:
[ 504.148371] [<c0299748>] __lock_acquire+0x7d0/0x8d0
[ 504.153806] [<c0299fc8>] lock_acquire+0x25c/0x290
[ 504.159060] [<c08068a8>] mutex_lock_nested+0x4c/0x43c
[ 504.164674] [<c05c5500>] regmap_read+0x30/0x58
[ 504.169655] [<c05d5208>] twl6040_get_vibralr_status+0x18/0x48
[ 504.176007] [<bf080674>] vibra_play+0x18/0x7c [twl6040_vibra]
[ 504.182368] [<c068a94c>] ml_play_effects+0x34/0x5c
[ 504.187726] [<c068aa2c>] ml_ff_playback+0x88/0x94
[ 504.192985] [<c0689bf4>] input_ff_event+0x9c/0xa4
[ 504.198246] [<c0688a7c>] input_handle_event+0x4c/0x134
[ 504.203968] [<c0688c7c>] input_inject_event+0x118/0x1ac
[ 504.209777] [<c068ea00>] evdev_write+0x88/0xc0
[ 504.214755] [<c036eff8>] __vfs_write+0x18/0x38
[ 504.219735] [<c036fdc8>] vfs_write+0xac/0x130
[ 504.224623] [<c036ffec>] SyS_write+0x40/0x78
[ 504.229417] [<c0220740>] ret_fast_syscall+0x0/0x1c
[ 504.234763]
[ 504.236341] -> (&(&dev->event_lock)->rlock){..-...} ops: 95 {
[ 504.242479] IN-SOFTIRQ-W at:
[ 504.245808] [<c0299fc8>] lock_acquire+0x25c/0x290
[ 504.252636] [<c0809810>] _raw_spin_lock_irqsave+0x40/0x54
[ 504.260195] [<c068aa50>] ml_effect_timer+0x18/0x34
[ 504.267124] [<c02b77dc>] call_timer_fn+0x224/0x47c
[ 504.274044] [<c02b7dc4>] run_timer_softirq+0x390/0x3f8
[ 504.281320] [<c024fca8>] __do_softirq+0x2e4/0x66c
[ 504.288147] [<c0250328>] irq_exit+0x98/0x118
[ 504.294521] [<c02a5a78>] __handle_domain_irq+0xa0/0xdc
[ 504.301801] [<c0201578>] gic_handle_irq+0x50/0x8c
[ 504.308629] [<c080af04>] __irq_svc+0x44/0x7c
[ 504.314996] [<c0809f98>] _raw_spin_unlock_irq+0x28/0x60
[ 504.322364] [<c0809f98>] _raw_spin_unlock_irq+0x28/0x60
[ 504.329749] [<c0271eb8>] finish_task_switch+0x188/0x2c0
[ 504.337136] [<c08049a8>] __schedule+0x734/0x7fc
[ 504.343790] [<c0804ca8>] schedule+0x9c/0xc0
[ 504.350073] [<c0804ed4>] schedule_preempt_disabled+0x14/0x20
[ 504.357911] [<c028f4d4>] cpu_idle_loop+0x37c/0x3ac
[ 504.364840] [<c028f51c>] cpupri_find+0x0/0xe4
[ 504.371296] INITIAL USE at:
[ 504.374529] [<c0809810>] _raw_spin_lock_irqsave+0x40/0x54
[ 504.382004] [<c0688d48>] input_event+0x38/0x60
[ 504.388460] [<c0691a60>] gpio_keys_gpio_report_event+0x88/0xa4
[ 504.396390] [<c0691ab8>] gpio_keys_report_state+0x3c/0x68
[ 504.403879] [<c0691b14>] gpio_keys_open+0x30/0x38
[ 504.410621] [<c0686a88>] input_open_device+0x68/0xa4
[ 504.417634] [<c0589d58>] kbd_connect+0x50/0x7c
[ 504.424098] [<c0686e80>] input_attach_handler+0x34/0x64
[ 504.431397] [<c0687428>] input_register_device+0x18c/0x248
[ 504.438974] [<c0692674>] gpio_keys_probe+0x198/0x208
[ 504.445981] [<c05ac2d8>] platform_drv_probe+0x50/0x98
[ 504.453090] [<c05aa3ac>] really_probe+0xfc/0x258
[ 504.459728] [<c05aa6ac>] driver_probe_device+0x44/0x70
[ 504.466921] [<c05aa760>] __driver_attach+0x88/0xac
[ 504.473738] [<c05a8eb4>] bus_for_each_dev+0x50/0x84
[ 504.480659] [<c05a9bfc>] bus_add_driver+0xcc/0x1e4
[ 504.487485] [<c05ab6d0>] driver_register+0xac/0xf4
[ 504.494321] [<c02018c0>] do_one_initcall+0x100/0x1b8
[ 504.501331] [<c0e00d28>] do_basic_setup+0x98/0xd4
[ 504.508077] [<c0e00de8>] kernel_init_freeable+0x84/0x124
[ 504.515458] [<c080381c>] kernel_init+0x8/0x110
[ 504.521923] [<c02207c8>] ret_from_fork+0x14/0x2c
[ 504.528570] }
[ 504.530327] ... key at: [<c186df3c>] __key.23309+0x0/0x8
[ 504.536498] ... acquired at:
[ 504.539636] [<c031a9f8>] mark_lock_irq+0xec/0x28c
[ 504.544897] [<c0298c8c>] mark_lock+0x2e8/0x448
[ 504.549875] [<c0298e8c>] mark_irqflags+0xa0/0x18c
[ 504.555126] [<c02995b8>] __lock_acquire+0x640/0x8d0
[ 504.560559] [<c0299fc8>] lock_acquire+0x25c/0x290
[ 504.565809] [<c0809810>] _raw_spin_lock_irqsave+0x40/0x54
[ 504.571798] [<c068aa50>] ml_effect_timer+0x18/0x34
[ 504.577147] [<c02b77dc>] call_timer_fn+0x224/0x47c
[ 504.582495] [<c02b7dc4>] run_timer_softirq+0x390/0x3f8
[ 504.588209] [<c024fca8>] __do_softirq+0x2e4/0x66c
[ 504.593465] [<c0250328>] irq_exit+0x98/0x118
[ 504.598264] [<c02a5a78>] __handle_domain_irq+0xa0/0xdc
[ 504.603984] [<c0201578>] gic_handle_irq+0x50/0x8c
[ 504.609241] [<c080af04>] __irq_svc+0x44/0x7c
[ 504.614037] [<c0809f98>] _raw_spin_unlock_irq+0x28/0x60
[ 504.619845] [<c0809f98>] _raw_spin_unlock_irq+0x28/0x60
[ 504.625649] [<c0271eb8>] finish_task_switch+0x188/0x2c0
[ 504.631465] [<c08049a8>] __schedule+0x734/0x7fc
[ 504.636533] [<c0804ca8>] schedule+0x9c/0xc0
[ 504.641238] [<c0804ed4>] schedule_preempt_disabled+0x14/0x20
[ 504.647503] [<c028f4d4>] cpu_idle_loop+0x37c/0x3ac
[ 504.652856] [<c028f51c>] cpupri_find+0x0/0xe4
[ 504.657756]
[ 504.659341]
[ 504.659341] stack backtrace:
[ 504.663948] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G W 4.6.0-rc4-letux+ #69
[ 504.672497] Hardware name: Generic OMAP5 (Flattened Device Tree)
[ 504.678871] [<c022789c>] (unwind_backtrace) from [<c022403c>] (show_stack+0x10/0x14)
[ 504.687083] [<c022403c>] (show_stack) from [<c0517e44>] (dump_stack+0x88/0xc0)
[ 504.694743] [<c0517e44>] (dump_stack) from [<c031a6b8>] (print_irq_inversion_bug.part.12+0x16c/0x1a4)
[ 504.704509] [<c031a6b8>] (print_irq_inversion_bug.part.12) from [<c029726c>] (print_irq_inversion_bug+0x74/0x84)
[ 504.715299] [<c029726c>] (print_irq_inversion_bug) from [<c029735c>] (check_usage_forwards+0xe0/0x10c)
[ 504.725152] [<c029735c>] (check_usage_forwards) from [<c031a9f8>] (mark_lock_irq+0xec/0x28c)
[ 504.734094] [<c031a9f8>] (mark_lock_irq) from [<c0298c8c>] (mark_lock+0x2e8/0x448)
[ 504.742114] [<c0298c8c>] (mark_lock) from [<c0298e8c>] (mark_irqflags+0xa0/0x18c)
[ 504.750026] [<c0298e8c>] (mark_irqflags) from [<c02995b8>] (__lock_acquire+0x640/0x8d0)
[ 504.758491] [<c02995b8>] (__lock_acquire) from [<c0299fc8>] (lock_acquire+0x25c/0x290)
[ 504.766878] [<c0299fc8>] (lock_acquire) from [<c0809810>] (_raw_spin_lock_irqsave+0x40/0x54)
[ 504.775823] [<c0809810>] (_raw_spin_lock_irqsave) from [<c068aa50>] (ml_effect_timer+0x18/0x34)
[ 504.785043] [<c068aa50>] (ml_effect_timer) from [<c02b77dc>] (call_timer_fn+0x224/0x47c)
[ 504.793613] [<c02b77dc>] (call_timer_fn) from [<c02b7dc4>] (run_timer_softirq+0x390/0x3f8)
[ 504.802367] [<c02b7dc4>] (run_timer_softirq) from [<c024fca8>] (__do_softirq+0x2e4/0x66c)
[ 504.811025] [<c024fca8>] (__do_softirq) from [<c0250328>] (irq_exit+0x98/0x118)
[ 504.818768] [<c0250328>] (irq_exit) from [<c02a5a78>] (__handle_domain_irq+0xa0/0xdc)
[ 504.827062] [<c02a5a78>] (__handle_domain_irq) from [<c0201578>] (gic_handle_irq+0x50/0x8c)
[ 504.835910] [<c0201578>] (gic_handle_irq) from [<c080af04>] (__irq_svc+0x44/0x7c)
[ 504.843825] Exception stack(0xee0dbee8 to 0xee0dbf30)
[ 504.849178] bee0: 00000001 00000004 00000000 ee0d8e80 eefab600 eefab600
[ 504.857845] bf00: 00000000 ee0d8e80 c08049a8 00000000 00000002 ee0dbf74 00000000 ee0dbf38
[ 504.866504] bf20: c029aa18 c0809f98 200f0013 ffffffff
[ 504.871860] [<c080af04>] (__irq_svc) from [<c0809f98>] (_raw_spin_unlock_irq+0x28/0x60)
[ 504.880338] [<c0809f98>] (_raw_spin_unlock_irq) from [<c0271eb8>] (finish_task_switch+0x188/0x2c0)
[ 504.889829] [<c0271eb8>] (finish_task_switch) from [<c08049a8>] (__schedule+0x734/0x7fc)
[ 504.898398] [<c08049a8>] (__schedule) from [<c0804ca8>] (schedule+0x9c/0xc0)
[ 504.905871] [<c0804ca8>] (schedule) from [<c0804ed4>] (schedule_preempt_disabled+0x14/0x20)
[ 504.914720] [<c0804ed4>] (schedule_preempt_disabled) from [<c028f4d4>] (cpu_idle_loop+0x37c/0x3ac)
[ 504.924210] [<c028f4d4>] (cpu_idle_loop) from [<c028f51c>] (cpupri_find+0x0/0xe4)
[ 506.142849] BUG: spinlock lockup suspected on CPU#1, swapper/1/0
[ 506.149219] lock: 0xed1a019c, .magic: dead4ead, .owner: python/2591, .owner_cpu: 1
[ 506.157338] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G W 4.6.0-rc4-letux+ #69
[ 506.165873] Hardware name: Generic OMAP5 (Flattened Device Tree)
[ 506.172231] [<c022789c>] (unwind_backtrace) from [<c022403c>] (show_stack+0x10/0x14)
[ 506.180427] [<c022403c>] (show_stack) from [<c0517e44>] (dump_stack+0x88/0xc0)
[ 506.188081] [<c0517e44>] (dump_stack) from [<c031ae24>] (__spin_lock_debug+0x8c/0xdc)
[ 506.196384] [<c031ae24>] (__spin_lock_debug) from [<c029d15c>] (do_raw_spin_lock+0xa8/0xd8)
[ 506.205230] [<c029d15c>] (do_raw_spin_lock) from [<c0809818>] (_raw_spin_lock_irqsave+0x48/0x54)
[ 506.214539] [<c0809818>] (_raw_spin_lock_irqsave) from [<c068aa50>] (ml_effect_timer+0x18/0x34)
[ 506.223742] [<c068aa50>] (ml_effect_timer) from [<c02b77dc>] (call_timer_fn+0x224/0x47c)
[ 506.232311] [<c02b77dc>] (call_timer_fn) from [<c02b7dc4>] (run_timer_softirq+0x390/0x3f8)
[ 506.241070] [<c02b7dc4>] (run_timer_softirq) from [<c024fca8>] (__do_softirq+0x2e4/0x66c)
[ 506.249730] [<c024fca8>] (__do_softirq) from [<c0250328>] (irq_exit+0x98/0x118)
[ 506.257483] [<c0250328>] (irq_exit) from [<c02a5a78>] (__handle_domain_irq+0xa0/0xdc)
[ 506.265788] [<c02a5a78>] (__handle_domain_irq) from [<c0201578>] (gic_handle_irq+0x50/0x8c)
[ 506.274637] [<c0201578>] (gic_handle_irq) from [<c080af04>] (__irq_svc+0x44/0x7c)
[ 506.282558] Exception stack(0xee0dbee8 to 0xee0dbf30)
[ 506.287891] bee0: 00000001 00000004 00000000 ee0d8e80 eefab600 eefab600
[ 506.296529] bf00: 00000000 ee0d8e80 c08049a8 00000000 00000002 ee0dbf74 00000000 ee0dbf38
[ 506.305162] bf20: c029aa18 c0809f98 200f0013 ffffffff
[ 506.310501] [<c080af04>] (__irq_svc) from [<c0809f98>] (_raw_spin_unlock_irq+0x28/0x60)
[ 506.318972] [<c0809f98>] (_raw_spin_unlock_irq) from [<c0271eb8>] (finish_task_switch+0x188/0x2c0)
[ 506.328460] [<c0271eb8>] (finish_task_switch) from [<c08049a8>] (__schedule+0x734/0x7fc)
[ 506.337041] [<c08049a8>] (__schedule) from [<c0804ca8>] (schedule+0x9c/0xc0)
[ 506.344512] [<c0804ca8>] (schedule) from [<c0804ed4>] (schedule_preempt_disabled+0x14/0x20)
[ 506.353359] [<c0804ed4>] (schedule_preempt_disabled) from [<c028f4d4>] (cpu_idle_loop+0x37c/0x3ac)
[ 506.362845] [<c028f4d4>] (cpu_idle_loop) from [<c028f51c>] (cpupri_find+0x0/0xe4)
[ 506.370766] Sending NMI to all CPUs:
[ 506.375928] NMI backtrace for cpu 0
[ 506.379616] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 4.6.0-rc4-letux+ #69
[ 506.388171] Hardware name: Generic OMAP5 (Flattened Device Tree)
[ 506.394529] task: c1005e80 ti: c1000000 task.ti: c1000000
[ 506.400238] PC is at arch_cpu_idle+0x30/0x3c
[ 506.404752] LR is at arch_cpu_idle+0x2c/0x3c
[ 506.409277] pc : [<c02211e0>] lr : [<c02211dc>] psr: 60000013
[ 506.415916] sp : c1001fa8 ip : c1001f88 fp : 00000000
[ 506.421453] r10: 00000000 r9 : 412fc0f2 r8 : 80007000
[ 506.426981] r7 : c1009a00 r6 : c10025d4 r5 : c100256c r4 : 0000002b
[ 506.433886] r3 : 00000000 r2 : fe600000 r1 : c1001fa8 r0 : c02211dc
[ 506.440799] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
[ 506.448528] Control: 30c5387d Table: a8b8ff00 DAC: fffffffd
[ 506.454608] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 4.6.0-rc4-letux+ #69
[ 506.463165] Hardware name: Generic OMAP5 (Flattened Device Tree)
[ 506.469520] [<c022789c>] (unwind_backtrace) from [<c022403c>] (show_stack+0x10/0x14)
[ 506.477714] [<c022403c>] (show_stack) from [<c0517e44>] (dump_stack+0x88/0xc0)
[ 506.485354] [<c0517e44>] (dump_stack) from [<c051c0ec>] (nmi_cpu_backtrace+0xc4/0x108)
[ 506.493715] [<c051c0ec>] (nmi_cpu_backtrace) from [<c0225f50>] (handle_IPI+0x240/0x3dc)
[ 506.502180] [<c0225f50>] (handle_IPI) from [<c02015a8>] (gic_handle_irq+0x80/0x8c)
[ 506.510189] [<c02015a8>] (gic_handle_irq) from [<c080af04>] (__irq_svc+0x44/0x7c)
[ 506.518102] Exception stack(0xc1001f58 to 0xc1001fa0)
[ 506.523444] 1f40: c02211dc c1001fa8
[ 506.532097] 1f60: fe600000 00000000 0000002b c100256c c10025d4 c1009a00 80007000 412fc0f2
[ 506.540754] 1f80: 00000000 00000000 c1001f88 c1001fa8 c02211dc c02211e0 60000013 ffffffff
[ 506.549403] [<c080af04>] (__irq_svc) from [<c02211e0>] (arch_cpu_idle+0x30/0x3c)
[ 506.557234] [<c02211e0>] (arch_cpu_idle) from [<c028f470>] (cpu_idle_loop+0x318/0x3ac)
[ 506.565615] [<c028f470>] (cpu_idle_loop) from [<c028f51c>] (cpupri_find+0x0/0xe4)
[ 506.573528] [<c028f51c>] (cpupri_find) from [<c10a54c0>] (processor_id+0x0/0x40)
[ 506.581346] NMI backtrace for cpu 1
[ 506.585033] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G W 4.6.0-rc4-letux+ #69
[ 506.593591] Hardware name: Generic OMAP5 (Flattened Device Tree)
[ 506.599949] [<c022789c>] (unwind_backtrace) from [<c022403c>] (show_stack+0x10/0x14)
[ 506.608147] [<c022403c>] (show_stack) from [<c0517e44>] (dump_stack+0x88/0xc0)
[ 506.615784] [<c0517e44>] (dump_stack) from [<c051c0f4>] (nmi_cpu_backtrace+0xcc/0x108)
[ 506.624155] [<c051c0f4>] (nmi_cpu_backtrace) from [<c0225598>] (raise_nmi+0x44/0x54)
[ 506.632343] [<c0225598>] (raise_nmi) from [<c051c280>] (nmi_trigger_all_cpu_backtrace+0xf0/0x254)
[ 506.641732] [<c051c280>] (nmi_trigger_all_cpu_backtrace) from [<c031ae2c>] (__spin_lock_debug+0x94/0xdc)
[ 506.651766] [<c031ae2c>] (__spin_lock_debug) from [<c029d15c>] (do_raw_spin_lock+0xa8/0xd8)
[ 506.660607] [<c029d15c>] (do_raw_spin_lock) from [<c0809818>] (_raw_spin_lock_irqsave+0x48/0x54)
[ 506.669901] [<c0809818>] (_raw_spin_lock_irqsave) from [<c068aa50>] (ml_effect_timer+0x18/0x34)
[ 506.679103] [<c068aa50>] (ml_effect_timer) from [<c02b77dc>] (call_timer_fn+0x224/0x47c)
[ 506.687655] [<c02b77dc>] (call_timer_fn) from [<c02b7dc4>] (run_timer_softirq+0x390/0x3f8)
[ 506.696407] [<c02b7dc4>] (run_timer_softirq) from [<c024fca8>] (__do_softirq+0x2e4/0x66c)
[ 506.705067] [<c024fca8>] (__do_softirq) from [<c0250328>] (irq_exit+0x98/0x118)
[ 506.712807] [<c0250328>] (irq_exit) from [<c02a5a78>] (__handle_domain_irq+0xa0/0xdc)
[ 506.721086] [<c02a5a78>] (__handle_domain_irq) from [<c0201578>] (gic_handle_irq+0x50/0x8c)
[ 506.729911] [<c0201578>] (gic_handle_irq) from [<c080af04>] (__irq_svc+0x44/0x7c)
[ 506.737818] Exception stack(0xee0dbee8 to 0xee0dbf30)
[ 506.743169] bee0: 00000001 00000004 00000000 ee0d8e80 eefab600 eefab600
[ 506.751820] bf00: 00000000 ee0d8e80 c08049a8 00000000 00000002 ee0dbf74 00000000 ee0dbf38
[ 506.760464] bf20: c029aa18 c0809f98 200f0013 ffffffff
[ 506.765800] [<c080af04>] (__irq_svc) from [<c0809f98>] (_raw_spin_unlock_irq+0x28/0x60)
[ 506.774273] [<c0809f98>] (_raw_spin_unlock_irq) from [<c0271eb8>] (finish_task_switch+0x188/0x2c0)
[ 506.783731] [<c0271eb8>] (finish_task_switch) from [<c08049a8>] (__schedule+0x734/0x7fc)
[ 506.792279] [<c08049a8>] (__schedule) from [<c0804ca8>] (schedule+0x9c/0xc0)
[ 506.799745] [<c0804ca8>] (schedule) from [<c0804ed4>] (schedule_preempt_disabled+0x14/0x20)
[ 506.808577] [<c0804ed4>] (schedule_preempt_disabled) from [<c028f4d4>] (cpu_idle_loop+0x37c/0x3ac)
[ 506.818058] [<c028f4d4>] (cpu_idle_loop) from [<c028f51c>] (cpupri_find+0x0/0xe4)