2023-12-28 23:31:30

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH] scripts/get_abi.pl: ignore some temp files

When there are filenames of the form ".orig" or ".rej" in
the Documenatation/ABI/ subdirectories, there can be confusing or
erroneous output generated. Example: the file
Documenation/ABI/testing/sysfs-bus-papr-pmem.orig causes this
warning message:

Documentation/ABI/testing/sysfs-bus-papr-pmem:2: WARNING: unknown document: '/powerpc/papr_hcalls'

Prevent this by skipping over filenames that may be created by
patch/diff tools etc.

Signed-off-by: Randy Dunlap <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Jonathan Corbet <[email protected]>
Cc: [email protected]
Acked-by: Mauro Carvalho Chehab <[email protected]>
---
scripts/get_abi.pl | 1 +
1 file changed, 1 insertion(+)

diff -- a/scripts/get_abi.pl b/scripts/get_abi.pl
--- a/scripts/get_abi.pl
+++ b/scripts/get_abi.pl
@@ -93,6 +93,7 @@ sub parse_abi {
return if ($mode & S_IFDIR);
return if ($file =~ m,/README,);
return if ($file =~ m,/\.,);
+ return if ($file =~ m,\.(rej|org|orig|bak)$,);

my $name = $file;
$name =~ s,.*/,,;


2024-01-03 21:03:39

by Jonathan Corbet

[permalink] [raw]
Subject: Re: [PATCH] scripts/get_abi.pl: ignore some temp files

Randy Dunlap <[email protected]> writes:

> When there are filenames of the form ".orig" or ".rej" in
> the Documenatation/ABI/ subdirectories, there can be confusing or
> erroneous output generated. Example: the file
> Documenation/ABI/testing/sysfs-bus-papr-pmem.orig causes this
> warning message:
>
> Documentation/ABI/testing/sysfs-bus-papr-pmem:2: WARNING: unknown document: '/powerpc/papr_hcalls'
>
> Prevent this by skipping over filenames that may be created by
> patch/diff tools etc.
>
> Signed-off-by: Randy Dunlap <[email protected]>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: Jonathan Corbet <[email protected]>
> Cc: [email protected]
> Acked-by: Mauro Carvalho Chehab <[email protected]>
> ---
> scripts/get_abi.pl | 1 +
> 1 file changed, 1 insertion(+)
>
> diff -- a/scripts/get_abi.pl b/scripts/get_abi.pl
> --- a/scripts/get_abi.pl
> +++ b/scripts/get_abi.pl
> @@ -93,6 +93,7 @@ sub parse_abi {
> return if ($mode & S_IFDIR);
> return if ($file =~ m,/README,);
> return if ($file =~ m,/\.,);
> + return if ($file =~ m,\.(rej|org|orig|bak)$,);

Applied, thanks.

It would have been nice to create all of those files with a .abi
extension so we didn't have to do this kind of blocklisting, but so be
it.

Should we exclude emacs-style ~ files too?

jon

2024-01-03 22:06:41

by Randy Dunlap

[permalink] [raw]
Subject: Re: [PATCH] scripts/get_abi.pl: ignore some temp files



On 1/3/24 13:03, Jonathan Corbet wrote:
> Randy Dunlap <[email protected]> writes:
>
>> When there are filenames of the form ".orig" or ".rej" in
>> the Documenatation/ABI/ subdirectories, there can be confusing or
>> erroneous output generated. Example: the file
>> Documenation/ABI/testing/sysfs-bus-papr-pmem.orig causes this
>> warning message:
>>
>> Documentation/ABI/testing/sysfs-bus-papr-pmem:2: WARNING: unknown document: '/powerpc/papr_hcalls'
>>
>> Prevent this by skipping over filenames that may be created by
>> patch/diff tools etc.
>>
>> Signed-off-by: Randy Dunlap <[email protected]>
>> Cc: Greg Kroah-Hartman <[email protected]>
>> Cc: Jonathan Corbet <[email protected]>
>> Cc: [email protected]
>> Acked-by: Mauro Carvalho Chehab <[email protected]>
>> ---
>> scripts/get_abi.pl | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff -- a/scripts/get_abi.pl b/scripts/get_abi.pl
>> --- a/scripts/get_abi.pl
>> +++ b/scripts/get_abi.pl
>> @@ -93,6 +93,7 @@ sub parse_abi {
>> return if ($mode & S_IFDIR);
>> return if ($file =~ m,/README,);
>> return if ($file =~ m,/\.,);
>> + return if ($file =~ m,\.(rej|org|orig|bak)$,);
>
> Applied, thanks.
>
> It would have been nice to create all of those files with a .abi
> extension so we didn't have to do this kind of blocklisting, but so be
> it.
>
> Should we exclude emacs-style ~ files too?

Hm, probably. Someday.

--
#Randy

2024-01-04 11:04:46

by Jani Nikula

[permalink] [raw]
Subject: Re: [PATCH] scripts/get_abi.pl: ignore some temp files

On Wed, 03 Jan 2024, Jonathan Corbet <[email protected]> wrote:
> It would have been nice to create all of those files with a .abi
> extension so we didn't have to do this kind of blocklisting, but so be
> it.

Alternatively, we could switch to yaml instead of using another homebrew
format with another homebrew parser, and rename them .yaml.

BR,
Jani.


--
Jani Nikula, Intel

2024-01-04 14:59:42

by Jonathan Corbet

[permalink] [raw]
Subject: Re: [PATCH] scripts/get_abi.pl: ignore some temp files

Jani Nikula <[email protected]> writes:

> On Wed, 03 Jan 2024, Jonathan Corbet <[email protected]> wrote:
>> It would have been nice to create all of those files with a .abi
>> extension so we didn't have to do this kind of blocklisting, but so be
>> it.
>
> Alternatively, we could switch to yaml instead of using another homebrew
> format with another homebrew parser, and rename them .yaml.

But ... we didn't invent that! :)

That is, of course, a better idea. It would be a good project for
somebody.

Thanks,

jon

2024-01-04 15:58:15

by Jonathan Corbet

[permalink] [raw]
Subject: Re: [PATCH] scripts/get_abi.pl: ignore some temp files

Jonathan Corbet <[email protected]> writes:

> Jani Nikula <[email protected]> writes:
>
>> On Wed, 03 Jan 2024, Jonathan Corbet <[email protected]> wrote:
>>> It would have been nice to create all of those files with a .abi
>>> extension so we didn't have to do this kind of blocklisting, but so be
>>> it.
>>
>> Alternatively, we could switch to yaml instead of using another homebrew
>> format with another homebrew parser, and rename them .yaml.
>
> But ... we didn't invent that! :)
>
> That is, of course, a better idea. It would be a good project for
> somebody.

Thinking about this a bit further ... is there anything other than
get_abi.pl that parses these files? If so, that would, of course,
complicate a switch to YAML.

If not, though ... and if we're changing the format ... maybe we should
just turn them into RST and do away with the extra processing step
entirely?

jon

2024-01-04 23:37:46

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [PATCH] scripts/get_abi.pl: ignore some temp files

Em Thu, 04 Jan 2024 08:57:47 -0700
Jonathan Corbet <[email protected]> escreveu:

> Jonathan Corbet <[email protected]> writes:
>
> > Jani Nikula <[email protected]> writes:
> >
> >> On Wed, 03 Jan 2024, Jonathan Corbet <[email protected]> wrote:
> >>> It would have been nice to create all of those files with a .abi
> >>> extension so we didn't have to do this kind of blocklisting, but so be
> >>> it.
> >>
> >> Alternatively, we could switch to yaml instead of using another homebrew
> >> format with another homebrew parser, and rename them .yaml.
> >
> > But ... we didn't invent that! :)
> >
> > That is, of course, a better idea. It would be a good project for
> > somebody.
>
> Thinking about this a bit further ... is there anything other than
> get_abi.pl that parses these files?

AFAIKT, only get_abi.pl parses them inside the Kernel.


> If so, that would, of course,
> complicate a switch to YAML.
>
> If not, though ... and if we're changing the format ... maybe we should
> just turn them into RST and do away with the extra processing step
> entirely?

I don't think it is wise to just convert it to ReST. See, the script
has 4 modes of operation controlled via command line argument[1]:

search SEARCH_REGEX - search for SEARCH_REGEX inside ABI

rest - output the ABI in ReST markup language

validate - validate the ABI contents

undefined - existing symbols at the system that aren't defined at
Documentation/ABI

[1] see:
./get_abi.pl --man

The "rest" command line is used when building the docs. There are also
"search" used if one wants to get the documentation of a particular
sysfs symbol:

$ scripts/get_abi.pl search nonfatal_errors

/sys/bus/platform/devices/dfl-fme.0/errors/nonfatal_errors
----------------------------------------------------------

Kernel version: 5.4
Date: August 2019
Contact: Wu Hao <[email protected]>
Defined on file(s): Documentation/ABI/testing/sysfs-platform-dfl-fme

Description:

Read-only. It returns non-fatal errors detected.

Which is useful if a system admin wants to search for some specific
uABI symbol.

The "validate" is similar to the "quiet" mode of kernel-doc: it
just checks if all entries parse OK. If everything is OK, it prints
nothing.

There's also "undefined" (my favorite one when I'm checking for
doc problems on uABI), meaning to detect documentation gaps:

$ scripts/get_abi.pl undefined --search-string drm/card1|perl -ne 'print "\t$_"'
Reading /sys directory contents...done.
Converting ABI What fields into regexes...done.
0:37: processing sysfs files... 46%: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10.4/1-10.4.2/1-10.4.2:1.2/0003:046D:C52B.0003/0003:046D:406A.0004/input/input31/input31::kana/power/aut0:47: processing sysfs files... done
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/.defaults/rps_max_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt_RP1_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3/connector_id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/.defaults/rps_min_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt_min_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_max_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt_RPn_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_cur_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/f889f8cc-4c93-4ac8-b75f-551c0b9b87f7/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt_max_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt_act_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt_boost_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/error not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_min_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt_cur_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/punit_req_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt_RP0_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_up_threshold_pct not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_act_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rc6_enable not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_boost_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_RP0_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_RPn_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_RP1_freq_mhz not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rc6_residency_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/rps_down_threshold_pct not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/.defaults/rps_up_threshold_pct not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3/edid not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/gt/gt0/.defaults/rps_down_threshold_pct not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3/modes not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3/enabled not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3/dpms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3/status not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/398a4268-ef6f-4ffc-b55f-3c7b5363ce61/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/12994724-3a5a-4303-bb3c-ba0175d2c200/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/3addf8ef-8e9b-40f5-a448-3dbb5d5128b0/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/6c66fe6e-2988-454a-bfae-7fca3bbcbec2/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/6d344efd-8e9e-42d4-a29e-1011c29f82c2/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/4af0400a-81c3-47db-a6b6-deddbd75680e/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/9eaf384d-8f53-41b8-a71d-108308780fbc/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/f9954679-a055-4862-9f57-9d66e3ebf81c/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/fb149d66-fad2-4230-b0d7-4d689b9116d3/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/d7a17a3a-ca71-40d2-a919-ace80d50633f/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/e3b386ae-c195-47d5-af29-8a1afa0ae2bf/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/57b59202-172b-477a-87de-33f85572c589/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/0e22f995-79ca-4f67-83ab-e9d9772488d8/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/99c1a40e-a090-4354-86e3-4d068bb1917e/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/cd4b577b-073a-423f-a948-e198dd818c71/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/4032137b-8dcc-4f3f-912d-c0bb14a123bc/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/a00cbdf2-eabd-4240-9a89-86e2ac1ca1e4/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/b49aa434-4958-4d98-9e6f-443ff27ca74d/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/aa7a3fb9-22fb-43ff-a32d-0ab6c13bbd16/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/metrics/4ed5e27e-fd1a-4f11-ad8f-9374e128c697/id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1/connector_id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1/edid not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1/enabled not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1/modes not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1/dpms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1/status not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/edid not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/status not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/enabled not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/dpms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/connector_id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/modes not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/i2c-7/new_device not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/power/rc6_residency_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/drm_dp_aux1/name not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/i2c-7/name not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/.defaults/heartbeat_interval_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-2/i2c-7/delete_device not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/power/rc6_enable not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/.defaults/heartbeat_interval_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/heartbeat_interval_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/stop_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/max_busywait_duration_ns not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/instance not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/.defaults/heartbeat_interval_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/.defaults/heartbeat_interval_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/capabilities not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/.defaults/stop_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/known_capabilities not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/timeslice_duration_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/known_capabilities not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/class not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/preempt_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/mmio_base not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/name not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/.defaults/max_busywait_duration_ns not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/heartbeat_interval_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/.defaults/timeslice_duration_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/stop_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vecs0/.defaults/preempt_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/max_busywait_duration_ns not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/capabilities not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/instance not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/.defaults/stop_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/known_capabilities not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/timeslice_duration_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/class not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/preempt_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/mmio_base not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/name not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/.defaults/max_busywait_duration_ns not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/heartbeat_interval_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/.defaults/timeslice_duration_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/stop_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/vcs0/.defaults/preempt_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/max_busywait_duration_ns not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/capabilities not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/instance not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/.defaults/stop_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/known_capabilities not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/timeslice_duration_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/class not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/preempt_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/mmio_base not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/name not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/.defaults/max_busywait_duration_ns not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/heartbeat_interval_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/.defaults/timeslice_duration_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/stop_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/bcs0/.defaults/preempt_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/max_busywait_duration_ns not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/capabilities not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/instance not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/.defaults/stop_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/timeslice_duration_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/class not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/preempt_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/mmio_base not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/name not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2/edid not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/.defaults/max_busywait_duration_ns not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2/connector_id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/.defaults/timeslice_duration_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/engine/rcs0/.defaults/preempt_timeout_ms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2/enabled not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2/modes not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2/dpms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2/status not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/edid not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/status not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/enabled not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/i2c-6/new_device not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/dpms not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/connector_id not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/modes not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/i2c-6/name not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/i2c-6/delete_device not found.
/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1/drm_dp_aux0/name not found.

It helps a lot to check if the uABI entries are properly pointing to
the right sysfs nodes, being really useful when someone is documenting
the uABI and to check for gaps. My original goal were to run it at
build time, but currently there are too many gaps for it to be useful:

$ scripts/get_abi.pl undefined|wc -l
Reading /sys directory contents...done.
Converting ABI What fields into regexes...done.
5:08: processing sysfs files... 46%: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10.4/1-10.4.2/1-10.4.2:1.2/0003:046D:C52B.0003/0003:046D:406A.0004/hidraw/hidraw1/power/runtime_suspende10:32: processing sysfs files... done
4910

(this is on my laptop - Running it on a server reports 50k-100k missing
symbols)

It would be ok to convert ABI to use YAML or ReST if we can ensure that
we'll keep supporting symbol search and undefined uAPI detection.

Yet, IMO, using ReST directly for ABI could be problematic if people
don't add uABI symbols on a "database-like" parseable series of files.

In any case, if we convert it to YAML or ReST, we can modify the
ABI parser and/or scripts/checkpatch.pl to validate if:

- the uAPI is properly documented with the expected fields,
as described under Documentation/ABI/README;
- there are uAPI gaps;
- there won't be duplicated documentation for the same
uAPI symbol.

Thanks,
Mauro