[Letux-kernel] SGX working on BeagleBone...

H. Nikolaus Schaller hns at goldelico.com
Mon Oct 14 08:33:44 CEST 2019


> Am 12.10.2019 um 22:11 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
> Hi,
> I managed to hack the SD card image that I made according to
> 
> http://blog.0xpebbles.org/PowerVR-SGX-on-the-beaglebone-black-in-2019
> 
> to run the LetuxOS kernel with the described pvr setup.
> 
> Required was:
> * remove bootargs.scr and some unneeded dtbs
> * rename the beaglebone.dtb and zImage to the kernel names expected by the U-Boot
> * move away all /lib/firmware/*.dtbo overlays
> 
> I have even written a small script that can copy things back and forward to
> switch between both kernels (ti-4.4 and our letux kernel).
> 
> Then I could boot again into the Debian system.
> 
> But now using my own pvrsrvkm built from [1] and the setup described
> of the tutorial, I could successfully download the uKernel and run
> gles1test1. Unfortunately without LCD cape working so I can't make
> a video yet.
> 
> root at arm:~# pvrsrvctl --start --no-module
> [  500.690679] PVR_K: UM DDK-(3699939) and KM DDK-(3699939) match. [ OK ]
> rroot at arm:~# cat /proc/pvr/version 
> Version SGX_DDK sgxddk MAIN at 3699939 (release) omap_sgx
> System Version String: SGX revision = 125
> root at arm:~# 
> 
> And I checked that we are really running our pvrsrvkm:
> 
> root at arm:~# lsmod|fgrep pvr
> pvrsrvkm_omap_am335x_sgx530_125   290816  0
> drm                   356352  4 pvrsrvkm_omap_am335x_sgx530_125,tilcdc,drm_kms_helper
> root at arm:~# dmesg|fgrep pvr
> [   26.928017] pvrsrvkm_omap_am335x_sgx530_125: module is from the staging directory, the quality is unknown, you have been warned.
> [   27.527189] [drm] Initialized pvr 1.14.3699939 20110701 for 56000000.sgx on minor 1
> root at arm:~# uname -a
> Linux arm 5.4.0-rc2-letux+ #1198 SMP PREEMPT Sat Oct 12 18:20:32 CEST 2019 armv7l GNU/Linux
> root at arm:~# 
> 
> This means:
> * the kernel module is ok!
> * the clock and reset and sysc stuff from linux-next and beyond is ok!
> * there is something incompatible or broken within our user-space setup
>  so that ours works only on OMAP5/Pyra for unknown reasons
> * the same kernel driver tree can be used to build kernel modules for am335x and omap5
> * it is no longer unlikely that this setup also works on omap3/gta04 :)
> 
> Next, I have to find the differences in user-space setup to get a better understanding
> and find out if I can make a full LetuxOS build work on am335x and omap5. If that works
> I can try on omap3...

Found it: there are separate user-space variants of the libs and binaries
for ti335x, ti437x and jacinto6evm. The first seems to be for sgx530, the second
for sgx540 and the last for sgx544 cores. This would be reasonable since
those are different sgx revisions and likely need different uKernel and libraries.

With this in mind I have reworked the user-space setup into a new debian package
that I have attached. It just clones the git repo for omap5-sgx-ddk-um-linux
and does a make install for the right version.

With this I was able to start the pvrsrvctl --start --no-module without problems
on BeagleBoneBlack - and it also works on the GTA04.

There are just some memory allocation issues when trying to run gles1test1
so there is still no video...

root at letux:~# pvrsrvctl --start --no-module
[ 4466.006683] PVR_K: UM DDK-(3699939) and KM DDK-(3699939) match. [ OK ]
root at letux:~# cat /proc/pvr/version 
Version SGX_DDK sgxddk MAIN at 3699939 (release) omap_sgx
System Version String: SGX revision = 125
root at letux:~# uname -a
Linux letux 5.4.0-rc2-letux+ #1198 SMP PREEMPT Sat Oct 12 18:20:32 CEST 2019 armv7l GNU/Linux
root at letux:~# cat /sys/devices/soc0/machine
OMAP3630/DM3730
root at letux:~# gles 
gles1test1  gles2test1  
root at letux:~# gles1test1 
[ 4478.031799] PVR_K:(Error): DoMapToUser: Error - vmf_insert_mixed failed (100)
PVR:(Error): PVRPMapKMem: mmap(2) failed: Mapping handle=0xf: Tܿ7p% [0, ]
PVR:(Error): WSEGL_InitialiseDisplay: Failed to open primary device: No such file or directory [0, ]
'eglInitialize' returned egl error 'EGL_NOT_INITIALIZED' (0x3001)
root at letux:~#

Anyways, this is a good indication that we can run the 1.14 PVR also on OMAP3 even
if not officially supported. Maybe the driver needs some hack to help with vmf_insert_mixed.

BR,
Nikolaus

-------------- next part --------------
A non-text attachment was scrubbed...
Name: letux-pvrsgx-1.14_0.20191013222050_all.deb
Type: application/x-deb
Size: 2096 bytes
Desc: not available
URL: <http://lists.goldelico.com/pipermail/letux-kernel/attachments/20191014/8323a83e/attachment.bin>
-------------- next part --------------





More information about the Letux-kernel mailing list