Co nowego w Linuksie 6.18-rc3: zmiany w jądrze i kontekst

  • SMB Direct jest liderem wersji 6.18-rc3 ze zwiększoną niezawodnością po stronie klienta i serwera.
  • XFS, io_uring, obsługa sieci i DRM doczekały się praktycznych i powszechnie rozproszonych poprawek.
  • Mapa wersji określa wersję 6.17 jako stabilną, a 6.12/6.6 jako kluczową wersję LTS.

Linux 6.18-rc3

Trzeci kandydat do startu przyszłego 6.18 llega Bez rozgłosu i z tym spokojnym pulsem, który tak ceni ekosystem jądra. Według samego Linusa Torvaldsa liczby są umiarkowane, a cykl przebiega normalnie; innymi słowy, Linux 6.18-rc3 poleruje, naprawia i dostraja bez rewolucji, koncentrując się na poprawkach rozproszonych w całym drzewie.

W swojej krótkiej notatce Torvalds wskazuje, że największą część tej partii stanowią poprawki SMB Direct, zarówno po stronie klienta, jak i serwera, z dużą ilością poprawek dostrajających. Reszta jest rozprowadzana jak zwykle: około połowa dotyczy sterowników (dodając również powiązania DeviceTree) i Reszta to drobne poprawki: XFS, sieć, io_uring, DRM, Rust Binder i spółki. Jeśli interesują Cię szczegóły, poniżej znajduje się krótki dziennik zmian, który omawiamy w poszczególnych podsystemach.

Najważniejsze nowe funkcje w systemie Linux 6.18-rc3

Blok SMB Direct wyróżnia się w tym cotygodniowym zestawieniu. Zarówno klient, jak i serwer SMB dostosowują kredyty i kolejki, aby zapobiec regresjom i niedoborom zasobów. Kilka elementów podsystemu podnosi poprzeczkę, zapewniając, że Struktury wysyłania/opróżniania zapewniają wystarczającą ilość miejsca a stany rozłączenia niezawodnie budzą wszystkie oczekujące wątki.

Dodatkowo w systemie XFS wprowadzono poprawki zapobiegające powstawaniu pętli zajętości w kolektorze segmentów, buforowaniu otwartych obszarów w i_private, usprawnieniu obsługi przestarzałych opcji montowania i napraw wrażliwe sekcje sprawdzania i blokowania linkówZmiany XFS w rc3 skupiają się na stabilności i przejrzystej diagnostyce parametrów starszych wersji.

Drugą połowę tortu stanowi standardowy zestaw sterowników i platform: od DRM/AMD i DRM/Xe po Rockchip, przez układy sieciowe mlx5/mlx5e, układy fizyczne Realtek i Micrel, UFS/Qualcomm, USB/xHCI DbC i wiele więcej. To „instalacyjny” rc3, w którym Wartość jest sumą małych korekt które zapobiegają awariom, wyciekom pamięci i niedopasowaniu czasowym.

SMB i SMB Direct: nacisk na solidność

El krótki dziennik jasno pokazuje wysiłek włożony w SMB Direct. Wśród najważniejszych punktów:

  • Klient i serwer SMB dostosowują przestrzeń dla żądań roboczych, zapobiegając przepełnieniom i zapewniając bezpieczne opróżnianie zasobów QP (ib_drain_qp). Liczniki są wprowadzane i zużywane. Kredyty wysyłkowe na ścieżkach krytycznych.
  • Serwer upraszcza zarządzanie listą rodzeństwa na ścieżkach wysyłania (flush/send_done) i sprawia, że ​​rozłączenie RDMA wybudza wszystkie wątki przy pierwszej próbie.
  • Ślady w smb3_rw_credits są wzmacniane, elementy dołączone są ponownie uporządkowane, tak aby struktury były dostępne w punktach śledzenia i Typy podpisane w strukturach kredytowych TCP są stałe.

Ogólnie rzecz biorąc, zmiany w SMB Direct mają na celu zapewnienie płynności transferów RDMA pod obciążeniem, przewidywalnego zachowania i obsługi błędów bez pozostawiania zawieszonych wątków. Są to zmiany, które, choć subtelne, zrób różnicę w środowiskach o wysokiej wydajności.

