[Letux-kernel] compile problems

H. Nikolaus Schaller hns at goldelico.com
Wed Jul 25 07:00:48 CEST 2018


Hi,

> Am 24.07.2018 um 22:26 schrieb Andreas Kemnade <andreas at kemnade.info>:
> 
> Hi,
> 
> 
>> BTW: did you see the kernel hickups also with evtest on the accelerometer?
>> 
> [   60.439422] ------------[ cut here ]------------
> [   60.444305] WARNING: CPU: 0 PID: 3140 at kernel/workqueue.c:1513 __queue_delayed_work+0xd8/0x13c

https://elixir.bootlin.com/linux/v4.18-rc6/source/kernel/workqueue.c#L1513

So some list is not empty which should be. No idea why that happens...

		INIT_DELAYED_WORK(&input_work, inputbridge_work);

should have initialized work->entry through

https://elixir.bootlin.com/linux/v4.18-rc6/source/include/linux/workqueue.h#L236

> [   60.453491] Modules linked in: bnep bluetooth ecdh_generic ipv6 usb_f_ecm g_ether usb_f_rndis u_ether libcomposite configfs dm_crypt dm_mod dax arc4 wl18xx wlcore mac80211 cfg80211 omapdrm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm drm_panel_orientation_quirks panel_tpo_td028ttec1 pps_gpio snd_soc_simple_card snd_soc_simple_card_utils snd_soc_omap_twl4030 pps_core encoder_opa362 wwan_on_off snd_soc_gtm601 pwm_omap_dmtimer connector_analog_tv generic_adc_battery pwm_bl bmp280_spi wlcore_sdio ov9655 bq27xxx_battery_hdq bq27xxx_battery v4l2_fwnode v4l2_common omap_hdq omap2430 bmp280_i2c bmp280 videodev leds_tca6507 tsc2007 bmc150_accel_i2c at24 bmc150_magn_i2c media bno055 bmc150_accel_core bmc150_magn industrialio_triggered_buffer kfifo_buf phy_twl4030_usb snd_soc_omap_mcbsp
> [   60.527435]  snd_soc_sdma musb_hdrc gpio_twl4030 snd_soc_twl4030 twl4030_vibra gnss_w2sg0004 twl4030_madc twl4030_charger industrialio twl4030_pwrbutton gnss w2cbw003_bluetooth omapdss omapdss_base cec
> [   60.546234] CPU: 0 PID: 3140 Comm: evtest Not tainted 4.18.0-rc6-letux+ #2555
> [   60.553680] Hardware name: Generic OMAP36xx (Flattened Device Tree)
> [   60.560272] [<c01112c8>] (unwind_backtrace) from [<c010c878>] (show_stack+0x10/0x14)
> [   60.568389] [<c010c878>] (show_stack) from [<c078c474>] (dump_stack+0x7c/0x9c)
> [   60.575958] [<c078c474>] (dump_stack) from [<c013283c>] (__warn+0xd8/0x108)
> [   60.583251] [<c013283c>] (__warn) from [<c013297c>] (warn_slowpath_null+0x38/0x44)
> [   60.591186] [<c013297c>] (warn_slowpath_null) from [<c01493bc>] (__queue_delayed_work+0xd8/0x13c)
> [   60.600463] [<c01493bc>] (__queue_delayed_work) from [<c0149468>] (queue_delayed_work_on+0x48/0x54)
> [   60.610015] [<c0149468>] (queue_delayed_work_on) from [<bf0756a4>] (accel_open+0x1c/0x2c [industrialio])
> [   60.619964] [<bf0756a4>] (accel_open [industrialio]) from [<c05f0428>] (input_open_device+0x6c/0xa8)
> [   60.629516] [<c05f0428>] (input_open_device) from [<c05f8eec>] (evdev_open+0xec/0x168)
> [   60.637817] [<c05f8eec>] (evdev_open) from [<c025ab54>] (chrdev_open+0x144/0x188)
> [   60.645660] [<c025ab54>] (chrdev_open) from [<c0253370>] (do_dentry_open+0x1a4/0x320)
> [   60.653869] [<c0253370>] (do_dentry_open) from [<c0265dac>] (do_last+0xb4c/0xd50)
> [   60.661682] [<c0265dac>] (do_last) from [<c02661bc>] (path_openat+0x20c/0x2b4)
> [   60.669250] [<c02661bc>] (path_openat) from [<c02662a8>] (do_filp_open+0x44/0xa8)
> [   60.677062] [<c02662a8>] (do_filp_open) from [<c025484c>] (do_sys_open+0x118/0x1d4)
> [   60.685089] [<c025484c>] (do_sys_open) from [<c0101000>] (ret_fast_syscall+0x0/0x54)
> [   60.693176] Exception stack(0xee773fa8 to 0xee773ff0)
> [   60.698455] 3fa0:                   00017008 beae5d64 00017008 00000000 00000000 00000035
> [   60.707031] 3fc0: 00017008 beae5d64 00000000 00000005 beae5e76 00000000 b6f29000 00000000
> [   60.715576] 3fe0: 00000000 beae5bd4 00008bbf b6e87b26
> [   60.720855] ---[ end trace 4b20104c1a3b480c ]---
> [   60.725677] ------------[ cut here ]------------
> [   60.730499] WARNING: CPU: 0 PID: 3140 at kernel/workqueue.c:1442 __queue_work+0x2d8/0x48c

