This is a known problem. Back on Oct 6, I wrote the following:

====
I have pruss_remoteproc/virtio_rpmsg_bus working on V4.1 when I boot for the 
first time. However, when I uninstall the KO with rmmod -f pruss_remoteproc and 
then install the KO with modprobe pruss_remoteproc, I get a kernel exception. 

Investigating further, I found that _omap_device_notifier_call sets 
pdev->archdata.od = NULL when the pruss_remoteproc is uninstalled, but when I 
install the pruss_remoteproc, pruss_probe tries to run 
omap_device_deassert_hardreset which references archdata.od which is is now 
NULL. 

Looking at TI’s V3.14 kernel, it does not set archdata.od = NULL, so I can 
uninstall and install the KO without issue. 

In the V4.1 code, if I comment out lines 57 & 60 [1], pruss_remoteproc 
uninstalls and installs without error.

My question is how do I recreate archdata.od before pruss_probe executes 
omap_device_deassert_hardreset? Given that this patch was authored by Pantelis, 
I figured you would be the best person to answer my question.

[1] 
https://github.com/RobertCNelson/linux-dev/blob/master/patches/bbb_overlays/0006-arm-omap-Proper-cleanups-for-omap_device.patch
 
<https://github.com/RobertCNelson/linux-dev/blob/master/patches/bbb_overlays/0006-arm-omap-Proper-cleanups-for-omap_device.patch>

====

Unfortunately, Pantelis never responded so I have no idea how to fix this issue.

Regards,
John




