[PATCH v2 1/4] arm64/sysreg: Fix checks for incomplete sysreg definitions

Sascha Bischoff posted 4 patches 2 months, 1 week ago
There is a newer version of this series
[PATCH v2 1/4] arm64/sysreg: Fix checks for incomplete sysreg definitions
Posted by Sascha Bischoff 2 months, 1 week ago
The checks for incomplete sysreg definitions were checking if the
next_bit was greater than 0, which is incorrect and missed occasions
where bit 0 hasn't been defined for a sysreg. The reason is that
next_bit is -1 when all bits have been processed (LSB - 1).

Change the checks to use >= 0, instead. Also, set next_bit in Mapping
to -1 instead of 0 to match these new checks.

There are no changes to the generated sysreg definitons as part of
this change, and conveniently no definitions lack definitions for bit
0.

Signed-off-by: Sascha Bischoff <sascha.bischoff@arm.com>
---
 arch/arm64/tools/gen-sysreg.awk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm64/tools/gen-sysreg.awk b/arch/arm64/tools/gen-sysreg.awk
index f2a1732cb1f63..c74d805a2aa38 100755
--- a/arch/arm64/tools/gen-sysreg.awk
+++ b/arch/arm64/tools/gen-sysreg.awk
@@ -129,7 +129,7 @@ $1 == "SysregFields" && block_current() == "Root" {
 
 $1 == "EndSysregFields" && block_current() == "SysregFields" {
 	expect_fields(1)
-	if (next_bit > 0)
+	if (next_bit >= 0)
 		fatal("Unspecified bits in " reg)
 
 	define(reg "_RES0", "(" res0 ")")
@@ -180,7 +180,7 @@ $1 == "Sysreg" && block_current() == "Root" {
 
 $1 == "EndSysreg" && block_current() == "Sysreg" {
 	expect_fields(1)
-	if (next_bit > 0)
+	if (next_bit >= 0)
 		fatal("Unspecified bits in " reg)
 
 	if (res0 != null)
@@ -217,7 +217,7 @@ $1 == "EndSysreg" && block_current() == "Sysreg" {
 	print "/* For " reg " fields see " $2 " */"
 	print ""
 
-        next_bit = 0
+        next_bit = -1
 	res0 = null
 	res1 = null
 	unkn = null
-- 
2.34.1
Re: [PATCH v2 1/4] arm64/sysreg: Fix checks for incomplete sysreg definitions
Posted by Mark Brown 1 month, 4 weeks ago
On Thu, Oct 09, 2025 at 04:54:47PM +0000, Sascha Bischoff wrote:
> The checks for incomplete sysreg definitions were checking if the
> next_bit was greater than 0, which is incorrect and missed occasions
> where bit 0 hasn't been defined for a sysreg. The reason is that
> next_bit is -1 when all bits have been processed (LSB - 1).

Reviewed-by: Mark Brown <broonie@kernel.org>