[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