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