ppc64 vDSO update

Benjamin Herrenschmidt benh at kernel.crashing.org
Wed Nov 10 15:09:08 EST 2004


At the URL below, you can find a new version of the ppc64 vDSO patch against
a recent Linus bk tree. I intend to submit it upstream real soon as the work
on non-executable stack is waiting for it, though we must first make sure the
way symbols are exported to userland is ok for glibc.

http://gate.crashing.org/~benh/ppc64-vdso-20041110.diff

Following Roland comments, plus my own updates, I've done the following changes:

 - Renamed _v_ and __v_* symbols to __kernel_* to match the x86 vDSO

 - Added symbol versions (currently LINUX_2.6.10) and don't export a few things
   that are really internal to the vDSO.

 - Added a new export to userland: __kernel_sync_dicache (prototype below) that
   does the dcache flush / icache invalidate necessary to turn data into executable,
   I also added the dynamic symbol patching mecanism I wrote about earlier so that
   the "__kernel_sync_dicache" symbol is automatically modified by the kernel to
   point to the right version based on the CPU you are running on. At this point,
   there are 2 implementations, a generic one and a POWER5 one. Ultimately, this
   mecanism will be used for a lot more "alternatives" once we get more functions
   in the vDSO, most notably locks.

In the long run, I plan to work on improving the kernel side implementation, for
example by avoiding some of the runtime symbol lookup done by the kernel at boot
and replace it with build-time generation, that sort of thing, along with getting
more functions exposed to glibc/userland.

For now, however, I'd like to settle with what we have here, so we can properly
"hook" glibc & ld.so on to __kernel_gettimeofday() and __kernel_sync_dicache().

Ben.





More information about the Linuxppc64-dev mailing list