-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
Describe the bug
After updating the kernel from version 4.19.118 to 5.4.35 an attempt to get an image from the tc358743 device twice in a row (reopen device file) results to I2C timeouts. In some cases, this leads to a hang (see log1), sometimes it causes errors when working with the MMC card and a reboot (see log2).
UPD: The first message was not entirely accurate. The problem occur when the first reading process is interrupted. That is, I run yavta, press Ctrl+C and immediately got a dead kernel. I played around with yavta a bit and found out that the problem occurs either when closing /dev/video0 or when executing ioctl VIDIOC_STREAMOFF. I think the tc358743 driver is trying to command something over I2C, and everything stops working.
/UPD
[ 79.678547] ------------[ cut here ]------------
[ 79.678554] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 79.678569] tc358743 10-000f: i2c_wr: writing register 0x4 from 0xf failed
[ 79.683241] WARNING: CPU: 3 PID: 34 at drivers/firmware/raspberrypi.c:63 rpi_firmware_transaction+0xe8/0x124
[ 79.705713] Firmware transaction timeout
[ 79.705715] Modules linked in: usb_f_mass_storage usb_f_hid usb_f_acm u_serial btsdio bluetooth ecdh_generic ecc brcmfmac brcmutil cfg80211 raspberrypi_hwmon hwmon i2c_mux_pinctrl i2c_mux bcm2835_unicam i2c_bcm2835 iproc_rng200 rng_core bcm2835_codec(C) bcm2835_v4l2(C) bcm2835_isp(C) bcm2835_mmal_vchiq(C) v4l2_mem2mem videobuf2_dma_contig videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common rpivid_mem uio_pdrv_genirq uio sch_fq_codel snd_bcm2835(C) snd_pcm snd_timer snd tc358743 v4l2_dv_timings v4l2_fwnode videodev mc cec libcomposite dwc2 udc_core drm drm_panel_orientation_quirks ip_tables x_tables ipv6 nf_defrag_ipv6
[ 79.766074] CPU: 3 PID: 34 Comm: kworker/3:1 Tainted: G C 5.4.35-1-ARCH #1
[ 79.774292] Hardware name: BCM2711
[ 79.777717] Workqueue: events dbs_work_handler
[ 79.782192] [<c0211424>] (unwind_backtrace) from [<c020c6fc>] (show_stack+0x10/0x14)
[ 79.789977] [<c020c6fc>] (show_stack) from [<c0ccc638>] (dump_stack+0x94/0xb4)
[ 79.806238] [<c0ccc638>] (dump_stack) from [<c022ceb8>] (__warn+0xd0/0xf8)
[ 79.817766] [<c022ceb8>] (__warn) from [<c022d29c>] (warn_slowpath_fmt+0x98/0xc4)
[ 79.834301] [<c022d29c>] (warn_slowpath_fmt) from [<c0b36468>] (rpi_firmware_transaction+0xe8/0x124)
[ 79.852463] [<c0b36468>] (rpi_firmware_transaction) from [<c0b36550>] (rpi_firmware_property_list+0xac/0x168)
[ 79.871582] [<c0b36550>] (rpi_firmware_property_list) from [<c0b3666c>] (rpi_firmware_property+0x60/0x108)
[ 79.890551] [<c0b3666c>] (rpi_firmware_property) from [<c0928494>] (raspberrypi_clock_property+0x48/0x78)
[ 79.909488] [<c0928494>] (raspberrypi_clock_property) from [<c09285f8>] (raspberrypi_fw_set_rate+0x44/0xb8)
[ 79.928821] [<c09285f8>] (raspberrypi_fw_set_rate) from [<c0921c94>] (clk_change_rate+0xe0/0x558)
[ 79.947361] [<c0921c94>] (clk_change_rate) from [<c0922284>] (clk_core_set_rate_nolock+0x178/0x1a0)
[ 79.966220] [<c0922284>] (clk_core_set_rate_nolock) from [<c09222dc>] (clk_set_rate+0x30/0x88)
[ 79.984877] [<c09222dc>] (clk_set_rate) from [<c0b03da8>] (dev_pm_opp_set_rate+0x364/0x460)
[ 80.003253] [<c0b03da8>] (dev_pm_opp_set_rate) from [<c0b0d0bc>] (set_target+0x2c/0x54)
[ 80.021370] [<c0b0d0bc>] (set_target) from [<c0b07e08>] (__cpufreq_driver_target+0x220/0x534)
[ 80.040342] [<c0b07e08>] (__cpufreq_driver_target) from [<c0b0b32c>] (od_dbs_update+0xb4/0x160)
[ 80.059658] [<c0b0b32c>] (od_dbs_update) from [<c0b0c4c4>] (dbs_work_handler+0x2c/0x58)
[ 80.078284] [<c0b0c4c4>] (dbs_work_handler) from [<c02489ec>] (process_one_work+0x1f0/0x588)
[ 80.097449] [<c02489ec>] (process_one_work) from [<c0248dd0>] (worker_thread+0x4c/0x528)
[ 80.116348] [<c0248dd0>] (worker_thread) from [<c024ec28>] (kthread+0x128/0x154)
[ 80.134600] [<c024ec28>] (kthread) from [<c02010d8>] (ret_from_fork+0x14/0x3c)
[ 80.152846] Exception stack(0xef2a9fb0 to 0xef2a9ff8)
[ 80.163429] 9fa0: 00000000 00000000 00000000 00000000
[ 80.182818] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 80.202646] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 80.215376] ---[ end trace 91bfd0c131224965 ]---
[ 80.226095] raspberrypi-clk firmware-clocks: Failed to change pllb frequency: -110
[ 80.718577] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 80.730213] tc358743 10-000f: i2c_rd: reading register 0x2 from 0xf failed
[ 81.758599] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 81.770193] tc358743 10-000f: i2c_wr: writing register 0x2 from 0xf failed
[ 82.798624] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 82.810166] tc358743 10-000f: i2c_wr: writing register 0x2 from 0xf failed
[ 83.838648] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 83.850108] tc358743 10-000f: i2c_wr: writing register 0x14c from 0xf failed
[ 84.878670] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 84.890186] tc358743 10-000f: i2c_wr: writing register 0x150 from 0xf failed
[ 85.918697] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 85.930211] tc358743 10-000f: i2c_wr: writing register 0x210 from 0xf failed
[ 86.958710] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 86.970186] tc358743 10-000f: i2c_wr: writing register 0x214 from 0xf failed
[ 87.998734] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 88.010264] tc358743 10-000f: i2c_wr: writing register 0x218 from 0xf failed
[ 89.038749] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 89.050252] tc358743 10-000f: i2c_wr: writing register 0x21c from 0xf failed
[ 90.078765] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 90.090261] tc358743 10-000f: i2c_wr: writing register 0x220 from 0xf failed
[ 91.118779] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 91.130418] tc358743 10-000f: i2c_wr: writing register 0x224 from 0xf failed
[ 92.158791] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 92.170372] tc358743 10-000f: i2c_wr: writing register 0x228 from 0xf failed
[ 93.198809] i2c-bcm2835 fe205000.i2c: i2c transfer timed out
[ 93.210184] tc358743 10-000f: i2c_wr: writing register 0x22c from 0xf failed
To reproduce
Set up Auvidea B101 with kernel 4.4.35, run any capture software that supports DV-timings (https://github.com/pikvm/ustreamer, yavta, etc) and stop it.
Expected behaviour
No crashes when closing the device file
Actual behaviour
Subj
System
- Which model of Raspberry Pi? e.g. Pi3B+, PiZeroW
4B 1Gb - Which OS and version (
cat /etc/rpi-issue
)?
Arch Linux ARM (uses the kernel from this repo). - Which firmware version (
vcgencmd version
)?
May 1 2020 17:56:42
Copyright (c) 2012 Broadcom
version 688a8f8f3d84e788f07f53c93693e1705f68c407 (clean) (release) (start_x)
- Which kernel version (
uname -a
)?
Linux pikvm 5.4.35-1-ARCH #1 SMP PREEMPT Sun May 3 21:53:42 UTC 2020 armv7l GNU/Linux
Logs
Attached kernel log from tty.
Just I2C errors: log1.txt
MMC crash: log2.txt