On 11/09/2024 15:38, Srirama Kucherlapati wrote:
>> I still don't understand. We have Linux powerpc systems running
>> happily in the buildfarm. They are happy with the current spinlock
>> implementation. Why is this needed? What happens without it?
>
> Not sure, by the time the below commits were made if there was a
> consideration to use the gcc routines.
The PPC asm code was originally written in 2002, and the first use of
__sync_lock_test_and_set(), for ARM, appeared in 2012. The commit that
made __sync_lock_test_and_set() be chosen automatically for platforms
that don't specify anything else was added in 2022.
> I tried to replace the AIX asm (under__ppc__ macro) with the gcc
> routine __sync_lock_test_and_set(), and all the buildfarm tests
> passed. Attached patch and the buildfarm output. Please let me know
> your feedback.
Ok, if we don't need the assembler code at all, that's good. A patch to
introduce AIX support should not change it for non-AIX powerpc systems
though. That might be a good change, but would need to be justified
separately, e.g. by some performance testing, and should be a separate
patch.
If you make no changes to s_lock.h at all, will it work? Why not?
You said earlier:
> I mean this part of the code is needed as this is specific to AIX kernel memory
> operation which is different from __sync_lock_test_and_set().
>
> I would like to mention that the changes made in src/include/storage/s_lock.h
> are pretty much required and need to be operated in assemble specific to IBM
> Power architecture.
Was that earlier statement incorrect? Is the manual wrong or outdated or
not applicable to us?
Moving on..
Do you still need mkldexport.sh? Surely there's a better way to do that
in year 2024. Some quick googling says there's a '-bexpall' option to
'ld', which kind of sounds like what we want. Will that work? How do
other programs do this?
--
Heikki Linnakangas
Neon (https://neon.tech)