|
|
Subscribe / Log in / New account

A look at the 4.14 development cycle

By Jonathan Corbet
October 20, 2017
The 4.14 kernel, due in the first half of November, is moving into the relatively slow part of the development cycle as of this writing. The time is thus ripe for a look at the changes that went into this kernel cycle and how they got there. While 4.14 is a fairly typical kernel development cycle, there are a couple of aspects that stand out this time around.

As of the 4.14-rc5 prepatch, 12,757 non-merge changesets had found their way into the mainline; that makes 4.14 slightly busier than its predecessor, but it remains a fairly normal development cycle overall. If, as some have worried, developers have pushed unready code into 4.14 so that it would be present in a long-term-support release, it doesn't show in the overall patch volume.

1,649 developers have contributed code in this development cycle, a number that will almost certainly increase slightly by the time the final 4.14 release is made. Again, that is up slightly from 4.13. Of those developers, 240 made their first contribution to the kernel in 4.14. The numbers are fairly normal, but a look at the most active developers this time around shows a couple of unusual aspects.

Most active 4.14 developers
By changesets
Arvind Yadav5444.3%
Bhumika Goyal1951.5%
Gustavo A. R. Silva1561.2%
Colin Ian King1511.2%
Julia Lawall1411.1%
Arnd Bergmann1271.0%
Mauro Carvalho Chehab1170.9%
Bart Van Assche1130.9%
Arnaldo Carvalho de Melo1060.8%
Paul Burton1000.8%
Chris Wilson960.8%
Markus Elfring940.7%
Thomas Gleixner870.7%
Dan Carpenter870.7%
Laurent Pinchart870.7%
Daniel Vetter830.7%
Xin Long820.6%
Christoph Hellwig790.6%
Geert Uytterhoeven770.6%
Michael Ellerman760.6%
By changed lines
Greg Kroah-Hartman12942114.9%
Ping-Ke Shih12291214.1%
Lionel Landwerlin302893.5%
Mauro Carvalho Chehab224612.6%
Daniel Scheller177082.0%
Nick Terrell142231.6%
Aviad Krawczyk128311.5%
Salil Mehta120511.4%
Juergen Gross110361.3%
Todor Tomov92861.1%
Sukadev Bhattiprolu92481.1%
Hannes Reinecke90031.0%
Arnaldo Carvalho de Melo77900.9%
Andi Kleen68260.8%
Johannes Berg66310.8%
Masahiro Yamada64290.7%
Russell King45730.5%
John Fastabend44120.5%
Jérôme Glisse41280.5%
Vikas Shivappa40910.5%

Arvind Yadav contributed 544 changesets mostly focused on making device-ID lists in the kernel constant. Unlike much "constification" work, these changes probably do not have much security significance, but they do tend to make the kernel text size a little smaller. Bhumika Goyal got her start as an Outreachy intern making structures full of function pointers const — a job that does improve security; she is continuing that work post-Outreachy with support from the Core Infrastructure Initiative (CII). Gustavo A. R. Silva also did constification work, along with contributing a number of other fixes, with CII support. Colin Ian King did, wait for it, constification work along with various other fixes and Julia Lawall also did constification work.

In other words, the top five contributors contributed nearly 1,200 changes mostly cleaning up declarations in the kernel. This work may not draw the same sort of attention as the addition of hardening mechanisms, but it is an important part of hardening the kernel overall.

Greg Kroah-Hartman got to the top of the "changed lines" column mostly by virtue of a single patch deleting the remaining old firmware files from the kernel tree. Firmware has long been maintained externally, so this cleanup was overdue. Ping-Ke Shih added yet another Realtek wireless driver to the staging tree, Lionel Landwerlin reworked parts of the Intel i915 driver in ways that allowed the removal of a lot of code, Mauro Carvalho Chehab contributed changes all over the media and documentation subsystems as usual, and Daniel Scheller added a large new media driver.

The 120,000-line Realtek wireless driver merits a bit more attention; it was the subject of some complaining about how Realtek gets its drivers into the kernel. But something of note has happened here. Numerous Realtek drivers have been merged via the staging tree, often moving on to the mainline kernel; that work has generally been done by Larry Finger on his own time. But, as he explained, he is reaching an age where he lacks the energy for this work and intends to stop soon. Thus it is encouraging that Ping-Ke Shih, the submitter of the Realtek driver patch this time around, is an actual Realtek employee. It would appear that the company has finally decided to put some resources into Linux support and, hopefully, the situation with its wireless drivers will improve over time. Meanwhile, Realtek should send Larry a nice retirement present — he has certainly earned it.

Work on 4.14 was supported by 213 companies that could be identified — a typical number that is, once again, a little higher than the 203 seen in the 4.13 cycle. The most active employers this time around were:

