[Gta04-owner] New Graphics SDK (was: Latest neil-plus kernel status)
Dr. H. Nikolaus Schaller
hns at goldelico.com
Thu Aug 8 18:39:13 CEST 2013
Am 08.08.2013 um 14:30 schrieb Dr. H. Nikolaus Schaller:
>
> Am 04.08.2013 um 15:09 schrieb Josua Mayer:
>
>> Am 30.07.2013 21:30, schrieb Dr. H. Nikolaus Schaller:
>>> Hi all,
>>> I have done some more fixes and updates:
>>>
>>> * reboot is now working
>>> * workaround for framebuffer alloc problem
>>> * upgraded to 3.11-rc3
>>> * added patch from Replicant to fix touch screen issues (not tested on Replicant yet - but appears to work elsewhere)
>>> * PVR is still disabled (needs more work to make /proc working) [1]
>> I have found that there is a new graphicssdk by TI at:
>> http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsdk/latest/index_FDS.html
>> It is done for linux 3.8 so maybe it has better chances of working fully(that is with DRI) in the future.
>> Just wanted to throw this in since I found the code in neil-3.1x-plus still has the driver code of the old SDK.
>
> I did take another look into the code and it turns out that integrating the latest SDK into a 3.10++
> kernel is more than fixing make files and #include paths.
>
> The main change is from 3.9 to 3.10 that the /proc API has changed at two fundamental positions:
> 1. the struct proc_dir_entry has become private
> 2. there are no longer read_proc and write_procs defined by the driver
>
> Since there is some code that uses direct access to struct proc_dir_entry this means some
> changes - which can be done, but we risk introducing severe bugs we can't debug.
>
> The second point appears to be worse - the linux adaptation code is based around these
> and they are replaced by the standard file_operations for read and write. This means that
> the way strings and data is passed from the driver to user space has changed.
>
> And, a read/write proc callback assumes that it gets access to the data passed on creation
> of the node. I don't see how this is done by the standard file_operations:
>
> int (read_proc_t)(char *page, char **start, off_t off, int count, int *eof, void *data);
>
> ->
>
> ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
>
> Reading from some comments in the drivers/gpu/pvr/omap3/services4/srvkm/env/linux/proc.c
> it also looks as if they use some special properties of the old procfs API (e.g. how EOF is notified).
>
> So this is a major change and I don't see how I can do it with my limited experience faster
> than TI will fix it.
>
> So maybe it is better to wait for the next one or two releases of the gfx sdk. If TI keeps pace,
> I would expect that for November 2013.
>
> Can we wait that long? Or does anbody know about a "migration guide" for the /procfs API?
> Or anybody willing to look into the details of drivers/gpu/pvr/omap3/services4/srvkm/env/linux/proc.c?
I have some good news after investing 3 more hours...
Adding a lot of
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,10,0))
to
drivers/gpu/pvr/omap3/services4/srvkm/env/linux/proc.c and ../proc.h
makes the whole kernel compile with only some warnings in linux/proc.c and two harmless
ones in
drivers/gpu/pvr/omap3/services4/3rdparty/dc_omapfb3_linux/omaplfb_displayclass.c
So the situation is not as worse as I had thought some hours ago.
We only have to fix a single file!
The main problem appears to be that /proc is now handled by normal file_operations
and although it is possible to pass some private data to proc_create_data() I have
not found some official way to access it. The driver uses this private-data mechanism
intensively so we need a way to come from a struct file * to the struct proc_dir_entry *
and from there to the kmalloc'ed data passed initially.
And, I have not found a mechanism to walk through a /proc directory and process all
subnodes in a while loop.
Since the code now compiles, I have pushed it to a WIP (work in progress) branch so
that you can take a look and help:
http://git.goldelico.com/?p=gta04-kernel.git;a=shortlog;h=refs/heads/wip-gpupvrsgx
Please note that the code most likely does panic the kernel.
-- hns
[1]: http://projects.goldelico.com/p/gta04-kernel/issues/449
More information about the Gta04-owner
mailing list