[RFC PATCH 0/6] Deduplicating RISCV cmpxchg.h macros

Leonardo Brás leobras at redhat.com
Mon Mar 20 23:30:35 PDT 2023


Hello Conor, thanks for the feedback!


On Sun, 2023-03-19 at 20:35 +0000, Conor Dooley wrote:
> On Sat, Mar 18, 2023 at 05:00:54AM -0300, Leonardo Bras wrote:
> > While studying riscv's cmpxchg.h file, I got really interested in 
> > understanding how RISCV asm implemented the different versions of 
> > {cmp,}xchg.
> > 
> > When I understood the pattern, it made sense for me to remove the 
> > duplications and create macros to make it easier to understand what exactly 
> > changes between the versions: Instruction sufixes & barriers.
> > 
> > I split those changes in 3 levels for each cmpxchg and xchg, resulting a 
> > total of 6 patches. I did this so it becomes easier to review and remove 
> > the last levels if desired, but I have no issue squashing them if it's 
> > better.
> > 
> > Please provide comments.
> > 
> > Thanks!
> > Leo
> > 
> > Leonardo Bras (6):
> >   riscv/cmpxchg: Deduplicate cmpxchg() asm functions
> >   riscv/cmpxchg: Deduplicate cmpxchg() macros
> >   riscv/cmpxchg: Deduplicate arch_cmpxchg() macros
> 
> >   riscv/cmpxchg: Deduplicate xchg() asm functions
> 
> FWIW, this patch seems to break the build pretty badly:
> https://patchwork.kernel.org/project/linux-riscv/patch/20230318080059.1109286-5-leobras@redhat.com/

Thanks for pointing out!

It was an intermediary error:
Sufix for amoswap on acquire version was "d.aqrl" instead of the
correct".d.aqrl", and that caused the fail.

I did not notice anything because the next commit made it more general, and thus
removed this line of code. I will send a v2-RFC shortly.

I see that patch 4/6 has 5 fails, but on each one of them I can see:
"I: build output in /ci/workspace/[...]", or
""I: build output in /tmp/[...]".

I could not find any reference to where this is saved, though.
Could you point where can I find the error output, just for the sake of further
debugging?

> 
> Patches 1 & 5 also add quite a lot of sparse issues (like 1000), but I
> think that may be more of an artifact of the testing process as opposed
> to something caused by this patchset.

For those I can see the build output diffs. Both added error lines to
conchuod/build_rv64_gcc_allmodconfig.
I tried to mimic this with [make allmodconfig + gcc build with
CROSS_COMPILE=riscv64-linux-gnu- ] but I could not get any error in any patch.

For patch 1/6 it removes as much error lines (-) as it adds (+), and the error
messages are mostly the same, apart for an line number.

For patch 5/6 it actually adds many more lines, but tracking (some of) the
errors gave me no idea why.

> 
> Cheers,
> Conor.

Thanks a lot!
Leo





More information about the linux-riscv mailing list