Релиз планировали на неделю раньше, но он появился только на днях. Расскажем, почему произошла задержка и поговорим о заметных нововведениях.

Нужно больше тестов
Первый релиз-кандидат новой версии ядра выпустили в конце января. Далее, мейнтейнеры продолжили разработку по графику, и шестого марта в рассылке LKML Линус Торвальдс объявил, что релиз Linux kernel 5.17 состоится в течение недели, если «не произойдет что-то из ряда вон выходящее». В итоге релиз все же отложили.
Причина задержки — новые уязвимости в процессорах, позволяющие обойти механизмы защиты от Spectre v2 и извлечь произвольные данные из памяти. Патчи на некоторых системах решили проблему не до конца. Разработчики ядра выделили время на дополнительную серию автоматических тестов и «быстрых фиксов». Также Линус Торвальдс призвал сообщество оценить последнего релиз-кандидата rc-8 в «боевом режиме» при реальных нагрузках. Такой подход позволит получить более полную картину по ситуации и исключить другие неожиданности.
Что добавили или поменяли
Изменения коснулись достаточно большого количества драйверов для материнских плат, графических карт и процессоров, а также мобильных устройств — в частности, ноутбуков и планшетов. Например, добавили поддержку активных перьев, соответствующих открытому стандарту Universal Stylus Initiative (USI). Он определяет механизм взаимодействия стилуса и сенсорного устройства.
Еще одно обновление, на которое стоит обратить внимание, — драйвер для android-планшетов на архитектуре x86. Он позволит устройствам работать на современном «ванильном» ядре и не испытывать проблем с тачпадами, акселерометрами из-за неверных описаний в таблице ACPI DSDT.
Хотя некоторые резиденты тематических форумов ставят под сомнение необходимость драйвера. Они считают, что он лишь «раздувает» кодовую базу kernel’а, и вообще в нем нет смысла, так как производители многих планшетов на x86 уже перестали их обновлять. Но есть и те, кто считает, что драйвер станет подспорьем для энтузиастов, использующих такие устройства для домашних проектов.

Достаточно крупный пласт апгрейдов связан с сетевыми подсистемами. Они улучшают работу открытой операционной системы как в облаке, так и на устройствах интернета вещей. В частности, там обновили драйвера и повысили производительность отдельных протоколов. Например, оптимизировали код для работы с сокетом AF_UNIX, а также улучшили функцию x86_64 csum_partial(), которая нужна для вычисления контрольных сумм TCP. Теперь она меньше нагружает аппаратные ресурсы (на 50–80%).
Взгляд в будущее
После запуска Linux kernel 5.17 мейнтейнеры продолжат работу над следующей версией ядра — она должна выйти до конца весны. Пока рано говорить об исчерпывающем списке нововведений, но о некоторых из них уже известно.
В Linux kernel 5.18 должна появиться поддержка технологии software-defined silicon (SDSi). Она позволяет программно включать и выключать аппаратные возможности процессоров — например, повышать тактовую частоту или активировать дополнительные ядра. Одно из потенциальных применений — лицензирование отдельных функций CPU.
Можно ожидать повышения производительности UDP/IPv6 и новые драйвера для GPU. Больше об изменениях станет известно с выходом релиз-кандидата ядра 5.18.
О протоколах, стандартах и open source в нашем блоге:
Еще мы пишем о работе интернет-провайдеров:
MinimumLaw
Буквально вчера обнаружил довольно нужное изменение в drivers/usb/misc/ehset.c Оно по коду ерунда, но по важности весьма значительно. Все, кто по серьезному относятся к работе USB в своих железках будут довольны. Правда список хабов точно надо будет расширять. Был удивлен. Казалось что этот код давно не поддерживается за ненадобностью.
chemtech
Можете рассказать подробнее?
MinimumLaw
Могу. Почему нет?
Для тестирования электрической части USB (2.0 точно, возможно и 3.x тоже - простите не в курсе) обычно используются дорогостоящие приборы. Не всем (даже крупным) разработчикам они по карману. С другой стороны, качество изготовления и трассировки плат, а равно соответствия заявленным требованиям критических компонентов (микросхемы защиты от статики, кварцы) очень хотелось бы проверять. В не зависимости от того надо ли нам получать официальную наклейку или или нет.
Есть такой документ Embedded Host High Speed Electrical Test Procedure. Если я все правильно понимаю, то Revision 1.01 от декабря 2018 года - она последняя. Суть в том, что с помощью не сильно дорогих и повторяемых оснасток, вместе с не самым дорогим осцилоскопом можно выполнить проверку на соответствие электрическим требованиям. Там описана плата VIDPID - данный драйвер как раз для нее. В реальной жизни ее легко можно заменить почти любым USB устройством, которое позволяет изменить свой VID и PID. Ну или найти микроконтроллер и быстренько набросать прошивочку (только тут аккуратнее - настоящая USB 2.0 до сих пор редкость и чаще всего там окажется 1.1).
Теперь о проблеме. С корневыми хабами проблем нет. Все работает как и ожидается. А вот в внешними... Возьмем для примера тестовую плату с VID 0x1A0A и PID 0x0104.Воткнутая плата с такими параметрами должна заставлять HOST непрерывно передавать пакет с заданным содержанием. Больше того, плату надо убрать, а пакет должен продолжать посылаться (для выполнения измерений). И корневой хаб всегда ведет себя именно так. А вот внешние... С частью работает, а с частью нет. Часть хабов просто присылаю событие - устройство отключено. Причина как всегда в том, кто и как внимательно читает требования спецификации. А по факту все внешние USB как правило уходят с внешнего хаба. Который капризничает при тестировании.
Данный коротенький патч исправляет эту неприятность. Нам точно подходит. Мы городили свои костыли, куда как более сложные. Потому и не показывали. А вот оказывается как можно было.