[Openpvrsgx-devgroup] trying to get SGX 1.14 running on OMAP3530 (SGX530-121)

H. Nikolaus Schaller hns at goldelico.com
Fri Nov 22 21:10:07 CET 2019


> Am 21.11.2019 um 18:58 schrieb Tony Lindgren <tony at atomide.com>:
> * H. Nikolaus Schaller <hns at goldelico.com> [191121 08:15]:
>> See: https://youtu.be/DDAEnDMVV3U
>> and compare: https://www.youtube.com/watch?v=G_QGU6e3eyA (I forgot to make it public)
>> My trick to return "tilcdc" by drmGetVersion() worked.
> Hey that's great!

I now tried to repeat this on the OMAP3530 based 600 MHz OpenPandora (the 1GHz variant has DM3730).

Unfortunateley only with partial success:

root at letux:~# modprobe pvrsrvkm_omap3_sgx530_121
[14727.330749] pvrsrvkm 50000000.gpu: Enabling quirks 00000000
[14727.362548] gsSGXDeviceMap.sRegsSysPBase.uiAddr = 50000000
[14727.370330] gsSGXDeviceMap.sRegsCpuPBase.uiAddr = 50000000
[14727.376098] gsSGXDeviceMap.ui32RegsSize = 00003fff
[14727.398681] [drm] Initialized pvr 1.14.3699939 20110701 for 50000000.gpu on minor 0
root at letux:~# pvrsrvctl --start --no-module
[14761.138275] drm_version: maj=1 min=14 patch=3699939 name=pvr date=20110701 desc=Imagination Technologies PVR DRM
[14761.149475] drm_version: maj=1 min=14 patch=3699939 name=pvr date=20110701 desc=Imagination Technologies PVR DRM
[14761.163604] PVR_K: UM DDK-(3699939) and KM DDK-(3699939) match. [ OK ]
[14761.202514] PVR_K: (FAIL) SGXInit: Incompatible HW core rev (10201) and SW core rev (10205).
[14761.211761] PVR_K:(Error): PVRSRVFinaliseSystem: Failed PVRSRVDevInitCompatCheck call (device index: 0)
PVR:(Error): PVRSRVInitSrvDisconnect: KM returne[14761.226531] PVR_K:(Error): BridgedDispatchKM: Initialisation failed.  Driver unusable.
d 26 [0, ]
PVR:(Error): PVRSRVBridgeCall: Failed to access device.  Function ID:3223086862 (strerror returns no value.). [0, ]
PVR:(Error): SrvInit: PVRSRVInitSrvDisconnect failed (26). See srvkm log for details. [0, ]
pvrsrvctl: SrvInit failed (already initialized?) (err=PVRSRV_ERROR_BUILD_MISMATCH)
root at letux:~# 

I interpret this as
* our sgx integration is correct
* the kernel driver works
* but the uKernel inside the pvrsrvctl finds that it does not want to run on this hardware revision

If the latter is true, it will be really difficult since AFAIK there was never a DDK1.14_UM for
the omap3530 with sgx530-121 and the older existing DDK1.9 uses a different user-space code architecture
(e.g. pvrsrvinit instead of pvrsrvctl) so that we can not easily reuse their blobs.

What we could try is to fake the HW core rev (10201) reported by the kernel driver, but I have
not seen some ioctl() or similar in an strace. It may be that the libs or the uKernel check
some revision register by directly reading the SGX530 (after mmap).

The good news is that we now have a stable and repeatable setup for a plethora of device variants
and can much easier analyse and compare with others.


More information about the openpvrsgx-devgroup mailing list