powerpc/pseries: Add a clear modifier to ibm,pa/pi-features parser
authorNicholas Piggin <npiggin@gmail.com>
Wed, 7 Feb 2024 03:52:18 +0000 (13:52 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 21 Feb 2024 12:14:49 +0000 (23:14 +1100)
commit8b338061065b1871fc9ec53bd772321c15363123
tree37c966b5a78c15622b0e8b1251e7584c9e6380b4
parentb22ea627225b53ec7ce25c19d6df9fa8217d1643
powerpc/pseries: Add a clear modifier to ibm,pa/pi-features parser

When a new ibm,pa/pi-features bit is introduced that is intended to
apply to existing systems and features, it may have an "inverted"
meaning (i.e., bit clear => feature available; bit set => unavailable).
Depending on the nature of the feature, this may give the best
backward compatibility result where old firmware will continue to
have that bit clear and therefore the feature available.

The 'invert' modifier presumably was introduced for this type of
feature bit. However it invert will set the feature if the bit is
clear, which prevents it being used in the situation where an old
CPU lacks a feature that a new CPU has, then a new firmware comes
out to disable that feature on the new CPU if the bit is set.
Adding an 'invert' entry for that feature would incorrectly enable
it for the old CPU.

So add a 'clear' modifier that clears the feature if the bit is set,
but it does not set the feature if the bit is clear. The feature
is expected to be set in the cpu table.

This replaces the 'invert' modifier, which is unused since commit
7d4703455168 ("powerpc/feature: Remove CPU_FTR_NODSISRALIGN").

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240207035220.339726-1-npiggin@gmail.com
arch/powerpc/kernel/prom.c