Mereka melancarkan cadangan untuk menghapuskan sokongan ARM lama di Linux

alih keluar sokongan ARM lama pada Linux

Arnd Bergmann, Pembangun kernel Linux dari cawangan arm-soc dan pengurus pakej kernel di SUSE, mengeluarkan a cadangan di mana dia meletakkan di atas meja isu mengalih keluar kernel berasaskan GCC dan cipta alat kod untuk menyokong CPU ARM yang lebih lama, ABI yang berkaitan, set arahan dan keupayaan kernel.

Arnd Bergmann, menyebut itu asas cadangan pemberhentian sokongan untuk CPU ARM tua di kernel disebabkan oleh pemberhentian dalam GCC, kerana sesetengah CPU yang dicadangkan untuk dialih keluar tidak lagi disokong dalam cawangan GCC terkini, dan yang lain dirancang untuk dialih keluar dalam keluaran akan datang.

Sebutkan bahawa dengan menerapkan ini, Pemodenan dan pelaksanaan fungsi baru dalam pengkompil akan dipermudahkan. DANMengalih keluar sokongan untuk seni bina dalam GCC akan memerlukan pengalihan keluar daripada kernel jika versi GCC minimum yang disokong oleh kernel ditingkatkan (pada masa ini, sekurang-kurangnya GCC versi 5.1 diperlukan untuk menyusun kernel).