Systemy plików i pamięci masowe

Sekcja systemy plików i bloki zawiera kilka godnych uwagi utworów:

  • XFS: unikaj pętli zajętości, strefy pamięci podręcznej, zabroń stosowania __GFP_NOFAIL podczas inicjalizacji kontekstu FS, popraw komunikaty dotyczące przestarzałych opcji i napraw zamki i liczniki sektorów.
  • Btrfs: poprawki w ref-verify (IS_ERR vs NULL), zwolnienie częściowo zainicjowanego fs_info w przypadku awarii oraz poprawka w btrfs send w celu uniknięcia duplikowania operacji rmdir z extrefs.
  • EROFS: Wzmocnienie obsługi rozszerzeń ze złośliwym kodem w celu zapobiegania pętlom i konsolidacja wyszukiwań retrospektywnych na uszkodzonych podstronach.
  • Warstwa blokowa: wymuszanie wyrównania LBA podczas korzystania z informacji o ochronie (PI) w celu zachowania integralności niskiego poziomu.

Trwają również prace nad scsi/ufs/phy (powiązania dla nowych kompatybilnych układów), storvsc w celu preferowania kanałów pokrewnych do procesora wydającego sygnały wejścia/wyjścia oraz modyfikacje sterowników, takich jak qla4xxx. To wszystko razem wzmocnić stabilność i wydajność wejścia/wyjścia w rzeczywistych przypadkach.

Sieci: mlx5/mlx5e, łączenie, HSR i inne

W sieci obraz jest zróżnicowany, ze szczególnym uwzględnieniem czynników napędzających wysoka wydajność i mało uczęszczane zakątki:

  • mlx5/mlx5e: maski rejestrów PPHCR w PCAM, pomijanie zapytań, jeśli urządzenie nie obsługuje rejestru, oraz poprawki RX podczas generowania skbów z nieliniowych xdp_buffów zarówno w kolejkach starszych, jak i kroczącymi. Ponadto, Poprawki w protokole IPsec na urządzeniach MPV a devcom zwraca NULL w przypadku błędów.
  • Łączenie: tablica urządzeń podrzędnych jest aktualizowana w trybie rozgłoszeniowym, a możliwe straty lub duplikaty w powiadomieniach równorzędnych są korygowane.
  • HSR: Zapobiega tworzeniu urządzeń z urządzeniami podrzędnymi z innych sieci, zamykając niespójną ścieżkę konfiguracji.
  • Gro i gro_cells: znaczniki hwtstamp są czyszczone na ścieżkach ponownego użycia skbs i korygowana jest nierównowaga zamka w gro_cells_receive.
  • Inne: virtio-net zeruje nieużywane pola skrótu; hibmcge wybiera FIXED_PHY; dlink używa dev_kfree_skb_any; stmmac/rk naprawia funkcję wyboru zegara; enetc naprawia blokady MDIO i wartość TRUESIZE.

W całości stos sieciowy otrzymuje niewielką ilość poprawek, które zapobiegają niespodziankom pod obciążeniem i dbają o szczegóły ścieżek danych, które w razie awarii przekładają się na opóźnienia, straty lub blokady.

Grafika i wyświetlacz: DRM/AMD, DRM/Xe, Rockchip i QR Panic

Przestrzeń DRM również się zmienia, zmiany w zakresie bezpieczeństwa i stabilności:

  • Wyświetlanie DRM/AMD: Użyj GFP_NOWAIT w kontekście przerwania, zwiększ maksymalną wartość łącza i unikaj dostępu NULL w łącze→enc; a także, naprawa wskaźnika zerowego na określonych ścieżkach.
  • DRM/Xe: Zachowaj flagi maszyn wirtualnych podczas ponownego tworzenia i dzielenia ich dla programu Madvise oraz ukryj autoreset Madvise za flagą VM_BIND, usuwając w ten sposób niebezpieczne ograniczenia.
  • Rockchip: Poprawiona maska ​​SCLIN dla RK3228 w dw_hdmi.
  • drm/panic: kilka ulepszeń „trybu paniki” z logo i kodem QR: unikaj nakładania się na logo, zapewnij dodatnie marginesy pionowe, zapobiegaj podziałom przez zero, gdy szerokość ekranu jest mniejsza niż szerokość czcionki i nie krzyżuj stron z pikselami 24-bitowymi.
  • Intel i915: Zapobiega wyciekom obiektów podczas przydzielania ich struktury.