Most active 4.14 employers
By changesets
Intel132810.4%
(None)8136.4%
Red Hat7545.9%
(Unknown)5754.5%
IBM5664.4%
Motorola5444.3%
Linaro5003.9%
Google4533.6%
Mellanox4253.3%
SUSE4043.2%
Linux Foundation3913.1%
AMD3482.7%
Renesas Electronics3192.5%
Samsung2622.1%
Rockchip2572.0%
Oracle2211.7%
ARM2181.7%
(Consultant)1991.6%
Canonical1851.5%
Broadcom1821.4%
By lines changed
Linux Foundation13136915.1%
Realtek12497614.4%
Intel10167111.7%
(None)472225.4%
Red Hat318883.7%
SUSE294083.4%
Huawei Technologies288073.3%
IBM283633.3%
Linaro256142.9%
Samsung249402.9%
(Unknown)227492.6%
Mellanox183792.1%
Facebook183452.1%
Google172572.0%
AMD146211.7%
(Consultant)121621.4%
Renesas Electronics120041.4%
ST Microelectronics99231.1%
Rockchip90911.0%
ARM84381.0%

These results are fairly typical for recent kernels; the biggest surprise, perhaps, is the appearance of Realtek as was discussed above. In general, the kernel project continues to move forward powered by a great deal of corporate support.

While the kernel project clearly depends on developers to get the code written, it also depends on those who test changes and report bugs. Some of the time, at least, that contribution is noted through the addition of tags in the patches. Looking at the Reported-by (619 through 4.14-rc5) and Tested-by tags (605) yields the following results:

Testing and bug reporting in 4.14
Reported-by tags
Fengguang Wu365.8%
Dan Carpenter274.4%
Andrey Konovalov172.7%
Peter Zijlstra142.3%
Eric Biggers121.9%
Arnd Bergmann111.8%
Michael Ellerman111.8%
Stephen Rothwell91.5%
kbuild test robot71.1%
Eric Dumazet61.0%
Dmitry Vyukov61.0%
Jianlin Shi61.0%
Christoph Hellwig50.8%
Geert Uytterhoeven50.8%
Ingo Molnar50.8%
Tetsuo Handa50.8%
kernel test robot50.8%
Mathias Kresin50.8%
Tested-by tags
Andrew Bowers518.4%
Richard Scobie213.5%
Arnaldo Carvalho de Melo193.1%
Laurent Pinchart162.6%
Thierry Reding162.6%
Andrey Konovalov152.5%
Laura Abbott142.3%
Eric Biggers122.0%
Jasmin Jessich122.0%
Dietmar Spingler122.0%
Manfred Knick122.0%
Aaron Brown122.0%
Marcin Wojtas122.0%
Pavel Machek81.3%
Philippe Cornu71.2%
Stan Johnson71.2%
Heiko Stuebner61.0%
Ondrej Zary61.0%

In truth, the report credits for Fengguang Wu and the two "test robot" entries probably belong together, but they were credited separately in the patches.

These numbers, of course, greatly understate the amount of testing and reporting that is happening in the kernel community. The requisite tags do not always get added to patches as they should and, in the case of testing, many testers do not make themselves known in the first place if things work for them. That said, the tags that do exist record real work done, and the kernel is better for it.

Overall, the kernel development process would appear to continue to run relatively smoothly, despite the occasional hiccup. There are few projects that would be able to integrate changes at this rate and produce a result that will be the base for countless deployed systems in the coming years.

Index entries for this article
KernelReleases/4.14


to post comments

A look at the 4.14 development cycle

