Що нового в Linux 6.18-rc3: зміни ядра та контексту

  • SMB Direct випереджає версію 6.18-rc3 з покращеннями надійності на клієнтській та серверній сторонах.
  • XFS, io_uring, мережеві технології та DRM отримують практичні та розподілені виправлення.
  • На карті версій 6.17 позначено як стабільну, а 6.12/6.6 – як ключові LTS.

Linux 6.18-RC3

Третій кандидат на запуск майбутнього 6.18 прибуває Без фанфар і з тим спокійним пульсом, який так цінує екосистема ядра. За словами самого Лінуса Торвальдса, цифри помірні, і цикл просувається нормально; іншими словами, Linux 6.18-rc3 полірує, виправляє та налаштовує без революцій, зосереджуючись на виправленнях, розподілених по всьому дереву.

У своїй короткій нотатці Торвальдс зазначає, що найбільшу частину цієї партії складають виправлення SMB Direct, як на стороні клієнта, так і на стороні сервера, з кількома патчами для тонкого налаштування. Решта поширюється як завжди: приблизно половина стосується драйверів (також додає прив'язки DeviceTree) та Решта — це різні виправлення: XFS, мережа, io_uring, DRM, Rust Binder. і компанія. Якщо вас цікавлять подробиці, нижче наведено короткий журнал із десятками змін, які ми розглядаємо за підсистемами.

Ключові нові можливості в Linux 6.18-rc3

Блок SMB Direct виділяється в цьому тижневому аналізі. Як клієнт, так і сервер SMB коригують кредити та черги, щоб запобігти регресіям та нестачі ресурсів. Кілька частин підсистеми підвищують планку, забезпечуючи, щоб Структури send/flush резервують достатньо місця і що стани відключення надійно пробуджують усі потоки очікування.

Крім того, у XFS внесено виправлення для запобігання циклам зайнятості в колекторі сегментів, кешування відкритих областей в i_private, посилення обробки застарілих параметрів монтування та виправити чутливі розділи перевірки та блокування посиланьЗміни XFS у цьому rc3 зосереджені на стабільності та чіткій діагностиці застарілих параметрів.

Інша половина пирога — це звичайна суміш драйверів та платформ: від DRM/AMD та DRM/Xe до Rockchip, мережевих інтерфейсів mlx5/mlx5e, фізичних процесорів Realtek та Micrel, UFS/Qualcomm, USB/xHCI DbC та багато іншого. Це «сантехнічний» rc3, в якому Значення визначається як сума невеликих коригувань що запобігають збоям, витокам пам'яті або невідповідностям таймінгу.

Малий та середній бізнес (SMB) та SMB Direct: акцент на надійності

El короткий журнал чітко пояснює зусилля SMB Direct. Серед найважливіших моментів:

  • Клієнт і сервер SMB налаштовують простір для робочих запитів, запобігаючи переповненню та забезпечуючи безпеку зливу QP (ib_drain_qp). Вводяться та споживаються лічильники. Кредити на доставку на критичних шляхах.
  • Сервер спрощує керування списком братів і сестер на шляхах надсилання (flush/send_done) та змушує відключення RDMA пробуджувати всі потоки з першої спроби.
  • Трасування в smb3_rw_credits підкріплено, включення перевпорядковано таким чином, щоб структури були доступні в точках трасування та Підписані типи в структурах кредитів TCP виправлено.

Загалом, зміни SMB Direct спрямовані на забезпечення плавності передачі даних RDMA під навантаженням, передбачуваної поведінки та обробки помилок без будь-яких завислих процесів. Ці коригування, хоча й незначні, змінюють ситуацію у високопродуктивних середовищах.

Файлові системи та сховища

Розділ файлові системи та блоки включає кілька визначних частин:

  • XFS: уникнення циклів зайнятості, кешування зон, заборона __GFP_NOFAIL під час ініціалізації контексту FS, покращення повідомлень для застарілих опцій та виправити замки та лічильники секторів.
  • Btrfs: Виправлення в ref-verify (IS_ERR проти NULL), звільнення частково ініціалізованої fs_info під час збоїв та виправлення в btrfs send для уникнення дублювання операцій rmdir з extrefs.
  • EROFS: Посилення обробки розширень зі шкідливим кодом для запобігання циклам та об'єднати пошукові запити ретроспективного пошуку на пошкоджених підсторінках.
  • Блоковий рівень: Забезпечте вирівнювання LBA під час використання інформації про захист (PI) для підтримки цілісності низького рівня.

Також спостерігається активність у scsi/ufs/phy (прив'язки для нових сумісних пристроїв), storvsc для надання переваги каналам, спорідненим до процесора, що видає операції введення/виведення, та налаштування драйверів, таких як qla4xxx. Ці елементи разом... покращення стабільності та продуктивності вводу/виводу у реальних випадках.

Мережі: mlx5/mlx5e, зв'язування, HSR та інше

У мережі картина різноманітна, з акцентом на водіях висока продуктивність і малоподорожовані куточки:

  • mlx5/mlx5e: маски регістрів PPHCR в PCAM, пропуск запитів, якщо пристрій не підтримує регістр, та виправлення RX під час генерації skb з нелінійних xdp_buffs як у застарілих, так і в крокових чергах. Також, Виправлення в IPsec на пристроях MPV і devcom повертає NULL у разі помилок.
  • Зв'язування: Масив підлеглих пристроїв оновлюється в режимі широкомовлення, а можливі втрати або дублювання в сповіщеннях однорангових пристроїв виправляються.
  • HSR: Запобігає створенню пристроїв зі ведомими пристроями з інших мереж, закриваючи несумісний шлях конфігурації.
  • Gro та gro_cells: hwtstamps очищено на шляхах повторного використання skbs та виправлено дисбаланс замка у gro_cells_receive.
  • Інше: virtio-net обнуляє невикористані хеш-поля; hibmcge вибирає FIXED_PHY; dlink використовує dev_kfree_skb_any; stmmac/rk виправляє функцію вибору годинника; enetc виправляє блокування MDIO та значення TRUESIZE.

Загалом, мережевий стек отримує ту порцію патчів, які запобігають несподіванкам під навантаженням та піклуються про деталі в шляхах даних, які, у разі їх збою, перетворюються на затримку, втрати або блоки.

Графіка та дисплей: DRM/AMD, DRM/Xe, Rockchip та QR Panic

Простір DRM також розвивається, з зміни в галузі безпеки та стабільності:

  • DRM/AMD дисплей: використання GFP_NOWAIT у контексті переривань, збільшення максимальної кількості каналів та уникнення NULL-звернень у link→enc; також, виправлення нульового вказівника на певних шляхах.
  • DRM/Xe: Збереження прапорців віртуальної машини під час відтворення та розділення віртуальних машин для madvise та приховування автоматичного скидання madvise за прапорцем VM_BIND, що усуває небезпечні ребра.
  • Rockchip: Виправлено правильну маску SCLIN для RK3228 у dw_hdmi.
  • drm/паніка: кілька покращень «режиму паніки» з логотипом та QR-кодом: уникнення перекриття з логотипом, забезпечення позитивних вертикальних відступів, запобігання поділенню на нуль, коли ширина екрана менша за ширину шрифту, та не перетинати сторінки з 24-бітними пікселями.
  • Intel i915: Запобігання витоку об'єкта паніки під час виділення його структури.

Навіть Panthor (графічний процесор) було налаштовано, щоб запобігти паніці ядра, яка частково розв'язує розстановку області віртуального пристрою, що є дратівливою помилкою, що проявляється у сценаріях фрагментації пам'яті. Ці зміни, хоча й незначні, запобігання збоям на реальних комп'ютерах.

Іржавий зв'язувач та класичний зв'язувач

Rust Binder продовжує своє вдосконалення з кількома налаштуваннями: попередження про осиротілі маппінги було видалено, сповіщення freeze_notif_done повторно надсилається у разі неочікуваних станів, FreezeListener не може бути видалений, якщо є дублікати, що очікують обробки, а сповіщення надсилаються лише тоді, коли процес фактично заморожено. Паралельно, класичний Binder видаляє перевірку "invalid inc weak", яка більше не сприяє цьому. З боку інструментарію, objtool розпізнає додаткову функцію Rust як «noreturn» а нечітке попередження в Rust Binder виправлено.

io_uring, sqpoll та zc rx

У io_uring є кілька хірургічних налаштувань: виправлено неправильне використання unlikely() у io_waitid_prep(), скориговано анотацію __must_hold, виправлено автоматичне закріплення буферів для багатошвидкісних команд uring_cmd та Облік процесора в sqpoll переоцінено залишити getrusage() на інший час та оновити stime більш інтелектуально. Також додано запис у розділі MAINTAINERS для zcrx.

Архітектури та ACPI: RISC-V, arm64 та x86

The архітектури Вони різноманітні та специфічні:

  • RISC-V: pgprot_dmacoherent() визначено для некогерентних пристроїв, деталі вимкнених процесорів не виводяться в DT, IRQ IPI реєструються з унікальними іменами, MAX_POSSIBLE_PHYSMEM_BITS визначено для zsmalloc та Непотрібні застарілі макроси видаленоТакож виправлено неініціалізовані використання в hwprobe та пізно ініціалізований ключ у vDSO.
  • arm64: У MTE попередження пригнічується, якщо сторінку вже було позначено тегом у copy_highpage().
  • x86: Налагоджено повідомлення RETBLEED для Intel, виправлено перевірку ревізії Entrysign для Zen1/Naples та мертвий код очищено у пом'якшувальних заходах.
  • ACPI/властивості: Виправлено порядок аргументів у acpi_node_get_property_reference() та видалено попередження, коли IOMMU_API вимкнено в RIMT.

Також виправлено дивні елементи, такі як pcibios_align_resource() у MIPS Malta для блокування діапазонів вводу-виводу, а також ресурси клавіатури, які перешкоджали реєстрації i8042. Це невеликі зміни, які уникати сценаріїв блокування або нестабільних ініціалізацій.

Драйвери та шини: SPI, послідовний, hwmon, GPIO, PCI/ASPM та інші

Цей RC приносить хороший купа виправлень у драйверах:

  • SPI: помилкова карта керування Airoha тепер повертає помилку, додано підтримку двох/чотирьох зчитувань у exec_op, повертається до режиму без DMA, якщо щось піде не так, та виправляє багатоплощинні спалахи для кожного LUN; NXP FSPI скидає тактову частоту за потреби, та обмежує частоту відповідно до джерела, крім додавання затримки після блокування DLL; Intel SPI додає підтримку щільності 128 МБ та нових платформ (Arrow Lake-H, Wildcat Lake).
  • Послідовний порт та TTY: 8250_dw обробляє помилки під час скидання; 8250_mtk вмикає тактовий сигнал та передає його до PM середовища виконання; sc16is7xx очищає непотрібні ввімкнені боди; sh-sci виправляє переповнення FIFO.
  • PCI/ASPM: На платформах DeviceTree увімкнено лише L0 та L1, що є консервативним рішенням, щоб уникнути невалідованих станів.
  • GPIO: ACPI пом'якшує серйозність помилок усунення дребезгу; gpio-regmap додає параметр fixed_direction_output; модулі IDIO-16 визначають
    максимальну кількість дійсних адрес та адреси фіксованих ліній.
  • Hwmon та pmbus: Виправлено витоки посилань до дочірніх вузлів та оновлено коефіцієнти моделі Max/ISL, а також детальну інформацію про драйвер вентилятора GPD.

Паралельно, до SPI Cadence (ZynqMP/Versal-Net), Rockchip RK3506 та UFS QMP для Kaanapali додано модулі, сумісні з DT, на додаток до нових ідентифікаторів опцій (Telit FN920C04 ECM, Quectel RG255C, UNISOC UIS7720). налаштовує підтримку нового обладнання.

Пам'ять, плита та мм/деймон

Область пам'яті також отримує увагу: у slab уникаються перегонів з obj_exts та умов плутанини NULL; mm/mremap правильно враховує старе відображення після DONTUNMAP; THP запобігає використанню отруєнь під час розділення величезних сторінок; DAMON очищає витоки ops_filter та централізує логіку цільових квотУ hugetlbfs твердження блокування переміщуються після ранніх повернень у huge_pmd_unshare().

Безпека, трасування та Kconfig

Невеликі, але важливі фрагменти:

  • lib/crypto: Poly1305 відновлює залежності за допомогою !KMSAN, уникаючи конфліктів конфігурацій.
  • include/trace: Виправлено допоміжну функцію підрахунку транзакцій під час невдалих запуску; додано точки трасування SMB3 для кредитів читання/запису.
  • Різні налаштування Kconfig: покращено довідку CONFIG_XFS_RT, а тести/статистика переведені в режим DEBUG_FS. Виправлення залежностей у QCOMTEE та інших платформах.

Це непомітні зміни, які запобігають проблемам під час налаштування ядра та спрощують діагностику випадків, коли щось запускається неправильно. Сума цих покращень якості життя призводить до меншої втрати часу.

Цей огляд версії 6.18-rc3 чітко показує, на чому головне: надійність, а не феєрверк. Від блоку SMB Direct до налаштувань XFS, безлічі драйверів та виправлень у мережі, графіці та пам'яті, все вказує на надійніше ядро. Додавши до карти версій (6.17 як найновіший стабільний реліз та 6.12/6.6 як LTS-версію референсної версії), ми маємо цілісну картину поточного стану: Постійні ітерації, довгострокова підтримка там, де це важливо і шлях міграції, який кожна команда може спокійно прокласти, знаючи, які гілки безпечні, а які все ще перебувають на початковій стадії розвитку.

Linux 6.18-RC2
Пов'язана стаття:
Linux 6.18-rc2 виходить з великим успіхом та ключовими виправленнями графіки, Rust та AMD Zen.