[PATCH v2 1/1] riscv: Add RVV memset via multiarch/IFUNC

Jeff Law jlaw@ventanamicro.com
Wed Nov 5 15:49:37 GMT 2025


On 11/5/25 7:59 AM, Darius Rad wrote:
> On Tue, Nov 04, 2025 at 03:58:05PM -0700, Jeff Law wrote:
>> On 11/4/25 7:33 AM, Darius Rad wrote:
>>> On Tue, Nov 04, 2025 at 08:37:49PM +0800, Yao Zihong wrote:
>>>> This patch adds an RVV-optimized implementation of memset for RISC-V and
>>>> enables it through the existing multiarch/IFUNC mechanism.
>>>>
>>>> The implementation integrates Hau Hsu’s 2023 RVV work under a unified
>>>> ifunc-based framework. A vectorized version (__memset_vector) is added
>>>> alongside the generic fallback (__memset_generic). The runtime resolver
>>>> selects the RVV variant when RISCV_HWPROBE_KEY_IMA_EXT_0 reports vector
>>>> support (V).
>>>
>>> This needs to use dl_hwcap, as I said before [1].
>>>
>>> [1] https://sourceware.org/pipermail/libc-alpha/2025-October/171687.html
>> No.  This was sorted out across glibc, gcc and the linux kernel a couple of
>> years ago.  The right interface is hwprobe.  I don't understand why we're
>> revisiting this decision at this point.
>>
> 
> I don't care about dl_hwcap, I care about not breaking a working
> configuration.  If this was sorted out, what is the alternative?  The fact
> remains, short of reading prctl, dl_hwcap is the only way for user space to
> know whether vector is enabled or not.  This is what the Linux
> documentation currently says.
That "working configuration" is very niche -- someone (linux kernel and 
glibc developers) need to figure out how to support this *within* the 
hwprobe mechanism, it's that simple.



>>> This patch certainly has regressions compared with glibc master.
>>> Presently, if one has an environment that implements the vector extension,
>>> but it is disabled at runtime with prctl, glibc will operate properly.
>>> After this patch, running in such an environment will trigger an illegal
>>> instruction fault whenever memset is run.
>>>
>> Set this aside.  It's not the most important thing to resolve.
>>
> 
> Respectfully, no.  Deliberately breaking a working configuration is in fact
> one of the most important things to resolve.
I would disagree.  We're essentially holding up an entire community for 
something that just isn't that important and *not* part of how this 
stuff was designed to work.

We've had approval for the riscv probe stuff for roughly a year, the 
only reason it hasn't moved forward is I didn't have the time to push 
the approved patch into the tree.  Yao has kindly picked up the effort 
and it's ready to move forward.   hwprobe is the approved mechanism to 
handle this stuff across the various relevant projects.  If there's 
capabilities missing in that interface, then that's what needs to be 
fixed.  But we shouldn't make perfect be the enemy of the good IMHO.

So if you want to address this particular problem, work with the kernel 
and glibc teams to make it work within the hwprobe API.

Jeff


More information about the Libc-alpha mailing list