Nawet Panthor (GPU) został zmodyfikowany, aby zapobiec panikom jądra, które powodowały częściowe odmapowanie regionu VA, irytujący błąd, który objawiał się w scenariuszach fragmentacji pamięci. Są to zmiany, które, choć subtelne, zapobiegać awariom na prawdziwych komputerach.

Rust Binder i Classic Binder

Rust Binder kontynuuje swój rozwój z kilkoma poprawkami: usunięto ostrzeżenie o osieroconych mapowaniach, powiadomienie freeze_notif_done jest ponownie wysyłane w przypadku nieoczekiwanych stanów, uniemożliwiono usunięcie FreezeListener, jeśli istnieją oczekujące duplikaty, a powiadomienia są zgłaszane tylko wtedy, gdy proces jest faktycznie zamrożony. Równocześnie, klasyczny Binder usuwa kontrolę „invalid inc weak”, która nie ma już znaczenia. Po stronie łańcucha narzędzi, objtool rozpoznaje dodatkową funkcję Rust jako „noreturn” a także usunięto ostrzeżenie w Rust Binderze.

io_uring, sqpoll i zc rx

W io_uring wprowadzono kilka drobnych poprawek: naprawiono niewłaściwe użycie Unlike() w io_waitid_prep(), dostosowano adnotację __must_hold, naprawiono automatyczne zatwierdzanie buforów dla poleceń wielokrotnego zapisu w uring_cmd i ponowna ocena rozliczeń procesora sqpoll Pozostawienie getrusage() na inny czas i inteligentniejsza aktualizacja stime. Dodano również wpis w MAINTAINERS dla zcrx.

Architektury i ACPI: RISC-V, arm64 i x86

Te architektury Są one zróżnicowane i specyficzne:

  • RISC-V: pgprot_dmacoherent() jest zdefiniowany dla urządzeń niespójnych, szczegóły wyłączonych procesorów nie są drukowane w DT, przerwania IPI są rejestrowane z unikalnymi nazwami, MAX_POSSIBLE_PHYSMEM_BITS jest zdefiniowany dla zsmalloc i Niepotrzebne starsze makra są usuwane. Naprawiono również niezainicjowane użycia w hwprobe i późno zainicjowany klucz w vDSO.
  • arm64: W MTE ostrzeżenie jest pomijane, jeśli strona została już oznaczona w copy_highpage().
  • x86: Dostosuj komunikat RETBLEED dla Intela, napraw sprawdzanie wersji Entrysign dla Zen1/Naples i martwy kod jest usuwany w ramach działań łagodzących.
  • ACPI/properties: Poprawiono kolejność argumentów w acpi_node_get_property_reference() i usunięto ostrzeżenia pojawiające się, gdy IOMMU_API jest wyłączone w RIMT.

Naprawia również nietypowe błędy, takie jak pcibios_align_resource() w MIPS Malta, które blokują zakresy IO, oraz zasoby klawiatury, które uniemożliwiały rejestrację i8042. To drobne zmiany, unikaj scenariuszy impasu lub niestabilnych inicjalizacji.

Sterowniki i magistrale: SPI, szeregowy, hwmon, GPIO, PCI/ASPM i inne

