[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