С момента выхода прошлого релиза прошло всего два месяца, и вуаля — Linux 6.11 уже с нами. Несмотря на то, что времени было относительно немного, разработчики внесли достаточно изменений и нововведений. Всего в новой версии свыше 15 тыс исправлений от 2 078 разработчиков, а размер патча составляет 85 МБ. Изменения внесены в 13 282 файла, добавлено 985 857 строк кода, удалено — 268 915.
Хочешь выиграть мерч? Попробуй решить IT-кроссворд! Более 256 вопросов, 7 кроссвордов на разные темы из мира IT — ежедневно с 23 по 29 сентября. Достаточно зарегистрироваться по ссылке.
Оборудование и драйвера
- Конечно, больше всего изменений в драйверах. Так, в AMDGPU включена начальная поддержка GPU AMD RDNA4 («GFX12»). Добавлена поддержка технологий DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 и MMHUB 4.1.
- В драйвере i915 добавлена поддержка GPU Battlemage Xe2 и включен по умолчанию режим CMRR (Content Match Refresh Rate).
- Конечно, продолжается и работа над драйвером Xe для GPU на базе архитектуры Intel Xe. Эта архитектура используется «синих видеокартах» семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake. Улучшена поддержка GPU на базе микроархитектур Battlemage, Arrow Lake и Lunar Lake.
- А еще появилась поддержка платформы SM7150 и GPU X185 и a505 в DRM-драйвере msm (GPU Qualcomm Adreno).
- Добавлена поддержка экранных панелей Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070WL4, Lincoln Technologies LCD197, Ortustech COM35H3P70ULC, AUO G104STN01, K&d kd101ne3-40ti. Возможно, нововведение пригодится кому-то на Хабре.
- Что касается звуковой системы, то здесь тоже много нового. Например, добавлена поддержка чипов и кодеков Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 и Texas Instruments PCM5242.
- Наконец, разработчики добавили финальные изменения для поддержки ARM SoC Snapdragon X Elite. Чип позиционируется как мобильный, он предназначен для работы как в ноутбуках, так и ПК. А производительность у него весьма неплохая: процессор в разных тестах показывает себя лучше чипов Apple M3 и Intel Core Ultra 155H.
Память и системные сервисы
- Одно из главных изменений — принятие патчей с добавлением нового механизма блокировок программных обработчиков прерываний. Он обеспечивает блокировку применяемых структур данных. При этом лишен недостатка в виде блокирования параллельного выполнения не связанного с ними когда. Это изменение дает возможность не только снизить задержки для ядер, которые работают в режиме реального времени, но и увеличить производительность обычных ядер.
- Разработчики добавили набор ioctl-операций для псевдо-ФС NSFS (NameSpace FS), используемой для работы с пространствами имен. Нововведение дает возможность преобразовывать идентификаторы процессоров и групп потоков между различными пространствами имен идентификаторов процессов.
- Добавлена подсистема, которая позволяет организовать подачу питания на девайсы в заданном порядке. Это пригодится в том случае, если какой-то из девайсов должен быть активирован раньше другого.
- А еще в подсистеме асинхронного ввода/вывода io_ring появилась поддержка операций для реализации функций bind() и listen(), используемых для создания принимающих соединения сетевых сокетов.
- Появилась поддержка runtime-констант, которые применяются вместо переменных, инициализируемых один раз. Пример такой ситуации — использование новых констант вместо переменных, хранящих указатель и размер для кэша dentry. Эти переменные выставляются во время загрузки, а потом никогда не меняются.
- Для систем x86-64 реализован новый системный вызов uretprobe(), оптимизирующий работу механизма трассировки uretprobe. Последний позволяет отслеживать значения, возвращаемые функциями в приложениях пространства пользователя.
- Для разных архитектур тоже реализованы различные изменения. Так, для архитектуры ARM64 разработана поддержка горячего подключения (перевода в режимы online/offline) физических и виртуальных CPU на системах с ACPI.
- RISC-V не обошли вниманием, здесь есть поддержка горячего подключения памяти. Кроме того, добавлена поддержка GCC-плагина STACKLEAK.
- Разработчики удалили механизм фиктивного маппинга памяти EFI (fake EFI memory map) на этапе загрузки.
- Поддержку платформы PowerPC 40x убрали.
Дисковая подсистема и файлы
- Одна из ключевых новых возможностей — появление поддержки записи в исполняемые файлы, которые связаны с работающими процессами. Ранее ядро выводило ошибку в случае попытки записи в файл запущенного процесса. Но теперь этого ограничения нет — оно лишено практического смысла.
- Появилась поддержка разработки дайрверов блочных устройств на языке Rust.
- Есть поддержка атомарных операций записи на блочном уровне. В этом случае на накопитель записывается или весь указанный набор блоков, или ничего. Это дает возможность защиты тогда, когда после сбоя оборудования записывается только часть блоков.
- В файловой системе ntfs3 реализована поддержка атрибутов «compressed» и «immutable», определяющих сжатые и неизменяемые файлы.
- В Btrfs в опции монтирования rescue= реализована поддержка новых режимов ignoremetacsums и ignoresuperflags. Их можно использовать для того, чтобы выносить некоторые проверки в пространство пользователя при восстановлении ФС после сбоя.
- В ФС F2FS и Ext4 обработка имен файлов без учета регистра символов (casefold) упрощена через хранение в форме qstr-строк без лишних преобразований регистра.
- В файловой системе Bcachefs добавлена поддержка автоматического прозрачного восстановления проблемных данных, используя коды восстановления ошибок.
Сеть, виртуализация и безопасность
- Что касается сетевых возможностей, то в новом ядре появился sysctl-параметр net.tcp_rto_min_us. Через него можно настроить минимальный таймаут повторной передачи.
- В этом релизе появилось сразу несколько патчей, которые примерно в 15 раз ускоряют получение случайных чисел через системный вызов getrandom().
- Для систем x86-64 включена новая реализация алгоритма шифрования AES-GCM, поддерживающая использование векторных инструкций VAES, VPCLMULQDQ и AVX512/AVX10 для ускорения вычислений. В проведенных тестах прирост производительности после перехода на новую реализацию достигает 156%. Ассемблерная реализация AES-GCM полностью переписана с учетом корректности, производительности, размера и исчерпывающего документирования кода.
- Разработчики реализовали возможность запуска ядра в качестве гостевой системы. В этом случае используется процессорное расширение AMD SEV-SNP (Secure Nested Paging).
- В гипервизор KVM добавлен ioctl-вызов для упреждающего выделения памяти гостевой системе до ее фактического запуска.
Если подвести итоги, то примерно половина изменений в этом выпуске связана с драйверами устройств — это около 46%. Еще 17% относятся к аппаратным архитектурам, 10% — к сетевому стеку, 5% — к файловой системе и еще 3% — к внутренним подсистемам ядра. Кроме того, появился и вариант полностью свободного ядра 6.11 — Linux-libre 6.11-gnu. Оно очищено от элементов прошивок и драйверов с несвободными компонентами.
Что думаете об обновлении? Делитесь своими мыслями в комментариях!
Balling
Зато в 6.12-rc1 завезли уже atomic printk, и сразу же ARCH_SUPPORTS_RT патчи активировали. Ура! Саге уже 20 лет. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=baeb9a7d8b60b021d907127509c44507539c15e5
https://www.phoronix.com/news/Linux-6.12-Does-Real-Time