[Openpvrsgx-devgroup] Current Status linux_openpvrsgx
Philipp Rossak
embed3d at gmail.com
Thu Apr 23 22:30:55 CEST 2020
Hi,
>>
>> I reworked now the 1.14.3841212 driver and cleaned up the code, but I'm still not able to start the pvrsrvctl since it seems to miss the PDUMP support in the kernel.
>> Do you or anybody else know how to enable it? When I add the defines that are required for pdump I get the following error: "implict declaration of function dbgdrv_ioctl". This call is located in pvr-drv.c
>
> I think it is defined elsewhere:
>
> iMac:master hns$ fgrep dbgdrv_ioctl -R drivers/
> drivers//gpu/drm/pvrsgx/1.14.3699939/eurasia_km/services4/srvkm/env/linux/pvr_drm.c: DRM_IOCTL_DEF_DRV(PVR_DBGDRV, dbgdrv_ioctl, PVR_DRM_RENDER_ALLOW | PVR_DRM_UNLOCKED),
> drivers//gpu/drm/pvrsgx/1.14.3699939/eurasia_km/services4/srvkm/env/linux/pvr_drm.h:IMG_INT dbgdrv_ioctl(struct drm_device *dev, IMG_VOID *arg, struct drm_file *pFile);
> drivers//gpu/drm/pvrsgx/1.14.3699939/eurasia_km/tools/intern/debug/dbgdriv/linux/main.c:long dbgdrv_ioctl(struct file *, unsigned int, unsigned long);
> drivers//gpu/drm/pvrsgx/1.14.3699939/eurasia_km/tools/intern/debug/dbgdriv/linux/main.c: .unlocked_ioctl = dbgdrv_ioctl,
> drivers//gpu/drm/pvrsgx/1.14.3699939/eurasia_km/tools/intern/debug/dbgdriv/linux/main.c:int dbgdrv_ioctl(struct drm_device *dev, IMG_VOID *arg, struct drm_file *pFile)
> drivers//gpu/drm/pvrsgx/1.14.3699939/eurasia_km/tools/intern/debug/dbgdriv/linux/main.c:long dbgdrv_ioctl(struct file *file, unsigned int ioctlCmd, unsigned long arg)
> drivers//gpu/drm/pvrsgx/pvr-drv.c
>
> It looks as if there are multiple definitions in
>
> drivers//gpu/drm/pvrsgx/1.14.3699939/eurasia_km/tools/intern/debug/dbgdriv/linux/main.c
>
> and none is enabled for your setup. Maybe it needs another -D in the Makefile.
>
I was missing all files under tools/intern/debug/dbgdriv in the Makefile.
Afterwards I had some issues due to some missing pointers, but I figured
out, that our driver wrapper is missing the function dbgdrv_init, which
need to be called before PVRCore_Init.
So I have good news now :)
My kernel driver is running now without issues and I'm able to access
now the registers after I run "pvrsrvctl --start --no-module"
So I'm a bit closer with sunxi devices to provide a working demo :)
The next step will be to get a display connected to the driver and see
if the provided test software is running (xeglinfo, xgles1test1, ...).
When I run "services_test" this is failing now with this message:
PVRSRVEnumerateDeviceClass() returns 0 display device(s)
FAIL - PVRSRV_ERROR_NO_DC_DEVICES_FOUND
But I'm expecting this, since some stuff is missing there.
>>
>> I will share/push my code to a branche in our repo, when I got a running demo and I will add some infos to the wiki, how to set everything up.
>>
>> We should also add some more information, how to setup all the devices.
>>
>>>>
>>>> I see. Well, the DDK 1.17 should also support SGX 540.
>>>> At least for omap4 (droid 4) there are good results by Tony.
>>>> But note that there are some "quirks" defined for omap4 in pvr_drv.
>>>> Maybe they are more for sgx540?
>>>>
>>>> You mean SGX544 ;)? That's at least the one I have on the sunxi devices.
>>> Ah, sorry. I mixed this up...
>>> But it may need a similar fix. Or another one.
>>
>> I think the DDK's use a µkernel in the gpu that is loaded during the boot process that might be also a reason for some issues.
>
> Yes. That is what pvrsrvctl --start is doing: downloading the µkernel which is likely stored inside the libum.so.
> If I remember, it uses /dev/pvr for that purpose and does some mmap().
I think we should document such things in our wiki at github.
I will start with some documentation as soon as I got the demo running
and my source code is pushed to the repo.
Cheers
Philipp
More information about the openpvrsgx-devgroup
mailing list