[RFC PATCH 00/19] riscv: ifunc support with optimized mem*/str*/cpu_relax routines
Philipp Tomsich
philipp.tomsich@vrull.eu
Tue Feb 7 19:32:08 GMT 2023
On Tue, 7 Feb 2023 at 18:16, DJ Delorie <dj@redhat.com> wrote:
>
> Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> writes:
> > So now we have 3 different proposal mechanism to provide implementation runtime
> > selection on riscv:
> >
> > 1. The sysdep mechanism to select optimized routines based on compiler/ABI
> > done at build time. It is the current mechanism and it is also used
> > on rvv routines [1].
> >
> > 2. A ifunc one using a new riscv syscall to query the kernel the required
> > information.
> >
> > 3. Another ifunc one using riscv specific environment variable.
>
> I'm also going to oppose #3 on principles. We've been removing the use
> of environment variables for tuning, in favor of tunables.
You may have missed the essential part of the commit message:
> > Since we don't have an interface to get this information from the
> > kernel (at the moment), this patch uses environment variables instead,
> > which is also why this patch should not be considered for upstream
> > inclusion and is explicitly tagged as RFC.
So this patch has always been a stand-in until option #2 is ready.
I am strongly opinionated towards a mechanism that uses existing
mechanisms in the ELF auxiliary vector to pass information — and tries
to avoid the introduction of a new arch-specific syscall. if possible.
> If we have a way to auto-detect the best implementation without relying
> on the user, that's my preference. Users are unreliable and require
> documentation. The compiler likely doesn't have access to the
> hardware[*], so must rely on the user. Thus, my preference is #2 - the
> kernel has access to the hardware and its device tree, and can tell the
> userspace what capabilities are available.
>
> I would not be opposed to a tunable that overrides the autodetection; we
> have something similar for x86. But the default (and should be) is
> "works basically correctly without user intervention".
>
> [*] you can run gcc on the "right" hardware, but typically we
> build-once-run-everywhere.
>
More information about the Libc-alpha
mailing list