Vring interrupt problems while using PRU on Kernel 6.10, with PSSP > 6.2.0

I know that beaglebone dropped support of the Yocto project years ago, but any insight on the following is appreciated:

  • I noticed on my current runtime environment (kernel 6.1 with Yocto Scarthgap), that the vring can’t be found. I assume this is because there is a device tree I am missing, or something within one of the am33*.dtsi files that isn’t being included. The meta-ti layer that I am working with pulls the device tree files from git://github.com/beagleboard/linux.git with the tag v6.1.80-ti-r34.
[  326.608055] pm33xx pm33xx: PM: Unable to allocate memory from ocmcram
[  326.615916] pru-rproc 4a338000.pru: error -ENXIO: IRQ vring not found
[  326.625798] pm33xx: probe of pm33xx failed with error -12
[  326.642028] remoteproc remoteproc2: unable to get vring interrupt, status = -6
[  326.665949] remoteproc remoteproc2: can't start rproc 4a338000.pru: -6
[  326.682446] remoteproc remoteproc2: Boot failed: -6
[ 2275.896399] remoteproc remoteproc1: powering up 4a334000.pru
[ 2275.957828] remoteproc remoteproc1: Booting fw image am335x-pru0-fw, size 45548
[ 2275.977184] pru-rproc 4a334000.pru: error -ENXIO: IRQ vring not found
[ 2275.993707] remoteproc remoteproc1: unable to get vring interrupt, status = -6
[ 2276.018668] remoteproc remoteproc1: can't start rproc 4a334000.pru: -6
[ 2276.034838] remoteproc remoteproc1: Boot failed: -6
[ 2700.398555] remoteproc remoteproc1: powering up 4a334000.pru
[ 2700.406259] remoteproc remoteproc1: Booting fw image PRU_RPMsg_Echo_Interrupt0.out, size 73032
[ 2700.430017] pru-rproc 4a334000.pru: error -ENXIO: IRQ vring not found
[ 2700.453286] remoteproc remoteproc1: unable to get vring interrupt, status = -6
[ 2700.473398] remoteproc remoteproc1: can't start rproc 4a334000.pru: -6
[ 2700.489655] remoteproc remoteproc1: Boot failed: -6

This kinda smells like we are missing a kernel config option…

Regards,

Thanks for the prompt reply. I have the following built in / set as a module:

Symbol: VIRTIO [=y]                                                                                                                                     │  
  │ Type  : tristate                                                                                                                                        │  
  │ Defined at drivers/virtio/Kconfig:5                                                                                                                     │  
  │ Selects: VIRTIO_ANCHOR [=y]                                                                                                                             │  
  │ Selected by [y]:                                                                                                                                        │  
  │   - REMOTEPROC [=y] && HAS_DMA [=y]                                                                                                                     │  
  │ Selected by [m]:                                                                                                                                        │  
  │   - VIRTIO_CONSOLE [=m] && TTY [=y]                                                                                                                     │  
  │   - VIRTIO_MMIO [=m] && VIRTIO_MENU [=y] && HAS_IOMEM [=y] && HAS_DMA [=y]                                                                              │  
  │   - RPMSG_VIRTIO [=m] && HAS_DMA [=y]                                                                                                                   │  
  │   - VIRTIO_FS [=m] && FUSE_FS [=y]                                                                                                                      │  
  │ Selected by [n]:                                                                                                                                        │  
  │   - CAIF_VIRTIO [=n] && NETDEVICES [=y] && CAIF_DRIVERS [=n] && CAIF [=n] && HAS_DMA [=y]                                                               │  
  │   - I2C_VIRTIO [=n] && I2C [=y] && HAS_IOMEM [=y]                                                                                                       │  
  │   - DRM_VIRTIO_GPU [=n] && HAS_IOMEM [=y] && DRM [=y] && VIRTIO_MENU [=y] && MMU [=y]                                                                   │  
  │   - VIRTIO_PCI [=n] && VIRTIO_MENU [=y] && PCI [=n]                                                                                                     │  
  │   - VIRTIO_VDPA [=n] && VIRTIO_MENU [=y] && VDPA [=n]

I know I have the following on my build:

Module                  Size  Used by
virtio_rpmsg_bus       24576  0
rpmsg_ns               20480  1 virtio_rpmsg_bus
rpmsg_core             16384  2 rpmsg_ns,virtio_rpmsg_bus
snd_soc_simple_card    24576  0
snd_soc_simple_card_utils    24576  1 snd_soc_simple_card
snd_soc_core          188416  2 snd_soc_simple_card_utils,snd_soc_simple_card
pru_rproc              28672  0
irq_pruss_intc         20480  0
snd_pcm_dmaengine      16384  1 snd_soc_core
snd_pcm               106496  3 snd_pcm_dmaengine,snd_soc_simple_card_utils,snd_soc_core
snd_timer              36864  1 snd_pcm
snd                    73728  3 snd_timer,snd_soc_core,snd_pcm
soundcore              16384  1 snd
pruss                  20480  1 pru_rproc
pm33xx                 20480  0
mcp251xfd              49152  0
c_can_platform         16384  0
c_can                  24576  1 c_can_platform
can_dev                36864  2 mcp251xfd,c_can
wkup_m3_ipc            20480  1 pm33xx
cpufreq_dt             20480  0
evdev                  24576  1
cfg80211              720896  0
nfnetlink              20480  2

So here’s TI’s config, around that same timeframe… ti-linux-kernel-dev/patches/ti_sdk_release_defconfig at ti-linux-6.1.y · RobertCNelson/ti-linux-kernel-dev · GitHub

Here’s the commit at added vring support to remoteproc: Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - ti-linux-kernel/ti-linux-kernel.git/commit (in the ti-6.1.x branch)

Just to confirm, this doesn’t relate to ARM: dts: am335x: Add PRU system events for virtio · beagleboard/BeagleBoard-DeviceTrees@bb8ae29 · GitHub?

Is there another device tree overlay that I can add? Should I not be using linux/arch/arm/configs/bb.org_defconfig at v6.1.80-ti-r34 · beagleboard/linux · GitHub?

That’s from v5.10.x, but yes am33xx-l4.dtsi would be included in the build…

In 6.1.x, pru interrupt is here: src/arm/ti/omap/am33xx-l4.dtsi · v6.1.x-Beagle · BeagleBoard.org / BeagleBoard-DeviceTrees · GitLab

okay, that irq section hasn’t changed since it went mainline… Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - ti-linux-kernel/ti-linux-kernel.git/commit

Is their a fix for missing vring for kernel version 6.6 on BBAI64? I had a post a few days ago on the same subject where I noticed that the pru interrupts are not in the device tree.