https://elixir.bootlin.com/linux/v4.18-rc6/source/kernel/workqueue.c#L1442

> [   60.739044] Modules linked in: bnep bluetooth ecdh_generic ipv6 usb_f_ecm g_ether usb_f_rndis u_ether libcomposite configfs dm_crypt dm_mod dax arc4 wl18xx wlcore mac80211 cfg80211 omapdrm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm drm_panel_orientation_quirks panel_tpo_td028ttec1 pps_gpio snd_soc_simple_card snd_soc_simple_card_utils snd_soc_omap_twl4030 pps_core encoder_opa362 wwan_on_off snd_soc_gtm601 pwm_omap_dmtimer connector_analog_tv generic_adc_battery pwm_bl bmp280_spi wlcore_sdio ov9655 bq27xxx_battery_hdq bq27xxx_battery v4l2_fwnode v4l2_common omap_hdq omap2430 bmp280_i2c bmp280 videodev leds_tca6507 tsc2007 bmc150_accel_i2c at24 bmc150_magn_i2c media bno055 bmc150_accel_core bmc150_magn industrialio_triggered_buffer kfifo_buf phy_twl4030_usb snd_soc_omap_mcbsp
> [   60.812927]  snd_soc_sdma musb_hdrc gpio_twl4030 snd_soc_twl4030 twl4030_vibra gnss_w2sg0004 twl4030_madc twl4030_charger industrialio twl4030_pwrbutton gnss w2cbw003_bluetooth omapdss omapdss_base cec
> [   60.831726] CPU: 0 PID: 3140 Comm: evtest Tainted: G        W         4.18.0-rc6-letux+ #2555
> [   60.840606] Hardware name: Generic OMAP36xx (Flattened Device Tree)
> [   60.847167] [<c01112c8>] (unwind_backtrace) from [<c010c878>] (show_stack+0x10/0x14)
> [   60.855285] [<c010c878>] (show_stack) from [<c078c474>] (dump_stack+0x7c/0x9c)
> [   60.862854] [<c078c474>] (dump_stack) from [<c013283c>] (__warn+0xd8/0x108)
> [   60.870117] [<c013283c>] (__warn) from [<c013297c>] (warn_slowpath_null+0x38/0x44)
> [   60.878051] [<c013297c>] (warn_slowpath_null) from [<c01490ac>] (__queue_work+0x2d8/0x48c)
> [   60.886688] [<c01490ac>] (__queue_work) from [<c0149468>] (queue_delayed_work_on+0x48/0x54)
> [   60.895477] [<c0149468>] (queue_delayed_work_on) from [<bf0756a4>] (accel_open+0x1c/0x2c [industrialio])
> [   60.905426] [<bf0756a4>] (accel_open [industrialio]) from [<c05f0428>] (input_open_device+0x6c/0xa8)
> [   60.914978] [<c05f0428>] (input_open_device) from [<c05f8eec>] (evdev_open+0xec/0x168)
> [   60.923248] [<c05f8eec>] (evdev_open) from [<c025ab54>] (chrdev_open+0x144/0x188)
> [   60.931091] [<c025ab54>] (chrdev_open) from [<c0253370>] (do_dentry_open+0x1a4/0x320)
> [   60.939270] [<c0253370>] (do_dentry_open) from [<c0265dac>] (do_last+0xb4c/0xd50)
> [   60.947113] [<c0265dac>] (do_last) from [<c02661bc>] (path_openat+0x20c/0x2b4)
> [   60.954681] [<c02661bc>] (path_openat) from [<c02662a8>] (do_filp_open+0x44/0xa8)
> [   60.962493] [<c02662a8>] (do_filp_open) from [<c025484c>] (do_sys_open+0x118/0x1d4)
> [   60.970489] [<c025484c>] (do_sys_open) from [<c0101000>] (ret_fast_syscall+0x0/0x54)
> [   60.978607] Exception stack(0xee773fa8 to 0xee773ff0)
> [   60.983886] 3fa0:                   00017008 beae5d64 00017008 00000000 00000000 00000035
> [   60.992431] 3fc0: 00017008 beae5d64 00000000 00000005 beae5e76 00000000 b6f29000 00000000
> [   61.000976] 3fe0: 00000000 beae5bd4 00008bbf b6e87b26
> [   61.006256] ---[ end trace 4b20104c1a3b480d ]---
> 
> 
>> Maybe /lib/udev/accelerometer is slightly incompatible with kernel API
>> and the iio-bridge doesn't catch such situations properly?
> 
> also plain reads are enough to get it, like a simple
> xxd /dev/input/eventX.
> 
> Are you testing with A4 or A5?

Both.

I have also looked into the code of the stack trace and could you please
try to change accel_open() in drivers/iio/industrialio-inputbridge.c

#if POLLING
	schedule_delayed_work(&input_work,
		msecs_to_jiffies(0));	// start now
#else

to

#if POLLING
	schedule_delayed_work(&input_work,
		msecs_to_jiffies(1));	// start now
#else

Maybe immediately scheduling a delayed work ins't allowed in open() in some situations?

A negative side-effect could be that the first value is nonsense...

In that case we should try:

#if POLLING
	accel_report_xyz((struct input_dev *) channels[0].data);

	schedule_delayed_work(&input_work,
		msecs_to_jiffies(100));	// repeat
#else

BR,
Nikolaus

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.goldelico.com/pipermail/letux-kernel/attachments/20180725/c4400628/attachment.asc>


More information about the Letux-kernel mailing list