Новый релиз ядра Linux 6.5 вышел всего два месяца спустя после предыдущего. Но работа все равно проделана большая, даром, что времени прошло немного. Так, в новой версии сразу 1467 исправления от более, чем 2 тыс. разработчиков. Общий размер патча составляет 78 МБ. Добавлено 1294205 строк кода, в то время, как удалено 930515 строк. Как всегда (ну, почти), большая часть изменений касаются драйверов, чуть меньше — обновление кода, который имеет отношение к архитектурам, затем идут изменения сетевого стека, файловых систем и внутренних подсистем ядра. Подробности — под катом.
Оборудование и драйвера
- В новой версии удалось расширить поддержку контроллеров USB4, включая добавление начальной поддержки Intel Barlow Ridge, поддерживающих USB4 v2 (80 Gbps через USB Type-C).
- Появилась поддержка большого количества ARM-чипов: ARM-чипов Nuvoton MA35D1, Amlogic C3 и STMicroelectronics STM32MP2 на базе ARM Cortex-A35, Samsung Exynos 4212, Qualcomm MSM8939 (Snapdragon 615), Qualcomm SC8180x (Snapdragon 8cx), Qualcomm SDX75 и Alibaba T-Head TH1520.
- Разработчики не обошли вниманием и ARM-платы. Так, добавлена поддержка таких моделей, как Marantec Maveo, Endian 4i Edge 200, Epson Moverio BT-200, PHYTEC STM32MP1-3, ICnova ADB4006, Emtop SoM & Baseboard, NXP i.MX8MM EVKB, Gateworks Venice gw7905-2x, NVIDIA IGX Orin, Fxtec Pro1X, NVIDIA Jetson Orin Nano (tegra234), Rockchip Indiedroid Nova (rk3588), Edgeble Neural Compute Module 6B (rk3588), FriendlyARM NanoPi R2C Plus (rk3328), Anbernic RG353PS (rk3566), Lunzn Fastrhino R66S/R68S (rk3568), PHYTEC phyBOARD-Lyra-AM625, Toradex Verdin, а также плат, используемых в устройствах Sony Xperia M4 Aqua и Acer Aspire 1.
- Также теперь поддерживаются беспроводные чипы Realtek RTL8192FU, Realtek RTL8723DS и Realtek RTL8851BE.
- Уделено внимание и драйверу AMDGPU, где теперь включена по дефолту технология адаптивной синхронизации FreeSync. Она нужна для корректировки частоты обновления информации на экране, обеспечения плавности и отсутствия разрывов изображения во время просмотра видео. Добавлена поддержка разгона (OverDrive) частоты видеокарт Radeon RX 7000.
- Что касается драйвера i915, то здесь добавлена начальная поддержка чипов Intel Meteor Lake. Также теперь можно использовать переменную частоту обновления экрана (VRR, Variable Rate Refresh) на ноутбуках с экранами на базе интерфейса eDP (Embedded Display Port). Для framebuffer реализована поддержка мапинга памяти (mmap).
Память и системные сервисы
- Сейчас реализована поддержка расширения PIE (ARMv8.9 Permission Indirection Extension) для систем на базе аритектуры ARM64. Расширение предоставляет возможность настройки прав доступа к памяти. Так, вместо кодирования информации о полномочиях в таблице страниц памяти, PIE использует индекс массива полномочий, указанный в регистре.
- Кроме того, для систем на базе ARM, которые поддерживают расширение Armv8.8, теперь появилась возможность использования процессорных инструкций memcpy/memset в пространстве пользователя.
- Также ускорена процедура перевода процессоров в состояние online за счет параллельной активации нескольких CPU.
- Появилась поддержка протокола Unaccepted Memory, дающего возможность принимать выделенную хост-системой память в гостевых системах, защищённых при помощи технологии AMD SEV-SNP (Secure Nested Paging) или Intel TDX (Trusted Domain Extensions).
- Осуществлён переход на использование выпуска Rust 1.68.2, в котором стабилизированы некоторые возможности, задействованные в ядре. Улучшен API pin-init. Расширены возможности модулей 'error', 'sync', 'str', 'task' и 'types'.
- В подсистеме BPF появилась поддержка добавлена поддержка прикрепления фильтров к kfunc (функции ядра, доступные для использования в программах BPF) для ограничения контекста, в котором допускается вызов kfunc.
- Добавлено автоматическое выявление и пометка работ, интенсивно расходующих ресурсы CPU (выполняемых более 10 мс).
- Не обошли вниманием и архитектуру RISC-V, где теперь реализована поддержка ACPI и расширения «V» (Vector, векторные инструкции). Для управления расширением в prctl() предложен параметр "/proc/sys/abi/riscv_v_default_allow" и серия флагов «PR_RISCV_V_*».
- Китайская архитектура Loongarch не забыта. Для нее добавлена поддержка одновременной многопоточности (SMT, Simultaneous Multi-Threading). Также обеспечена возможность сборки ядра для Loongarch компилятором Clang.
- В одном из последующих выпусков уберут механизм распределения памяти SLAB, вместо которого в ядре будет использоваться только SLUB.
- В планировщике задач оптимизирована балансировка нагрузки между ядрами CPU за счёт исключения лишней миграции между областями SMT (Simultaneous Multi-Threading) на гибридных системах.
Дисковая подсистема и файлы
- Здесь, как и говорилось в самом начале, изменений не очень много. Но они есть, и некоторые достаточно важные. Например, Btrfs предложены новые оптимизации. Реализована передача данных в синхронном режиме для быстрых алгоритмов вычисления контрольных сумм crc32c и xxhash).
- Кроме того, в EXT4 почистили код, который связан с с деревом состояний экстентов, журналированием и выделением блоков. Повышена производительность параллельной перезаписи в режиме DIO (Direct I/O).
- В XFS убрали признак экспериментальной разработки с кода подсчёта крупных экстентов. Задействован режим FMODE_CAN_ODIRECT.
- Еще в одной файловой системе, F2FS реализована поддержка опции монтирования «errors=», через которую можно настроить поведение в случае возникновения ошибок при чтении или записи данных на накопитель.
- ФС Overlayfs перевели на использование нового API для монтирования. В ядре 6.5 для Composefs добавлена поддержка слоёв «data-only», используемых только для данных (отдельно от метаданных).
Сеть
- Для беспроводных устройств IEEE 802.15.4 добавили поддержку режима активного сканирования сети.
- Разработчики переписали реализацию системных вызовов sendpage и splice, в которых вместо передачи данных в сокет страница за страницей, в обработчиках sendmsg реализована передача ссылок на данные.
- А еще добавлен новый тип сообщений SCM_PIDFD. Он дает возможность использовать сокеты и вызовы sendmsg()/recvmsg() для передачи сведений о pidfd-идентификаторе процесса.
Виртуализация и безопасность
- Здесь тоже совсем немного изменений. Из основного можно выделить добавление поддержки механизма Landlock, позволяющего ограничить взаимодействие группы процессов с внешним окружением, в UML (User Mode Linux).
- В минимальной стандартной Си-библиотеке Nolibc реализована поддержка механизма выявления переполнений стека Stack Protector.
- И также активирована по дефолту функциональность «secretmem», работа которой обеспечивается системным вызовом memfd_secret().
Как всегда, вместе релизом выпущен и вариант свободного ядра 6.5 — Linux-libre 6.5-gnu. Из него убраны элементы прошивок и драйверов, в которых есть несвободные компоненты или участки кода, область применения которых ограничена производителем.
Другие интересные материалы
Автор: Aleksandr