Została wydana nowa wersja jądra 5.19 , a wśród najważniejszych zmian w tej nowej wersji znajdują się obsługa architektury procesora LoongArch , integracja poprawek „BIG TCP”, tryb „na żądanie” w fscache, usunięcie kodu obsługującego format a.out, możliwość użycia ZSTD do kompresji oprogramowania sprzętowego, interfejs do zarządzania przemieszczaniem pamięci z przestrzeni użytkownika, zwiększona niezawodność i wydajność generatora liczb pseudolosowych, obsługa rozszerzeń Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) i ARM SME (Scalable Matrix Extension).
Nowa wersja zawiera 16401 poprawek od 2190 programistów (poprzednia wersja zawierała 16206 poprawek od 2127 programistów), rozmiar poprawki: 90 MB (zmiany objęły 13847 plików, dodano 1149456 wierszy kodu, usunięto 349177 wierszy).
Główne nowości dotyczące jądra 5.19
Do najważniejszych zmian w tej nowej wersji należy zaliczyć obsługę mechanizmu losowej struktury jądra przy kompilacji za pomocą Clang 15.
Mechanizm Landlock , pozwalający na ograniczenie interakcji grupy procesów ze środowiskiem zewnętrznym, został wzbogacony o obsługę reguł umożliwiających kontrolę wykonywania operacji zmiany nazw plików.
Podsystem IMA (Integrity Measurement Architecture), zaprojektowany do sprawdzania integralności komponentów systemu operacyjnego przy użyciu podpisów cyfrowych i skrótów, został zmieniony tak, aby wykorzystywał moduł fs-verity do weryfikacji plików.
Logika działań została zmodyfikowana poprzez wyłączenie nieuprzywilejowanego dostępu do podsystemu eBPF . Wcześniej wszystkie polecenia związane z wywołaniem systemowym bpf() były wyłączone, a od wersji 5.19 dostęp był zachowany tylko dla poleceń, które nie prowadzą do utworzenia obiektu. W związku z tym do załadowania programu BPF wymagany jest proces uprzywilejowany, ale procesy nieuprzywilejowane mogą z nim wchodzić w interakcje.
Dodano obsługę tworzenia kopii zapasowych połączeń MPTCP (MultiPath TCP) w zwykłym protokole TCP w sytuacjach, gdy niektóre funkcje MPTCP nie mogą być wykorzystane. MPTCP to rozszerzenie protokołu TCP, które organizuje działanie połączenia TCP poprzez jednoczesne dostarczanie pakietów wieloma ścieżkami przez różne interfejsy sieciowe połączone z różnymi adresami IP. Dodano interfejs API do zarządzania transmisjami MPTCP z przestrzeni użytkownika.
Warto również zauważyć, że dodano ponad 420 000 linii kodu związanych ze sterownikiem amdgpu , z czego około 400 000 linii to automatycznie generowane pliki nagłówkowe zawierające dane dla rejestrów ASIC w sterowniku GPU AMD, a kolejne 22,5 000 linii zapewnia wstępną implementację obsługi AMD SoC21. Całkowity rozmiar sterownika dla GPU AMD przekroczył 4 miliony linii kodu. Oprócz SoC21, sterownik AMD obejmuje obsługę SMU 13.x (System Management Unit), zaktualizowaną obsługę USB-C i GPUVM oraz jest gotowy do obsługi platform nowej generacji RDNA3 (RX 7000) i CDNA (AMD Instinct).
Kontroler i915 (Intel) ma ulepszone możliwości zarządzania energią, a także dodaje identyfikatory dla procesorów graficznych Intel DG2 (Arc Alchemist) stosowanych w laptopach, zapewnia wstępne wsparcie dla platformy Intel Raptor Lake-P (RPL-P), dodaje informacje o kartach graficznych Arctic Sound-M, implementuje ABI dla silników obliczeniowych, dodaje obsługę kart w formacie Tile4 dla kart DG2 oraz obsługę DisplayPort HDR dla systemów opartych na mikroarchitekturze Haswell.
Sterownik Nouveau przeszedł na korzystanie ze sterownika drm_gem_plane_helper_prepare_fb , a niektóre struktury i zmienne zostały przypisane statycznie. Jeśli chodzi o wykorzystanie kodu źródłowego modułu jądra w Nouveau, który NVIDIA udostępniła jako oprogramowanie open source, dotychczasowe prace koncentrowały się na identyfikacji i eliminacji błędów. Plany na przyszłość obejmują wykorzystanie opublikowanego oprogramowania układowego w celu poprawy wydajności sterownika.
Opracowano rozwiązania umożliwiające wykrywanie blokad rozdzielonych , które występują podczas dostępu do niespójnych danych w pamięci. Dzieje się tak, ponieważ podczas wykonywania instrukcji atomowej dane przekraczają dwie linie rozszerzonej pamięci podręcznej procesora. Takie blokady prowadzą do znacznego spadku wydajności. Wcześniej jądro domyślnie generowało ostrzeżenie z informacją o procesie, który spowodował blokadę; teraz problematyczny proces zostanie dodatkowo spowolniony, aby zachować wydajność reszty systemu.
Dodano obsługę mechanizmu IFS (In-Field Scan) zaimplementowanego w procesorach Intel, który umożliwia przeprowadzanie testów diagnostycznych procesora niskiego poziomu , wykrywających problemy nieuchwytne w standardowy sposób, na podstawie kodów korekcji błędów (ECC) lub bitów parzystości.
Inne istotne zmiany w tej nowej wersji obejmują:
- Dodano sterownik kontrolera NVMe używanego w komputerach Apple na podstawie układu M1.
- dodano początkowe wsparcie dla architektury zestawu instrukcji LoongArch używanej w procesorach Loongson 3 5000, która implementuje nowy RISC ISA podobny do MIPS i RISC-V.
- Architektura LoongArch jest dostępna w trzech wersjach: 32-bitowa uproszczona (LA32R), 32-bitowa normalna (LA32S) i 64-bitowa (LA64).
- Dodano możliwość osadzenia pliku bootconfig w jądrze.
- 'CONFIG_BOOT_CONFIG_EMBED_FILE=”/PATH/TO/BOOTCONFIG/FILE”'.
- Usunięto obsługę opcji rozruchu specyficznych dla x86: nosp, nosmap, nosmep, noexec i noclflush).
- Wsparcie dla przestarzałej architektury procesora h8300 (Renesas H8/300), która nie była utrzymywana od dłuższego czasu, została przerwana.
Jeśli chcesz dowiedzieć się więcej o tej nowej wersji, szczegóły znajdziesz pod poniższym linkiem.