> On Feb 8, 2016, at 1:04 PM, Jelle Spijker <[email protected]> wrote:
> 
> Hello all,
> 
> first post hoping you can help me.
> 
> I have finally got my PRU working on my BBB Debian 4.1.17-ti-rt-r46.
> 
> I used the PRU_gpioToggle example from 
> https://git.ti.com/pru-software-support-package/pru-software-support-package/trees/master/examples/am335x/PRU_gpioToggle
>  which I compiled with CCS6.1
> 
> I copied the PRU_gpioToggle.out to the BBB in /lib/firmware/ and I made an 
> symbolic link as /lib/firmware/am335x-pru0-fw
> 
> my uEnv.txt is as follows:
> uname_r=4.1.17-ti-rt-r46
> dtb=am335x-boneblack-overlay.dtb
> cape_enable=bone_capemgr.enable_partno=cape-univ-audio,cape-univ-emmc,cape-univ-hdmi
> 
> When I start up the the firmware is loaded onto the PRU:
> 
> [   20.181078] pruss-rproc 4a300000.pruss: 8 PRU interrupts parsed
> [   20.181178] pruss-rproc 4a300000.pruss: memory    dram0: pa 0x4a300000 
> size 0x2000 va e0b04000
> [   20.181206] pruss-rproc 4a300000.pruss: memory    dram1: pa 0x4a302000 
> size 0x2000 va e0b08000
> [   20.181230] pruss-rproc 4a300000.pruss: memory shrdram2: pa 0x4a310000 
> size 0x3000 va e0b0c000
> [   20.181253] pruss-rproc 4a300000.pruss: memory     intc: pa 0x4a320000 
> size 0x2000 va e0b10000
> [   20.181275] pruss-rproc 4a300000.pruss: memory      cfg: pa 0x4a326000 
> size 0x2000 va e0b14000
> [   20.228354] pruss-rproc 4a300000.pruss: creating platform devices for PRU 
> cores
> [   20.307883] pru-rproc 4a334000.pru0: memory     iram: pa 0x4a334000 size 
> 0x2000 va e0b18000
> [   20.307951] pru-rproc 4a334000.pru0: memory  control: pa 0x4a322000 size 
> 0x400 va e09fe000
> [   20.307977] pru-rproc 4a334000.pru0: memory    debug: pa 0x4a322400 size 
> 0x100 va e0b02400
> [   20.319303]  remoteproc1: 4a334000.pru0 is available
> [   20.353277]  remoteproc1: Note: remoteproc is still under development and 
> considered experimental.
> [   20.362293]  remoteproc1: THE BINARY FORMAT IS NOT YET FINALIZED, and 
> backward compatibility isn't yet guaranteed.
> [   20.475842] pru-rproc 4a334000.pru0: booting the PRU core manually
> [   20.482081]  remoteproc1: powering up 4a334000.pru0
> [   20.517432]  remoteproc1: Booting fw image am335x-pru0-fw, size 33132
> [   20.566849]  remoteproc1: starting PRU0: entry-point = 0x0
> [   20.566872]  remoteproc1: remote processor 4a334000.pru0 is now up
> [   20.602059] pru-rproc 4a334000.pru0: PRU rproc node 
> /ocp/pruss@4a300000/pru@4a334000 probed successfully
> [   20.649346] pru-rproc 4a338000.pru1: memory     iram: pa 0x4a338000 size 
> 0x2000 va e0b30000
> [   20.649419] pru-rproc 4a338000.pru1: memory  control: pa 0x4a324000 size 
> 0x400 va e0b34000
> [   20.649460] pru-rproc 4a338000.pru1: memory    debug: pa 0x4a324400 size 
> 0x100 va e0b36400
> [   20.655799]  remoteproc2: 4a338000.pru1 is available
> [   20.660810]  remoteproc2: Note: remoteproc is still under development and 
> considered experimental.
> [   20.706800]  remoteproc2: THE BINARY FORMAT IS NOT YET FINALIZED, and 
> backward compatibility isn't yet guaranteed.
> [   20.729074]  remoteproc2: Direct firmware load for am335x-pru1-fw failed 
> with error -2
> [   20.737528]  remoteproc2: failed to load am335x-pru1-fw
> [   20.743186] pru-rproc 4a338000.pru1: booting the PRU core manually
> [   20.749404]  remoteproc2: powering up 4a338000.pru1
> [   20.755598]  remoteproc2: Direct firmware load for am335x-pru1-fw failed 
> with error -2
> [   20.763983]  remoteproc2: request_firmware failed: -2
> [   20.769068] pru-rproc 4a338000.pru1: rproc_boot failed
> [   20.775630]  remoteproc2: releasing 4a338000.pru1
> [   20.780579] pru-rproc: probe of 4a338000.pru1 failed with error -2
> 
> And the led begins to blink when I enable the pin as pruout
> sudo config-pin 8_28 pruout
> 
> Now it should be possible to unload the pru code en point the symbolic link 
> /lib/firmware/am335x-pru0-fw towards a new block and reload it again
> 
> but when I'm trying to reload my pru with
> sudo rmmod -f pruss_remoteproc.ko
> sudo insmod /drivers/remoteproc/pruss_remoteproc.ko
> 
> I get the following output in my dmesg
> [  476.862186] Disabling lock debugging due to kernel taint
> [  476.868205] pru-rproc 4a334000.pru0: pru_rproc_remove: removing rproc 
> 4a334000.pru0
> [  476.875941] pru-rproc 4a334000.pru0: stopping the manually booted PRU core
> [  476.890699]  remoteproc1: stopping PRU0
> [  476.890752]  remoteproc1: stopped remote processor 4a334000.pru0
> [  476.900523]  remoteproc1: releasing 4a334000.pru0
> [  476.917068] pruss-rproc 4a300000.pruss: remove platform devices for PRU 
> cores
> [  517.877498] pruss-rproc 4a300000.pruss: 8 PRU interrupts parsed
> [  517.877733] pruss-rproc 4a300000.pruss: memory    dram0: pa 0x4a300000 
> size 0x2000 va e0ccc000
> [  517.877819] pruss-rproc 4a300000.pruss: memory    dram1: pa 0x4a302000 
> size 0x2000 va e0cd0000
> [  517.877897] pruss-rproc 4a300000.pruss: memory shrdram2: pa 0x4a310000 
> size 0x3000 va e0cd4000
> [  517.877972] pruss-rproc 4a300000.pruss: memory     intc: pa 0x4a320000 
> size 0x2000 va e0cd8000
> [  517.878047] pruss-rproc 4a300000.pruss: memory      cfg: pa 0x4a326000 
> size 0x2000 va e0cdc000
> [  517.878124] Unable to handle kernel NULL pointer dereference at virtual 
> address 0000000c
> [  517.896746] pgd = dce20000
> [  517.899515] [0000000c] *pgd=00000000
> [  517.903170] Internal error: Oops: 5 [#1] PREEMPT SMP THUMB2
> [  517.903276] Modules linked in: pruss_remoteproc(+) usb_f_ecm g_ether 
> usb_f_rndis u_ether libcomposite omap_rng rng_core snd_soc_davinci_mcasp 
> snd_soc_edma spi_omap2_mcspi uio_pdrv_genirq uio [last unloaded: 
> pruss_remoteproc]
> [  517.903304] CPU: 0 PID: 828 Comm: insmod Tainted: G  R             
> 4.1.17-ti-rt-r46 #1
> [  517.903315] Hardware name: Generic AM33XX (Flattened Device Tree)
> [  517.903330] task: dc1a1680 ti: ddd90000 task.ti: ddd90000
> [  517.903380] PC is at omap_device_deassert_hardreset+0x10/0x38
> [  517.903442] LR is at pruss_probe+0x27a/0x470 [pruss_remoteproc]
> [  517.903462] pc : [<c0024bac>]    lr : [<bf893e53>]    psr: 60010133
> sp : ddd91cd0  ip : 00000000  fp : ddd91d20
> [  517.903475] r10: 00000005  r9 : c0b68e80  r8 : dc205e24
> [  517.903488] r7 : dda08010  r6 : dda08000  r5 : 00000000  r4 : dc205e10
> [  517.903501] r3 : c0024b9d  r2 : dc8ba311  r1 : c094126c  r0 : dda08000
> [  517.903520] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA Thumb  Segment 
> user
> [  517.903535] Control: 50c5387d  Table: 9ce20019  DAC: 00000015
> [  517.903549] Process insmod (pid: 828, stack limit = 0xddd90218)
> [  517.903563] Stack: (0xddd91cd0 to 0xddd92000)
> [  517.903585] 1cc0:                                     dc205e10 00000008 
> dda08000 bf893e53
> [  517.903610] 1ce0: dc205e38 00002000 e0cdc000 c0175873 df93a7a4 bf895514 
> bf895680 dc205e10
> [  517.903635] 1d00: 00000008 c0b68e80 dda07fa0 bf8951f8 bf895200 bf895208 
> bf895214 bf89521c
> [  517.903660] 1d20: c0b3b384 dda08010 dda08010 bf895430 fffffdfb c0cf3ff0 
> bf895430 00000038
> [  517.903685] 1d40: bf895818 c0464acd c0464a99 dda08010 c0c21ea8 00000000 
> c0cf3fdc c0463613
> [  517.903710] 1d60: c0464cad dda08010 dda08010 bf895430 dda08044 c04637d9 
> bf895430 00000000
> [  517.903735] 1d80: ddc10f88 c0463829 dda08010 00000000 00000001 c04620ef 
> dd8a946c dd9e8bc8
> [  517.903759] 1da0: bf895430 ddc51100 00000000 c0bde7e8 bf898001 c0462e77 
> bf895238 bf895430
> [  517.903784] 1dc0: c0b49148 bf895430 c0b49148 c0b4d960 ddc104c0 c0463e19 
> 00000000 c0b4d960
> [  517.903809] 1de0: c0b49148 bf898011 c0b4d960 c00096bd dfda0218 c011c1b7 
> 00000000 c011c1b7
> [  517.903833] 1e00: c0b4a270 c0033179 dddd6a40 0040003e 00000001 00000001 
> c0b42e60 000000d0
> [  517.903858] 1e20: dd801e40 c011cd25 c06baa23 c011cd25 0040003f dddd67c0 
> c0110a31 c0b4a270
> [  517.903883] 1e40: dd801e40 dc8ba311 0040003e bf8957d0 bf8957d0 ddc10240 
> 00000001 00000001
> [  517.903908] 1e60: 223ef09c ddc10f88 bf895818 c06baa4d 00000001 00000001 
> ddd91f58 bf8957d0
> [  517.903933] 1e80: ddc10f80 c0096b53 bf8957dc 00007fff c0094731 c01287e5 
> c0b49148 bf895818
> [  517.903957] 1ea0: 7f655e80 bf895958 c0b491ec 00000000 00000103 c0c1d5d0 
> 00000000 c012c5c3
> [  517.903980] 1ec0: 00000000 00000000 00000000 00000000 00000000 00000000 
> 00000000 00000000
> [  517.904004] 1ee0: 00000000 00000000 6e72656b 00006c65 00000000 00000000 
> 00000000 00000000
> [  517.904027] 1f00: 00000000 00000000 00000000 00000000 00000000 00000000 
> 00000000 00000000
> [  517.904052] 1f20: 00000000 dc8ba311 00000038 00000000 00000003 7f655e80 
> 0000017b c000ea44
> [  517.904076] 1f40: ddd90000 00000000 00000000 c00971cb ddd91f5c 00000000 
> e0cc1000 00006b74
> [  517.904101] 1f60: e0cc755c e0cc4847 e0cc59fc 00002968 000033c8 bf895680 
> 0000000e 00000000
> [  517.904125] 1f80: 00000025 00000026 0000001e 00000019 00000015 00000000 
> 4d7c1300 7f651cdc
> [  517.904149] 1fa0: b6ff5f10 c000e8a1 4d7c1300 7f651cdc 00000003 7f655e80 
> 00000000 00000002
> [  517.904174] 1fc0: 4d7c1300 7f651cdc b6ff5f10 0000017b 00000000 7f651cdc 
> 7f668000 00000000
> [  517.904198] 1fe0: bec01530 bec01520 7f64c6c3 b6f70972 80000030 00000003 
> 00000000 00000000
> [  517.904273] [<c0024bac>] (omap_device_deassert_hardreset) from 
> [<bf893e53>] (pruss_probe+0x27a/0x470 [pruss_remoteproc])
> [  517.904361] [<bf893e53>] (pruss_probe [pruss_remoteproc]) from 
> [<c0464acd>] (platform_drv_probe+0x35/0x74)
> [  517.904401] [<c0464acd>] (platform_drv_probe) from [<c0463613>] 
> (driver_probe_device+0x177/0x314)
> [  517.904437] [<c0463613>] (driver_probe_device) from [<c0463829>] 
> (__driver_attach+0x51/0x54)
> [  517.904470] [<c0463829>] (__driver_attach) from [<c04620ef>] 
> (bus_for_each_dev+0x43/0x64)
> [  517.904503] [<c04620ef>] (bus_for_each_dev) from [<c0462e77>] 
> (bus_add_driver+0xe3/0x170)
> [  517.904534] [<c0462e77>] (bus_add_driver) from [<c0463e19>] 
> (driver_register+0x39/0x8c)
> [  517.904593] [<c0463e19>] (driver_register) from [<bf898011>] 
> (pruss_init+0x10/0x63 [pruss_remoteproc])
> [  517.904655] [<bf898011>] (pruss_init [pruss_remoteproc]) from [<c00096bd>] 
> (do_one_initcall+0xa5/0x194)
> [  517.904701] [<c00096bd>] (do_one_initcall) from [<c06baa4d>] 
> (do_init_module+0x49/0x13c)
> [  517.904752] [<c06baa4d>] (do_init_module) from [<c0096b53>] 
> (load_module+0x13b7/0x18ec)
> [  517.904791] [<c0096b53>] (load_module) from [<c00971cb>] 
> (SyS_finit_module+0x4f/0x70)
> [  517.904832] [<c00971cb>] (SyS_finit_module) from [<c000e8a1>] 
> (ret_fast_syscall+0x1/0x4c)
> [  517.904860] Code: 4605 b108 f8d0 51ec (7b2b) 460e
> [  518.588108] ---[ end trace 0000000000000002 ]---
> 
> Does anybody get any idea how to reload the pru using remotepro?
> 
> 
> -- 
> For more options, visit http://beagleboard.org/discuss 
> <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 [email protected] 
> <mailto:[email protected]>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to