The "psb" Poulsbo driver from Intel was broken on X server 1.7, because of API changes notably.
But after some love, here it is, starting your X again!
First, upstream Xorg removed some stubs in server 1.7 (xfree86: Remove loader symbol list ABI stubs), and the psb driver was still calling them. Just removing the calls from the psb driver was enough about that.
The Fedora package ships a patch for server 1.7 that contains fixes about includes and libpciaccess, which I reused.
After this, it built fine, but the psb driver could not be loaded from X, because it was not linked with the internal "libmm" library, and failed finding its symbols. Building without -Wl,--as-needed made it link fine with libmm.so, but it is just a workaround.
In addition, some non-existent functions like mmListEmpty() were called from the internal libmm library. Previously, this has been workarounded by passing -Wl,--no-undefined as linker flags so that the library can be linked fine, and everything was fine at runtime as long as nothing used the symbol. But now, it seems libmm can't be loaded this way by dlopen(), even with lazy binding, it complains about the undefined symbols. So, I finally fixed it the proper, by adding back -Wl,--no-undefined, and removing the code calling the non-existent functions, which was unused anyway.
It also exposed an undefined assert() symbol as well, caused by a missing assert.h include...
Then, X still failed loading because it couldn't find mmCreateDRM(), which should be in libmm. That's because we build our Xorg with "hidden" visibility. It was enough patching and fixing libmm already, so a quick fix was to build with -fvisibility=default. This also fixes the linking of psb_drv.so with libmm.so, and allows to use -Wl,--as-needed again when linking the driver.
The final touch is the make the Xpsb proprietary extension usable again. The only issue was that the empty xf86AddModuleInfo() function has been removed upstream. Adding this empty function back in psb_driver.c directly is dirty, but makes it usable again :)
As bonus, I also fixed my patch setting MigrationHeuristic option to "greedy" by default, as it seems to lower the odds of a random crash.
There are still some unrendered pixmaps issue, and segfaults when playing with libva, but at least X is starting fine now, and 3D as well as accelerated video are working :)
(in recent Mesa releases, another issue appears in the proprietary dri driver, because of _glapi_set_warning_func() removal upstream, calling for another workaround /o\)
Enjoy this in Mandriva Cooker, it's already available in our contrib packages!
Other distros, you're welcome in cherry-picking our psb patches.
Trackbacks are closed for this story.