Hello, I’m seeing a strange problem with rpmsg on BBB after installing AM3358 Debian 10.3 2020-04-06 4GB SD IoT.
$ cat /proc/version Linux version 4.19.94-ti-r42 (voodoo@x3-am57xx-beagle-x15-2gb) (gcc version 8.3.0 (Debian 8.3.0-6)) #1buster SMP PREEMPT Tue Mar 31 19:38:29 UTC 2020 $ lsb_release -d Description: Debian GNU/Linux 10 (buster) Reproducible using this hello world rpmsg example: https://github.com/tickbw/Beaglebone-PRU-RPMsg-HelloWorld After starting the PRUs: sudo sh -c "echo start > /sys/class/remoteproc/remoteproc0/state" sudo sh -c "echo start > /sys/class/remoteproc/remoteproc1/state" Running the hello userspace app an arbitrary number of times is successful. Everything seems fine. $ ./hello Message received from PRU_0: hello world_0 Message received from PRU_1: hello world_1 15 seconds later, and repeating every 15 seconds thereafter, the kernel removes and adds the PRU (as remoteproc 3 and 4 this time). This repeats indefinitely. Any further attempts to run hello results in a kernel oops. If the hello app is never run, this still happens. [ 360.884172] remoteproc remoteproc1: remote processor 4a338000.pru is now up [ 376.013704] pru-rproc 4a338000.pru: pru_rproc_remove: removing rproc 4a338000.pru [ 376.030081] pru-rproc 4a334000.pru: pru_rproc_remove: removing rproc 4a334000.pru [ 376.111078] remoteproc remoteproc3: 4a334000.pru is available [ 376.128645] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully [ 376.146324] remoteproc remoteproc4: 4a338000.pru is available [ 376.165866] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully [ 391.758087] pru-rproc 4a338000.pru: pru_rproc_remove: removing rproc 4a338000.pru [ 391.772782] remoteproc remoteproc4: releasing 4a338000.pru [ 391.785913] pru-rproc 4a334000.pru: pru_rproc_remove: removing rproc 4a334000.pru [ 391.807367] remoteproc remoteproc3: releasing 4a334000.pru [ 391.867104] remoteproc remoteproc3: 4a334000.pru is available [ 391.882393] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully [ 391.903894] remoteproc remoteproc4: 4a338000.pru is available [ 391.919233] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully Maybe a red herring, but I understand virtio_rpmsg_bus:rpmsg_send_offchannel_raw() has a 15 second timeout if it cannot obtain a buffer. This seems unlikely as the hello program runs fine, many times, until 15 seconds elapses. If the PRU firmware never calls rpmsg_init() or other rpmsg functions, then it happily runs forever. I never saw this problem on Debian 8.6 and kernel 4.4.36-ti-r72. Any ideas? Output of /opt/scripts/tools.version.sh, lsmod, and full dmesg attached. Brian -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/abc2b263-7e3f-44aa-bc79-249598afff91%40googlegroups.com.
dmesg
Description: Binary data
lsmod
Description: Binary data
git:/opt/scripts/:[b39ec679648a6be8f25f48bd1c9784c1fc5a0c46] eeprom:[A335BNLT00C03917BBBK2102] model:[TI_AM335x_BeagleBone_Black] dogtag:[BeagleBoard.org Debian Buster IoT Image 2020-04-06] bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot 2019.04-00002-g07d5700e21]:[location: dd MBR] UBOOT: Booted Device-Tree:[am335x-boneblack-uboot.dts] UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0] UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0] kernel:[4.19.94-ti-r42] /boot/uEnv.txt Settings: uboot_overlay_options:[enable_uboot_overlays=1] uboot_overlay_options:[disable_uboot_overlay_video=1] uboot_overlay_options:[disable_uboot_overlay_audio=1] uboot_overlay_options:[disable_uboot_overlay_wireless=1] uboot_overlay_options:[disable_uboot_overlay_adc=1] uboot_overlay_options:[uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-19-TI-00A0.dtbo] pkg check: to individually upgrade run: [sudo apt install --only-upgrade <pkg>] pkg:[bb-cape-overlays]:[4.14.20200430.0-0~buster+20200430] pkg:[bb-wl18xx-firmware]:[1.20200420.1-0~buster+20200424] pkg:[kmod]:[26-1] WARNING:pkg:[librobotcontrol]:[NOT_INSTALLED] pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305] groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal bluetooth netdev i2c gpio pwm eqep remoteproc admin spi iio docker tisdk weston-launch xenomai cloud9ide] cmdline:[console=ttyO0,115200n8 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait] dmesg | grep remote [ 27.011803] remoteproc remoteproc0: 4a334000.pru is available [ 27.263688] remoteproc remoteproc1: 4a338000.pru is available [ 29.746981] remoteproc remoteproc2: wkup_m3 is available [ 29.821887] remoteproc remoteproc2: powering up wkup_m3 [ 29.840360] remoteproc remoteproc2: Booting fw image am335x-pm-firmware.elf, size 217168 [ 29.870477] remoteproc remoteproc2: remote processor wkup_m3 is now up [ 360.412716] remoteproc remoteproc0: powering up 4a334000.pru [ 360.429148] remoteproc remoteproc0: Booting fw image am335x-pru0-fw, size 74544 [ 360.467667] remoteproc remoteproc0: registered virtio0 (type 7) [ 360.480112] remoteproc remoteproc0: remote processor 4a334000.pru is now up [ 360.748696] remoteproc remoteproc1: powering up 4a338000.pru [ 360.767629] remoteproc remoteproc1: Booting fw image am335x-pru1-fw, size 74544 [ 360.868298] remoteproc remoteproc1: registered virtio1 (type 7) [ 360.884172] remoteproc remoteproc1: remote processor 4a338000.pru is now up [ 376.111078] remoteproc remoteproc3: 4a334000.pru is available [ 376.146324] remoteproc remoteproc4: 4a338000.pru is available [ 391.772782] remoteproc remoteproc4: releasing 4a338000.pru [ 391.807367] remoteproc remoteproc3: releasing 4a334000.pru [ 391.867104] remoteproc remoteproc3: 4a334000.pru is available [ 391.903894] remoteproc remoteproc4: 4a338000.pru is available [ 407.522829] remoteproc remoteproc4: releasing 4a338000.pru [ 407.556821] remoteproc remoteproc3: releasing 4a334000.pru [ 407.621724] remoteproc remoteproc3: 4a334000.pru is available [ 407.661341] remoteproc remoteproc4: 4a338000.pru is available [ 423.437139] remoteproc remoteproc4: releasing 4a338000.pru [ 423.487267] remoteproc remoteproc3: releasing 4a334000.pru [ 423.583396] remoteproc remoteproc3: 4a334000.pru is available [ 423.638806] remoteproc remoteproc4: 4a338000.pru is available dmesg | grep pru [ 27.011803] remoteproc remoteproc0: 4a334000.pru is available [ 27.130032] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully [ 27.263688] remoteproc remoteproc1: 4a338000.pru is available [ 27.346682] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully [ 360.412716] remoteproc remoteproc0: powering up 4a334000.pru [ 360.429148] remoteproc remoteproc0: Booting fw image am335x-pru0-fw, size 74544 [ 360.437231] pruss 4a300000.pruss: configured system_events[63-0] = 00000000,00030000 [ 360.450547] pruss 4a300000.pruss: configured intr_channels = 0x00000005 host_intr = 0x00000005 [ 360.480112] remoteproc remoteproc0: remote processor 4a334000.pru is now up [ 360.532553] virtio_rpmsg_bus virtio0: creating channel rpmsg-pru addr 0x1e [ 360.543758] rpmsg_pru virtio0.rpmsg-pru.-1.30: new rpmsg_pru device: /dev/rpmsg_pru30 [ 360.748696] remoteproc remoteproc1: powering up 4a338000.pru [ 360.767629] remoteproc remoteproc1: Booting fw image am335x-pru1-fw, size 74544 [ 360.784669] pruss 4a300000.pruss: configured system_events[63-0] = 00000000,000c0000 [ 360.804129] pruss 4a300000.pruss: configured intr_channels = 0x0000000a host_intr = 0x0000000a [ 360.829566] virtio_rpmsg_bus virtio1: creating channel rpmsg-pru addr 0x1f [ 360.840387] rpmsg_pru virtio1.rpmsg-pru.-1.31: new rpmsg_pru device: /dev/rpmsg_pru31 [ 360.884172] remoteproc remoteproc1: remote processor 4a338000.pru is now up [ 376.013704] pru-rproc 4a338000.pru: pru_rproc_remove: removing rproc 4a338000.pru [ 376.030081] pru-rproc 4a334000.pru: pru_rproc_remove: removing rproc 4a334000.pru [ 376.111078] remoteproc remoteproc3: 4a334000.pru is available [ 376.128645] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully [ 376.146324] remoteproc remoteproc4: 4a338000.pru is available [ 376.165866] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully [ 391.758087] pru-rproc 4a338000.pru: pru_rproc_remove: removing rproc 4a338000.pru [ 391.772782] remoteproc remoteproc4: releasing 4a338000.pru [ 391.785913] pru-rproc 4a334000.pru: pru_rproc_remove: removing rproc 4a334000.pru [ 391.807367] remoteproc remoteproc3: releasing 4a334000.pru [ 391.867104] remoteproc remoteproc3: 4a334000.pru is available [ 391.882393] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully [ 391.903894] remoteproc remoteproc4: 4a338000.pru is available [ 391.919233] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully [ 407.507281] pru-rproc 4a338000.pru: pru_rproc_remove: removing rproc 4a338000.pru [ 407.522829] remoteproc remoteproc4: releasing 4a338000.pru [ 407.536023] pru-rproc 4a334000.pru: pru_rproc_remove: removing rproc 4a334000.pru [ 407.556821] remoteproc remoteproc3: releasing 4a334000.pru [ 407.621724] remoteproc remoteproc3: 4a334000.pru is available [ 407.636646] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully [ 407.661341] remoteproc remoteproc4: 4a338000.pru is available [ 407.676667] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully [ 423.411592] pru-rproc 4a338000.pru: pru_rproc_remove: removing rproc 4a338000.pru [ 423.437139] remoteproc remoteproc4: releasing 4a338000.pru [ 423.455813] pru-rproc 4a334000.pru: pru_rproc_remove: removing rproc 4a334000.pru [ 423.487267] remoteproc remoteproc3: releasing 4a334000.pru [ 423.583396] remoteproc remoteproc3: 4a334000.pru is available [ 423.606348] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully [ 423.638806] remoteproc remoteproc4: 4a338000.pru is available [ 423.658131] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully dmesg | grep pinctrl-single [ 0.894952] pinctrl-single 44e10800.pinmux: 142 pins, size 568 dmesg | grep gpio-of-helper [ 0.896211] gpio-of-helper ocp:cape-universal: ready lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub END