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

Unsplash / Pawel Czerwinski
Unsplash / Pawel Czerwinski

Нужно больше тестов

Первый релиз-кандидат новой версии ядра выпустили в конце января. Далее, мейнтейнеры продолжили разработку по графику, и шестого марта в рассылке LKML Линус Торвальдс объявил, что релиз Linux kernel 5.17 состоится в течение недели, если «не произойдет что-то из ряда вон выходящее». В итоге релиз все же отложили.

Причина задержки — новые уязвимости в процессорах, позволяющие обойти механизмы защиты от Spectre v2 и извлечь произвольные данные из памяти. Патчи на некоторых системах решили проблему не до конца. Разработчики ядра выделили время на дополнительную серию автоматических тестов и «быстрых фиксов». Также Линус Торвальдс призвал сообщество оценить последнего релиз-кандидата rc-8 в «боевом режиме» при реальных нагрузках. Такой подход позволит получить более полную картину по ситуации и исключить другие неожиданности.

Что добавили или поменяли

Изменения коснулись достаточно большого количества драйверов для материнских плат, графических карт и процессоров, а также мобильных устройств — в частности, ноутбуков и планшетов. Например, добавили поддержку активных перьев, соответствующих открытому стандарту Universal Stylus Initiative (USI). Он определяет механизм взаимодействия стилуса и сенсорного устройства.

Еще одно обновление, на которое стоит обратить внимание, — драйвер для android-планшетов на архитектуре x86. Он позволит устройствам работать на современном «ванильном» ядре и не испытывать проблем с тачпадами, акселерометрами из-за неверных описаний в таблице ACPI DSDT.

Хотя некоторые резиденты тематических форумов ставят под сомнение необходимость драйвера. Они считают, что он лишь «раздувает» кодовую базу kernel’а, и вообще в нем нет смысла, так как производители многих планшетов на x86 уже перестали их обновлять. Но есть и те, кто считает, что драйвер станет подспорьем для энтузиастов, использующих такие устройства для домашних проектов.

Unsplash / Rod Long
Unsplash / Rod Long

Достаточно крупный пласт апгрейдов связан с сетевыми подсистемами. Они улучшают работу открытой операционной системы как в облаке, так и на устройствах интернета вещей. В частности, там обновили драйвера и повысили производительность отдельных протоколов. Например, оптимизировали код для работы с сокетом 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 в нашем блоге:

Еще мы пишем о работе интернет-провайдеров:


Комментарии (3)


  1. MinimumLaw
    18.03.2022 08:39
    +3

    Буквально вчера обнаружил довольно нужное изменение в drivers/usb/misc/ehset.c Оно по коду ерунда, но по важности весьма значительно. Все, кто по серьезному относятся к работе USB в своих железках будут довольны. Правда список хабов точно надо будет расширять. Был удивлен. Казалось что этот код давно не поддерживается за ненадобностью.


    1. chemtech
      18.03.2022 10:28
      +4

      Можете рассказать подробнее?


      1. MinimumLaw
        18.03.2022 11:39
        +7

        Могу. Почему нет?

        Для тестирования электрической части 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 как правило уходят с внешнего хаба. Который капризничает при тестировании.

        Данный коротенький патч исправляет эту неприятность. Нам точно подходит. Мы городили свои костыли, куда как более сложные. Потому и не показывали. А вот оказывается как можно было.