Antara seni bina, cip dan sambungan yang dicadangkan untuk dikeluarkan daripada kernel, perkara berikut disebut:

  • ARMv3: Dialih keluar dalam GCC-9, jadi ia akhirnya akan dialih keluar daripada kernel apabila versi pengkompil minimum meningkat.
  • ARMv4: Digunakan untuk CPU StrongARM dan FA526, masih pada beberapa papan. Malah cip terbaru hampir 20 tahun. Versi terakhir Debian yang menyokong mereka ialah Lenny (5.0). Enam keluarga SoC dengan teras ARMv4T (ARM720T, ARM920T dan ARM922T) masih disokong. Walaupun mereka sudah lama, mereka mempunyai lebih ramai pengguna dan pembangun daripada ARMv4. Debian Stretch (9.0) adalah yang terakhir menyokong mereka.
  • ARMv5: Kira-kira satu pertiga daripada platform yang disokong menggunakan ARMv5, tetapi kebanyakannya hampir tamat sokongan mereka.
  • ARMv6 awal: termasuk ARM1136r0p dalam NXP i.MX31 dan OMAP24xx, terutamanya tablet Nokia N8xx. Memerlukan penggodaman khas untuk menyokong kernel dengan SMP. Terdapat tampung yang mengubah ARMv6 daripada serasi dengan ARMv7 kepada serasi dengan ARMv5, tetapi ia memerlukan lebih banyak usaha.
  • ARMv6K
    ARMv7-M: Cortex-M3/M4/M7 adalah satu-satunya teras yang disokong tanpa MMU, pada masa ini pada 5 platform mikropengawal. Ia boleh dialih keluar pada tahun 2027, tetapi GCC masih perlu menyokongnya pada sistem pengendalian lain.
  • iWMMXt: tiada lagi pengguna yang diketahui untuk iWMMXt, dan sokongan untuk CPU ARMv7 PJ4 telah dialih keluar. Ia hanya disokong pada Intel/Marvell PXA dan MMP1.
  • Inti endian besar ARMv5 (BE32): Hanya satu SoC yang menggunakannya, Intel IXP4xx. Debian menyokongnya dalam mod little-endian, tetapi pemandu rosak dalam LE.
  • Inti endian besar ARMv7 (BE8)
  • Param_struct pra-ATAGS: Ini telah disusut nilai pada tahun 2001, untuk dihapuskan dalam "5 tahun", yang telah berlaku.
  • Fail plat berasaskan ATAGS: Selepas pembersihan di atas, terdapat 29 fail papan yang tinggal pada 10 platform SoC.
  • Inti OABI: Hampir semua orang menggunakan EABI hari ini dan sokongan OABI telah dialih keluar sebagai sasaran dalam GCC-4.8. Kernel masih membenarkan dibina sebagai OABI dengan -mabi=apcs-gnu, digunakan secara lalai dalam kernel ARMv4/ARMv5.
  • Mod Kompati OABI: Ini membenarkan menjalankan binari OABI dengan kernel EABI.
  • NWFPE
  • Highmem: Kebanyakan mesin ARM boleh berfungsi tanpa sokongan highmem menggunakan CONFIG_VMSPLIT_2GB untuk menangani sehingga 2GB memori fizikal. Mesin yang lebih besar muncul dengan Cortex-A15 pada tahun 2012, dengan cepat digantikan dengan cip 64-bit.
  • Sparsem: Terdapat perbincangan tentang mengalih keluar sokongan untuk sparsemem tradisional. Ini juga berkaitan dengan mesin yang memerlukan highmem untuk menggunakan semua RAM mereka
  • RiscPC: Ini ialah platform tertua yang disokong, dan akhirnya akan dialih keluar, kerana ia tidak berfungsi dengan GCC-9 atau lebih tinggi disebabkan oleh pengalihan keluar ARMv3.
  • SA1100, Jejantas: platform berasaskan StrongARM lain, hanya relevan untuk nostalgia.
  • Gemini, Moxart: Kedua-duanya menggunakan teras CPU Faraday FA526, yang seperti StrongARM melaksanakan ARMv4 dan bukannya ARMv4T dengan ibu jari. Cip juga berusia lebih 20 tahun, tetapi kod kernel telah dikemas kini dan bukan beban penyelenggaraan.
  • Fail papan PXA: Terdapat dua fail plat yang tinggal dalam kod PXA yang tidak dialih keluar dua tahun lalu, dengan harapan ini akan membantu penukaran kepada DT
  • OMAP1: satu-satunya platform ARMv4T/ARMv5 tanpa sokongan DT, menjadikannya sasaran untuk dialih keluar pada satu ketika.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
  • OMAP24xx
  • iMX31, realview/integrator dengan 1136r0
  • S3C64xx (Cragganmore): Ini adalah satu-satunya papan ARMv6K tanpa sokongan devicetree, dan fail papan mengandungi jumlah kerumitan yang sama seperti semua fail papan lain digabungkan. arch/arm/mach-s3c/Kconfig.s3c64xx menyenaraikannya untuk dialih keluar awal tahun depan, yang akan membolehkan pembersihan besar infrastruktur platform dan pemacu.
  • Orion5x, mv78xx0, fail papan dove: Seperti PXA, ini dibiarkan menunggu kemajuan ke arah penukaran DT, tetapi tiada apa yang berlaku kecuali beberapa pembetulan kecil dalam mv78xx0. Sebaliknya, Debian telah mengalih keluar binari kernel orion5x yang memetik kekurangan pengguna, jadi nampaknya kurang berkemungkinan untuk diselesaikan.
  • iMX35, WM8750, AST2500, BCM2835: Keempat-empat ini adalah semua platform ARMv6K dan disokong dengan baik, walaupun hanya AST2500 dan BCM2835 yang mempunyai pangkalan pengguna yang aktif.
  • Pengawal mikro Stm32f4/f7/h7: Ini adalah satu-satunya cip Arm bukan MMU untuk melihat pembangunan berterusan kerana ST terus menyokong pelanggan sedia ada.

Akhirnya, harus disebutkan bahawa rancangan ini masih dalam peringkat RFC, iaitu diterbitkan untuk perbincangan masyarakat. Jika diluluskan, adalah dicadangkan untuk memulakan penyingkiran pemproses ARM lama dalam kernel Linux 6.12, dijangka pada bulan Disember. Calon pertama yang akan dialih keluar ialah ARMv4 (tanpa mengalih keluar ARMv4T), iWMMXt, BE32 dan OABI.

Fuente: https://lkml.org