Przedstawiają propozycję wyeliminowania starej obsługi ARM w Linuksie

usuń starą obsługę ARM w systemie Linux

Arnda Bergmanna, Deweloper jądra Linuksa z branży arm-soc i menedżer pakietów jądra w firmie SUSE wydał plik a propozycję w którym stawia na stole kwestia usunięcia jądra opartego na GCC i tworzyć narzędzia kodowe do obsługi starszych procesorów ARM, powiązanych z nimi ABI, zestawów instrukcji i możliwości jądra.

Arnd Bergmann o tym wspomina podstawa wniosku o zaprzestaniu wsparcia dla procesorów ARM stary w jądrzel wynika z zaprzestania działalności w GCC, ponieważ niektóre procesory proponowane do usunięcia nie są już obsługiwane w najnowszych gałęziach GCC, a inne mają zostać usunięte w przyszłych wydaniach.

Wspomnij, że stosując to, Ułatwiona zostanie modernizacja i implementacja nowych funkcji w kompilatorze. IUsunięcie obsługi architektury w GCC będzie wymagało jej usunięcia z jądra w przypadku zwiększenia minimalnej wersji GCC obsługiwanej przez jądro (obecnie do kompilacji jądra wymagana jest co najmniej wersja GCC 5.1).

Pomiędzy architekturami, chipami i rozszerzeniami które proponuje się usunąć z jądra, wymienia się:

  • ARMv3: Usunięty w GCC-9, więc ostatecznie zostanie usunięty z jądra wraz ze wzrostem minimalnej wersji kompilatora.
  • ARMv4: Używany w procesorach StrongARM i FA526, nadal na niektórych płytach. Nawet najnowsze chipy mają blisko 20 lat. Ostatnią wersją Debiana, która je obsługiwała, był Lenny (5.0). Nadal obsługiwanych jest sześć rodzin SoC z rdzeniami ARMv4T (ARM720T, ARM920T i ARM922T). Chociaż są stare, mają więcej użytkowników i programistów niż ARMv4. Debian Stretch (9.0) był ostatnim, który je wspierał.
  • ARMv5: Około jedna trzecia obsługiwanych platform korzysta z ARMv5, ale większość z nich dobiega końca.
  • ARMv6 wczesny: obejmuje ARM1136r0p w NXP i.MX31 i OMAP24xx, głównie w tablecie Nokia N8xx. Wymaga specjalnych hacków do obsługi jąder za pomocą SMP. Istnieje łatka, która zmienia ARMv6 z kompatybilności z ARMv7 na kompatybilność z ARMv5, ale wymaga więcej pracy.
  • ARMv6K
    ARMv7-M: Cortex-M3/M4/M7 to jedyne rdzenie obsługiwane bez MMU, obecnie na 5 platformach mikrokontrolerów. Można je usunąć w 2027 r., ale GCC nadal będzie musiało je obsługiwać w innych systemach operacyjnych.
  • iWMMXt: nie ma znanych pozostałych użytkowników iWMMXt, a obsługa procesorów ARMv7 PJ4 została usunięta. Jest obsługiwany tylko w Intel/Marvell PXA i MMP1.
  • Jądro big endian ARMv5 (BE32): Używa go tylko jeden SoC, Intel IXP4xx. Debian obsługiwał go w trybie Little-Endian, ale sterowniki są zepsute w LE.
  • Jądro big endian ARMv7 (BE8)
  • Param_struct przed ATAGAMI: Zostało to zamortyzowane w 2001 r. i miało zostać wyeliminowane w ciągu „5 lat”, co już nastąpiło.
  • Pliki płytkowe oparte na ATAGS: Po powyższym oczyszczeniu pozostało 29 plików płyty na 10 platformach SoC.
  • Jądra OABI: Praktycznie wszyscy dziś korzystają z EABI, a obsługa OABI została usunięta jako cel w GCC-4.8. Jądro nadal umożliwia budowanie jako OABI z opcją -mabi=apcs-gnu, używaną domyślnie w jądrach ARMv4/ARMv5.
  • Tryb zgodności OABI: Umożliwia to uruchamianie plików binarnych OABI z jądrem EABI.
  • NWFPE
  • Highmem: Większość maszyn ARM może pracować bez obsługi wysokich pamięci, używając CONFIG_VMSPLIT_2GB do adresowania do 2 GB pamięci fizycznej. Większe maszyny z Cortex-A15 pojawiły się w 2012 roku, szybko zastąpione chipami 64-bitowymi.
  • Spassemem: Trwa dyskusja na temat usunięcia wsparcia dla tradycyjnego sparsememu. Odnosi się to również do maszyn wymagających dużej pamięci RAM do wykorzystania całej pamięci RAM
  • RiscPC: Jest to najstarsza obsługiwana platforma i ostatecznie zostanie usunięta, ponieważ nie działa z GCC-9 lub nowszym z powodu usunięcia ARMv3.
  • SA1100, Kładka: inne platformy oparte na StrongARM, istotne tylko dla nostalgii.
  • Bliźnięta, Moxart: Obydwa korzystają z rdzenia procesora Faradaya FA526, który podobnie jak StrongARM implementuje ARMv4 zamiast ARMv4T z kciukiem. Chipy również mają ponad 20 lat, ale kod jądra został zaktualizowany i nie stanowi obciążenia konserwacyjnego.
  • Pliki płyty PXA: W kodzie PXA pozostały dwa pliki tablic, które nie zostały usunięte dwa lata temu, mając nadzieję, że pomoże to w konwersji na DT
  • OMAP1: jedyna platforma ARMv4T/ARMv5 bez obsługi DT, co czyni ją celem do usunięcia w pewnym momencie.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
  • OMAP24xx
  • iMX31, realview/integrator z 1136r0
  • S3C64xx (Cragganmore): Jest to jedyna płyta ARMv6K bez obsługi drzewa urządzeń, a plik płyty zawiera podobną złożoność jak wszystkie inne pliki płyty razem wzięte. arch/arm/mach-s3c/Kconfig.s3c64xx umieszcza go do usunięcia na początku przyszłego roku, co umożliwiłoby duże uporządkowanie infrastruktury platformy i sterowników.
  • Orion5x, mv78xx0, pliki tablicy Dove: Podobnie jak PXA, pozostawiono je w oczekiwaniu na postęp w konwersji DT, ale nic się nie wydarzyło poza kilkoma drobnymi poprawkami w mv78xx0. Dla kontrastu, Debian usunął plik binarny jądra orion5x, powołując się na brak użytkowników, więc wydaje się, że jego ukończenie jest znacznie mniej prawdopodobne.
  • iMX35, WM8750, AST2500, BCM2835: Wszystkie te cztery są platformami ARMv6K i są dobrze obsługiwane, chociaż tylko AST2500 i BCM2835 mają aktywną bazę użytkowników.
  • Mikrokontrolery Stm32f4/f7/h7: Są to jedyne chipy spoza MMU Arm, które podlegają ciągłemu rozwojowi, ponieważ ST w dalszym ciągu wspiera swoich obecnych klientów.

Na koniec należy o tym wspomnieć plan ten jest nadal na etapie RFC, czyli opublikowane do dyskusji społeczności. Jeśli zostanie zatwierdzona, proponuje się rozpoczęcie usuwania starych procesorów ARM z jądra Linuksa 6.12, co ma nastąpić w grudniu. Pierwszymi kandydatami do usunięcia są ARMv4 (bez usuwania ARMv4T), iWMMXt, BE32 i OABI.

źródło: https://lkml.org