Ten model RC przynosi dobre mnóstwo poprawek w sterownikach:

  • SPI: wadliwy dirmap Airoha teraz zwraca błąd, dodaje obsługę dual/quad w exec_op, powraca do trybu bez DMA, gdy coś pójdzie nie tak, i naprawia flashe wielopłaszczyznowe dla każdego LUN; NXP FSPI resetuje zegar, gdy jest to potrzebne, a ogranicza częstotliwość według źródła, oprócz dodania opóźnienia po zablokowaniu biblioteki DLL; Intel SPI dodaje obsługę gęstości 128M i nowych platform (Arrow Lake-H, Wildcat Lake).
  • Interfejs szeregowy i TTY: 8250_dw obsługuje błędy podczas resetowania; 8250_mtk włącza zegar transmisji danych i przekazuje go do modułu PM w czasie wykonywania; sc16is7xx czyści niepotrzebne włączone transmisje danych; sh-sci naprawia przekroczenie limitu FIFO.
  • PCI/ASPM: Na platformach DeviceTree włączone są tylko ścieżki L0 i L1. Jest to konserwatywne rozwiązanie mające na celu uniknięcie niezatwierdzonych stanów.
  • GPIO: ACPI łagodzi powagę błędu odbicia; gpio-regmap dodaje parametr fixed_direction_output; moduły IDIO-16 definiują
    maksymalna liczba prawidłowych adresów i adresy stacjonarne.
  • Hwmon i pmbus: Naprawiono wycieki odniesień do węzłów podrzędnych i zaktualizowano współczynniki modelu Max/ISL, a także dodano szczegóły dotyczące sterownika wentylatora GPD.

Równolegle do SPI Cadence (ZynqMP/Versal-Net), Rockchip RK3506 i UFS QMP dla Kaanapali dodano moduły zgodne z DT, a także nowe identyfikatory opcji (Telit FN920C04 ECM, Quectel RG255C, UNISOC UIS7720). dostraja obsługę nowo przybyłego sprzętu.

Pamięć, płyta i mm/damon

Obszar pamięci również otrzymuje uwagę: w slab unika się wyścigów z obj_exts i warunkami pomyłki NULL; mm/mremap prawidłowo uwzględnia stare mapowanie po DONTUNMAP; THP zapobiega zużyciu trucizny podczas dzielenia dużych stron; DAMON usuwa wycieki ops_filter i centralizuje logikę docelową kwotW hugetlbfs potwierdzenia blokad są przenoszone po wcześniejszych zwrotach w huge_pmd_unshare().

Bezpieczeństwo, śledzenie i Kconfig

Małe, ale ważne fragmenty:

  • lib/crypto: Poly1305 przywraca zależności za pomocą !KMSAN, unikając konfliktów konfiguracji.
  • include/trace: Naprawiono pomocnika zliczającego operacje w trakcie lotu w przypadku nieudanych uruchomień; dodano punkty śledzenia SMB3 dla kredytów odczytu/zapisu.
  • Różne funkcje Kconfig: ulepszono pomoc CONFIG_XFS_RT, a testy/statystyki są uzależnione od DEBUG_FS. Poprawki zależności w QCOMTEE i innych platformach.

To dyskretne zmiany, które zapobiegają problemom podczas konfiguracji jądra i ułatwiają diagnozę, gdy coś nie uruchamia się prawidłowo. Suma tych ulepszeń poprawiających jakość życia skutkuje mniejszą ilością zmarnowanego czasu.

Ta recenzja wersji 6.18-rc3 jasno pokazuje, na czym się skupiamy: na solidności, a nie na fajerwerkach. Od bloku SMB Direct, przez poprawki XFS, po niezliczone sterowniki i poprawki w sieci, grafice i pamięci – wszystko wskazuje na bardziej niezawodne jądro. Dodane do mapy wersji (z 6.17 jako najnowszą stabilną wersją i 6.12/6.6 jako wersją LTS referencyjną), mamy spójny obraz obecnego stanu rzeczy: Stała iteracja, długoterminowe wsparcie tam, gdzie to ważne oraz ścieżkę migracji, którą każdy zespół może spokojnie wyznaczyć, wiedząc, które gałęzie są bezpieczne, a które są jeszcze w powijakach.

Linux 6.18-rc2
Podobne artykuł:
Linux 6.18-rc2 pojawia się w wielkim stylu, z kluczowymi poprawkami grafiki, Rust i AMD Zen