summaryrefslogtreecommitdiff
path: root/scripts/get_abi.pl
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>2021-09-27 16:49:50 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-09-28 13:45:36 +0300
commit87b58c6fae17b2404f32dfbf793b1f1b14fa9c95 (patch)
tree96d77ec6162b01f48ae4290663e268ff72438c9c /scripts/get_abi.pl
parent3a1cc06c0e07065b06ba1af28eb48886e099e195 (diff)
downloadlinux-87b58c6fae17b2404f32dfbf793b1f1b14fa9c95.tar.xz
scripts: get_abi.pl: fix parse logic for DT firmware
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 <mchehab+huawei@kernel.org> Link: https://lore.kernel.org/r/1c806eaec96f6706db4b041bbe6a0e2519e9637e.1632750315.git.mchehab+huawei@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'scripts/get_abi.pl')
-rwxr-xr-xscripts/get_abi.pl30
1 files changed, 20 insertions, 10 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,19 +635,29 @@ 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)/#);
+ my $mode = (lstat($file))[2];
+ my $abs_file = abs_path($file);
- # Ignore some sysfs nodes
- return if ($file =~ m#/(sections|notes)/#);
+ my @tmp;
+ push @tmp, $file;
+ push @tmp, $abs_file if ($abs_file ne $file);
- # Would need to check at
- # Documentation/admin-guide/kernel-parameters.txt, but this
- # is not easily parseable.
- return if ($file =~ m#/parameters/#);
+ foreach my $f(@tmp) {
+ # Ignore cgroup, as this is big and has zero docs under ABI
+ return if ($f =~ m#^/sys/fs/cgroup/#);
- my $mode = (lstat($file))[2];
- my $abs_file = abs_path($file);
+ # 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;