Re: [PATCH 00/14] alpha: cleanups for 6.10
From: Maciej W. Rozycki
Date: Thu May 30 2024 - 18:59:39 EST
On Wed, 29 May 2024, Paul E. McKenney wrote:
> > What I have been after actually is: can you point me at a piece of code
> > in our tree that will cause an issue with a non-BWX Alpha as described in
> > your scenario, so that I have a starting point? Mind that I'm completely
> > new to RCU as I didn't have a need to research it before (though from a
> > skim over Documentation/RCU/rcu.rst I understand what its objective is).
>
> See the uses of the fields of the current->rcu_read_unlock_special.b
> anonymous structure for the example that led us here. And who knows how
> many other pieces of the Linux kernel that assume that it is possible
> to atomically store a single byte.
Thanks, that helps.
> Many of which use a normal C-language store, in which case there are
> no accessors. This can be a problem even in the case where there are no
> data races to either byte, because the need for the read-modify-write
> sequence on older Alpha systems results in implicit data races at the
> machine-word level.
Ack.
> > FWIW even if it was only me I think that depriving the already thin Alpha
> > port developer base of any quantity of the remaining manpower, by dropping
> > support for a subset of the hardware available, and then a subset that is
> > not just as exotic as the original i386 became to the x86 platform at the
> > time support for it was dropped, is only going to lead to further demise
> > and eventual drop of the entire port.
>
> Yes, support has been dropped for some of the older x86 CPUs as well,
> for example, Linux-kernel support for multiprocessor 80386 systems was
> dropped a great many years ago, in part because those CPUs do not have
> a cmpxchg instruction. So it is not like we are picking on Alpha.
That's what I mentioned (and for the record i386 wasn't dropped for the
lack of CMPXCHG, as we never supported i386 SMP, exceedingly rare, anyway,
but for the lack of page-level write-protection in the kernel mode, which
implied painful manual checks). At the time our support for the i386 was
dropped its population outside embedded use was minuscule and certainly
compared to non-i386 x86 Linux user base. And the supply of modern x86
systems was not an issue either.
Conversely no new Alpha systems are made and I suspect the ratio between
BWX and non-BWX Alpha Linux users is not as high as between post-i386 x86
and original i386 Linux users at the time of the drop.
> > And I think it would be good if we kept the port, just as we keep other
> > ports of historical significance only, for educational reasons if nothing
> > else, such as to let people understand based on an actual example, once
> > mainstream, the implications of weakly ordered memory systems.
>
> I don't know of any remaining issues with the newer Alpha systems that do
> support single-byte and double-byte load and store instructions, and so
> I am not aware of any reason for dropping Linux-kernel support for them.
Well, the lack of developers to maintain the port would be the reason I
refer to. If you let developers drop by preventing them from using their
hardware to work on the port, then eventually we'll have none.
Anyway it seems like an issue to be sorted in the compiler, transparently
to RCU, so it shouldn't be a reason to drop support for non-BWX Alpha CPUs
anymore. See my reply to Linus in this thread.
Thank you for your input, always appreciated.
Maciej