Re: linux-next: build warning after merge of the rdma tree

From: Lee Jones
Date: Wed Feb 10 2021 - 17:10:02 EST


On Wed, 10 Feb 2021, Jason Gunthorpe wrote:

> On Wed, Feb 10, 2021 at 09:11:49PM +1100, Stephen Rothwell wrote:
> > Hi all,
> >
> > After merging the rdma tree, today's linux-next build (htmldocs) produced
> > this warning:
> >
> > drivers/infiniband/core/device.c:859: warning: Function parameter or member 'dev' not described in 'ib_port_immutable_read'
> > drivers/infiniband/core/device.c:859: warning: Function parameter or member 'port' not described in 'ib_port_immutable_read'
> >
> > Introduced by commit
> >
> > 7416790e2245 ("RDMA/core: Introduce and use API to read port immutable data")
>
> drivers/infinband is W=1 clean right now in linux-next
>
> But how can I build *only* drivers/infiniband using W=1 so I can keep
> it that way?
>
> The rest of the kernel is not clean and creates too much warning noise
> to be usable, even with my mini config.
>
> Just doing a 'make W=1 drivers/infiniband' is sort of OK, but then I
> end up compiling things twice
>
> Does anyone know a good solution?

I have 2 solutions that I use;

When building locally, I have a special flag for testing branches I
maintain. The flag indicates that the output should be passed through
a parsing script which highlights entries I care about. The script
handles lots of other options such as building for different
architectures, running smatch and sparse, etc, but the bit you might
care about goes something like this:

eval $make $makeoptions $extraoptions $flagoptions $diroptions 2>&1 | (\
while read line; do
if echo $line | grep -i "${DIRSGREP}" > /dev/null; then
print_red "$line" >&2;
else
echo $line;
fi
done) | tail

This hides almost all output that I don't care about and highlights
the information that is of interest to me in red.

Another solution is to use a builder (I personally use Tuxsuite) to
run 70 different builds (architectures/configs) on *both* a common
base (latest -next, kernel release, stable release, etc) and the head
of the branch I care about and compare the two. Tuxsuite is nice
since it returns a JSON file with all of the results, so comparison
becomes trivial.

Output of a failed build might look like this:

$ build-test stable v4.9.257 # where v4.9.257 is the common base
Using Tuxbuild to compare build failures/warnings

Tuxbuild the base [v4.9.257]
Total 0 (delta 0), reused 0 (delta 0)
To [remote_repo]/linux.git
* [new tag] tuxbuild-to-test-1414 -> tuxbuild-to-test-1414
Tuxbuild the current branch [tb-some-topic-branch]
Total 0 (delta 0), reused 0 (delta 0)
To [remote_repo]/linux.git
* [new tag] tuxbuild-to-test-1415 -> tuxbuild-to-test-1415
Waiting for child processes to finish
Evaluating the results

Errors were caused

[v4.9.257] tb-some-topic-branch c18034406e3b ("subsystem: Descriptive commit message")

arc axs101_defconfig gcc-9
https://builds.tuxbuild.com/1oIa24eac9ANKJLLMBDgP6zwE5d/ Pass (0 errors - 0 warnings) : v4.9.257
https://builds.tuxbuild.com/1oIa4WZ1jw4tJtt3mLqTNiX4C1a/ Fail (6 errors - 3 warnings) : tb-some-topic-branch

arm allmodconfig gcc-8
https://builds.tuxbuild.com/1oIa21QYn23XxgnDKUh9as5Pgvc/ Pass (0 errors - 0 warnings) : v4.9.257
https://builds.tuxbuild.com/1oIa4YT8nEIjaFOaFLuRVId2D7I/ Fail (0 errors - 9 warnings) : tb-some-topic-branch

arm64 defconfig gcc-9
https://builds.tuxbuild.com/1oIa2AR63BljDuvKHKet8Qqga7L/ Pass (1 errors - 3 warnings) : v4.9.257
https://builds.tuxbuild.com/1oIa4biSryBYrj4JoZlRGpgx8AF/ Fail (2 errors - 8 warnings) : tb-some-topic-branch

--
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog