Possible regression by ab037dd87a2f (powerpc/vdso: Switch VDSO to generic C implementation.)
Michael Ellerman
mpe at ellerman.id.au
Mon Aug 2 16:18:58 AEST 2021
"Paul Murphy" <murp at ibm.com> writes:
>
> (My apologies for however IBM's email client munges this)
>
>> I heard it is going to be in Go 1.16.7, but I do not know much about Go.
>> Maybe the folks in Cc can chime in.
>
>
> We have backports primed and ready for the next point release. They
> are waiting on the release manager to cherrypick them.
OK good, that is still the correct fix in the long run.
> I think we were aware that our VDSO usage may have exploited some
> peculiarities in how the ppc64 version was constructed (i.e hand
> written assembly which just didn't happen to clobber R30).
Yeah I was "somewhat surprised" that Go thought it could use r30 like
that across a VDSO call :D
But to be fair the ABI of the VDSO has always been a little fishy,
because the entry points pretend to be a transparent wrapper around
system calls, but then in a case like this are not.
> Go up to this point has only used the vdso function __kernel_clock_gettime; it
> is the only entry point which would need to explicitly avoid R30 for
> Go's sake.
I thought about limiting the workaround to just that code, but it seemed
silly and likely to come back to bite us. Once the compilers decides to
spill a non-volatile there are plenty of other ones to choose from.
cheers
More information about the Linuxppc-dev
mailing list