Posted Oct 21, 2017 15:28 UTC (Sat) by abelloni (subscriber, #89904) [Link] (5 responses)

As a maintainer, I see the patch spamming as done by Arvind, Bhumika and Gustavo as really harmful. They don't usually test their patches. They sometime even don't compile test them as seen in https://patchwork.kernel.org/patch/9758867/ for example. Often, comments from reviews are not taken into account and we never see a v2 of the patch.
Worse, some patches are taken by maintainers because they are flooded by hundreds of similar looking patches that seem to do the correct thing but are actually breaking drivers or making them bigger for no good reason. See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/... later fixed by https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/... .

A look at the 4.14 development cycle

Posted Oct 21, 2017 23:46 UTC (Sat) by l1k (subscriber, #112260) [Link]

It's definitely a double-edged sword. I tried to raise this point at Kernel Recipes, see this video at 21m46s:
https://www.youtube.com/watch?v=y0__yxM0New#t=21m46s

The patch discussed in the video is http://git.kernel.org/linus/7dab5467647b : This driver contained a call to spi_get_drvdata(spi) before performing a null pointer check on spi. The patch moves the spi_get_drvdata() further down. However if spi is null, then we're missing an spi_set_drvdata() somewhere else, as e.g. in http://git.kernel.org/linus/0964e40947a6. Otherwise it's pointless to check for null and the check can be removed entirely. So the patch addresses the issue in a somewhat superficial way and doesn't check if there is a deeper issue here. And as it turns out, the patch was incomplete and had to be fixed up with http://git.kernel.org/linus/f00c2987bfdd. More diligence would be desirable to avoid such mistakes.

A look at the 4.14 development cycle

Posted Oct 22, 2017 3:19 UTC (Sun) by kschendel (subscriber, #20465) [Link] (2 responses)

"Worse, some patches are taken by maintainers because they are flooded by hundreds of similar looking patches that seem to do the correct thing but are actually breaking drivers or making them bigger for no good reason."

I trust that you don't mean to imply that the driver in your example wasn't broken to start with? I don't advocate making things worse, of course, but if foo() can fail wth a return value, either the caller cares or it doesn't. If it cares, it has to check. If it doesn't, the only correct call form is (void) foo(), which the original code didn't do.

Failing to properly unwind state, and changing semantics by changing the point of call, are obviously not things that should be done in a patch that purports to fix errors. However, you seem to be asking for things to be left alone, rather than be fixed properly. I certainly hope I misunderstand your statement.

A look at the 4.14 development cycle

Posted Oct 22, 2017 18:41 UTC (Sun) by abelloni (subscriber, #89904) [Link]

Well, most drivers don't care about the result of clk_enable or clk_prepare_enable because it will simply never fail on their platforms. The call form may have to be fixed but not as blindly and badly as it is done currently. I was ok with the "fix" being fixed. What I really don't want is the addition of unused strings.

A look at the 4.14 development cycle

Posted Oct 22, 2017 20:04 UTC (Sun) by error27 (subscriber, #8346) [Link]

Most kernel devs think the (void) foo() format is ugly. You're often expected to know what things can't fail. Sometimes they can't fail in the sense that if they do the system won't boot.

To be honest the places, I have seen which use the (void) foo() format are often bad code where it should have been checked but the dev was too lazy to write error handling. Although possibly I am biased since I am looking at static checker warnings and spend most of my day looking at buggy staging code. It's like how a bail bondsman thinks everyone is a crook.

A look at the 4.14 development cycle

Posted Oct 22, 2017 18:51 UTC (Sun) by GustavoARSilva (guest, #112293) [Link]

I don't think I have ever sent you any patch and, it is obvious that you want to express your opinions on a very particular case. So don't generalize by including other people's names here.

Actually, only a third of the patches I sent during this development cycle were related to constification (the article is a bit misleading in this regard). So clearly I'm working on other stuff and I'm not doing the spam thing that you mention. So please, remove my name from your _spam_ list.

--
Gustavo A. R. Silva

A look at the 4.14 development cycle

Posted Oct 21, 2017 17:50 UTC (Sat) by luya (subscriber, #50741) [Link]

One of improvement yet to be merged is a better handling of ECDT devices for laptops especially those from ASUS. https://patchwork.kernel.org/patch/9971557/

A look at the 4.14 development cycle

Posted Oct 24, 2017 8:46 UTC (Tue) by jani (subscriber, #74547) [Link] (1 responses)

Broken record: Please include Reviewed-by stats.

A look at the 4.14 development cycle

Posted Oct 24, 2017 12:42 UTC (Tue) by kdave (subscriber, #44472) [Link]

$ git log v4.13..v4.14-rc6 | sed -n 's/^\s\+Reviewed-by:\([^<]*\)<.*/\1/p' | sort | uniq -c | sort -rn | head -n30
123 Alex Deucher
95 Christoph Hellwig
72 Tim Sell
72 Johannes Thumshirn
70 Christian König
69 Thomas Gleixner
67 Daniel Vetter
65 David Sterba
64 Guenter Roeck
63 Darrick J. Wong
61 Geert Uytterhoeven
58 Oleg Drokin
58 Andrew Lunn
55 Laurent Pinchart
52 Dennis Dalessandro
46 Hannes Reinecke
44 Chris Wilson
43 Maarten Lankhorst
43 Florian Fainelli
42 David Binder
42 Andy Shevchenko
41 Sean Paul
40 Borislav Petkov
35 Jan Kara
35 Ido Schimmel
34 Mike Marciniszyn
34 Andreas Dilger
29 Simon Horman
29 Leon Romanovsky
29 Don Zickus

Realtek drivers

Posted Nov 2, 2017 2:28 UTC (Thu) by scientes (guest, #83068) [Link] (1 responses)

I just ran into the Realtek driver madness[1], and will be returning the USB wifi adapter I bought (if I can). Does this mean that Realtek will actually clean up its rtl8812au driver anytime soon? The firmware for these is not just a blob, but a byte array: https://github.com/gnab/rtl8812au/blob/master/hal/OUTSRC/...

[1] https://bugzilla.kernel.org/show_bug.cgi?id=197675

Realtek drivers

Posted Nov 2, 2017 19:13 UTC (Thu) by JanC_ (guest, #34940) [Link]

Ugh, I stumbled into that one too…

BTW, I'm currently using this version, which (for now) seems to work:
https://github.com/abperiasamy/rtl8812AU_8821AU_linux


Copyright © 2017, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds