Re: [PATCH 0/3] get_abi: improve message output and fix a regression
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2021-09-28 11:04:37
Also in:
lkml
On Tue, Sep 28, 2021 at 12:14:01PM +0200, Mauro Carvalho Chehab wrote:
Hi Greg, As promised on https://lore.kernel.org/lkml/20210928120304.62319fba@coco.lan/T/#u (local) I'm adding progress info when get_abi.pl is checking for undefined ABI symbols on patches 1 and 2. That will help not only to identify what is causing delays on the script, but also to notify the user that processing it could take some time on some systems. If you run it on your big server with: scripts/get_abi.pl undefined 2>logs The "logs" file will contain timestamps relative to the time the script started to do the regex matches for sysfs files. It should be printing one line every time the progress completes 1% or one second after the last progress output.
Adding more debugging and tweaking the script a bit to show the file it is about to check, not the one it finished checking, I got the following debug output that seems to pinpoint the problem file. The sysfs file that is causing problems is: /sys/devices/pci0000:40/0000:40:00.2/iommu/ivhd1/amd-iommu/cap and here's some debugging output for the regex it needs to search for this: /sys/devices/pci0000:40/0000:40:00.2/iommu/ivhd1/amd-iommu/cap =~ /^(?^:^/sys/class/iommu/.*/amd\-iommu/cap$)$/ /sys/devices/pci0000:40/0000:40:00.2/iommu/ivhd1/amd-iommu/cap =~ /^(?^:^/sys/class/iommu/.*/intel\-iommu/cap$)$/ /sys/devices/pci0000:40/0000:40:00.2/iommu/ivhd1/amd-iommu/cap =~ /^(?^:^/sys/devices/pci.*.*.*.*\:.*.*/0000\:.*.*\:.*.*..*/dma/dma.*chan.*/quickdata/cap$)$/ /sys/devices/pci0000:40/0000:40:07.0/iommu/amd-iommu/cap =~ /^(?^:^/sys/class/iommu/.*/amd\-iommu/cap$)$/ /sys/devices/pci0000:40/0000:40:07.0/iommu/amd-iommu/cap =~ /^(?^:^/sys/class/iommu/.*/intel\-iommu/cap$)$/ /sys/devices/pci0000:40/0000:40:07.0/iommu/amd-iommu/cap =~ /^(?^:^/sys/devices/pci.*.*.*.*\:.*.*/0000\:.*.*\:.*.*..*/dma/dma.*chan.*/quickdata/cap$)$/ /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:02/device:7a/physical_node/iommu/ivhd1/amd-iommu/cap =~ /^(?^:^/sys/class/iommu/.*/amd\-iommu/cap$)$/ /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:02/device:7a/physical_node/iommu/ivhd1/amd-iommu/cap =~ /^(?^:^/sys/class/iommu/.*/intel\-iommu/cap$)$/ /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:02/device:7a/physical_node/iommu/ivhd1/amd-iommu/cap =~ /^(?^:^/sys/devices/pci.*.*.*.*\:.*.*/0000\:.*.*\:.*.*..*/dma/dma.*chan.*/quickdata/cap$)$/ /sys/devices/pci0000:40/0000:40:01.3/0000:4a:00.0/0000:4b:0a.0/0000:50:00.0/iommu/amd-iommu/cap =~ /^(?^:^/sys/class/iommu/.*/amd\-iommu/cap$)$/ /sys/devices/pci0000:40/0000:40:01.3/0000:4a:00.0/0000:4b:0a.0/0000:50:00.0/iommu/amd-iommu/cap =~ /^(?^:^/sys/class/iommu/.*/intel\-iommu/cap$)$/ /sys/devices/pci0000:40/0000:40:01.3/0000:4a:00.0/0000:4b:0a.0/0000:50:00.0/iommu/amd-iommu/cap =~ /^(?^:^/sys/devices/pci.*.*.*.*\:.*.*/0000\:.*.*\:.*.*..*/dma/dma.*chan.*/quickdata/cap$)$/ And sometimes this thing finishes in 20 seconds, and others, many many minutes. It's not deterministic at all, which is odd. Is the sysfs tree being sorted so that this should always have the same search order? Anyway, I've applied this series as well, this helps in finding the problems :) Note, I can provide an off-list tarball of /sys/ if that would help in debugging anything on your end. thanks, greg k-h