Hi Greg,
This small series address a couple of issues I noticed while testing it
on an arm64 board (HiKey970). Those are addressed on patches 1
and 2.
Patch 2 is the real fix: it prevents creating aliases for nodes that
are ignored (specially for /sys/firmware, where there's no documentation
for the files created there under Documentation/ABI - nor it makes
sense to have it).
Patch 1 prevents similar cases, as it will produce an error if a
symlink is pointing to an entry that was not added at the internal
representation of the sysfs.
Patch 3 just update a few things at the documentation inside the
script.
Mauro Carvalho Chehab (3):
scripts: get_abi.pl: produce an error if the ref tree is broken
scripts: get_abi.pl: fix parse logic for DT firmware
scripts: get_abi.pl: update its documentation
scripts/get_abi.pl | 70 +++++++++++++++++++++++++++++-----------------
1 file changed, 45 insertions(+), 25 deletions(-)
--
2.31.1
It doesn't make any sense to parse ABI entries under
/sys/firmware, as those are either specified by ACPI specs
or by Documentation/devicetree.
The current logic to ignore firmware entries is incomplete,
as it ignores just the relative name of the file, and not
its absolute name. This cause errors while parsing the
symlinks.
So, rewrite the logic for it to do a better job.
Tested with both x86 and arm64 (HiKey970) systems.
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
---
See [PATCH 0/3] at: https://lore.kernel.org/all/[email protected]/
scripts/get_abi.pl | 32 +++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/scripts/get_abi.pl b/scripts/get_abi.pl
index 26a3f8ff566a..d14f5cfc3138 100755
--- a/scripts/get_abi.pl
+++ b/scripts/get_abi.pl
@@ -635,20 +635,30 @@ my $escape_symbols = qr { ([\x01-\x08\x0e-\x1f\x21-\x29\x2b-\x2d\x3a-\x40\x7b-\x
sub parse_existing_sysfs {
my $file = $File::Find::name;
- # Ignore cgroup and firmware
- return if ($file =~ m#^/sys/(fs/cgroup|firmware)/#);
-
- # Ignore some sysfs nodes
- return if ($file =~ m#/(sections|notes)/#);
-
- # Would need to check at
- # Documentation/admin-guide/kernel-parameters.txt, but this
- # is not easily parseable.
- return if ($file =~ m#/parameters/#);
-
my $mode = (lstat($file))[2];
my $abs_file = abs_path($file);
+ my @tmp;
+ push @tmp, $file;
+ push @tmp, $abs_file if ($abs_file ne $file);
+
+ foreach my $f(@tmp) {
+ # Ignore cgroup, as this is big and has zero docs under ABI
+ return if ($f =~ m#^/sys/fs/cgroup/#);
+
+ # Ignore firmware as it is documented elsewhere
+ # Either ACPI or under Documentation/devicetree/bindings/
+ return if ($f =~ m#^/sys/firmware/#);
+
+ # Ignore some sysfs nodes that aren't actually part of ABI
+ return if ($f =~ m#/sections|notes/#);
+
+ # Would need to check at
+ # Documentation/admin-guide/kernel-parameters.txt, but this
+ # is not easily parseable.
+ return if ($f =~ m#/parameters/#);
+ }
+
if (S_ISLNK($mode)) {
$aliases{$file} = $abs_file;
return;
--
2.31.1