Arnd Bergmann, Nhà phát triển nhân Linux từ nhánh arm-soc và người quản lý các gói nhân tại SUSE, đã phát hành một đề xuất trong đó anh ấy đặt lên bàn vấn đề loại bỏ kernel dựa trên GCC và tạo các công cụ mã để hỗ trợ các CPU ARM cũ hơn, các ABI, tập lệnh và khả năng hạt nhân liên quan của chúng.
Arnd Bergmann, đề cập rằng cơ sở của đề xuất ngừng hỗ trợ dành cho CPU ARM cũ ở Kernel là do ngừng sử dụng GCC, vì một số CPU được đề xuất loại bỏ không còn được hỗ trợ trong các nhánh GCC mới nhất và những CPU khác dự kiến sẽ bị loại bỏ trong các bản phát hành trong tương lai.
Đề cập rằng bằng cách áp dụng điều này, Việc hiện đại hóa và triển khai các chức năng mới trong trình biên dịch sẽ được tạo điều kiện thuận lợi. VÀViệc xóa hỗ trợ cho một kiến trúc trong GCC sẽ yêu cầu xóa nó khỏi kernel nếu phiên bản GCC tối thiểu được kernel hỗ trợ tăng lên (hiện tại, cần có ít nhất GCC phiên bản 5.1 để biên dịch kernel).
Giữa kiến trúc, chip và phần mở rộng được đề xuất loại bỏ khỏi kernel, những điều sau đây được đề cập:
- ARMv3: Đã bị xóa trong GCC-9, do đó cuối cùng nó sẽ bị xóa khỏi kernel khi các phiên bản trình biên dịch tối thiểu tăng lên.
- ARMv4: Được sử dụng cho CPU StrongARM và FA526, vẫn còn trên một số bo mạch. Ngay cả những con chip mới nhất cũng đã gần 20 tuổi. Phiên bản Debian cuối cùng hỗ trợ chúng là Lenny (5.0). Sáu dòng SoC có lõi ARMv4T (ARM720T, ARM920T và ARM922T) vẫn được hỗ trợ. Mặc dù đã cũ nhưng họ có nhiều người dùng và nhà phát triển hơn ARMv4. Debian Stretch (9.0) là phiên bản cuối cùng hỗ trợ chúng.
- ARMv5: Khoảng một phần ba số nền tảng được hỗ trợ sử dụng ARMv5, nhưng hầu hết đều sắp hết hỗ trợ.
- ARMv6 sớm: bao gồm ARM1136r0p trong NXP i.MX31 và OMAP24xx, chủ yếu là máy tính bảng Nokia N8xx. Yêu cầu các bản hack đặc biệt để hỗ trợ hạt nhân với SMP. Có một bản vá giúp thay đổi ARMv6 từ tương thích với ARMv7 sang tương thích với ARMv5, nhưng nó cần phải nỗ lực nhiều hơn.
- ARMv6K
ARMv7-M: Cortex-M3/M4/M7 là lõi duy nhất được hỗ trợ không có MMU, hiện có trên 5 nền tảng vi điều khiển. Chúng có thể bị xóa vào năm 2027, nhưng GCC vẫn sẽ cần hỗ trợ chúng trên các hệ điều hành khác. - iWMMXt: không còn người dùng nào được biết đến với iWMMXt và hỗ trợ cho CPU ARMv7 PJ4 đã bị xóa. Nó chỉ được hỗ trợ trong Intel/ Marvell PXA và MMP1.
- Hạt nhân endian lớn ARMv5 (BE32): Chỉ có một SoC sử dụng nó, Intel IXP4xx. Debian hỗ trợ nó ở chế độ little-endian, nhưng trình điều khiển bị hỏng ở LE.
- Hạt nhân endian lớn ARMv7 (BE8)
- Param_struct tiền ATAGS: Khoản tiền này đã được khấu hao vào năm 2001 và sẽ được loại bỏ sau "5 năm", điều này đã xảy ra.
- Các tập tin tấm dựa trên ATAGS: Sau quá trình dọn dẹp trên, còn lại 29 tệp bảng trên 10 nền tảng SoC.
- Hạt nhân OABI: Hầu như tất cả mọi người ngày nay đều sử dụng EABI và hỗ trợ OABI đã bị xóa khỏi mục tiêu trong GCC-4.8. Hạt nhân vẫn cho phép được xây dựng dưới dạng OABI với -mabi=apcs-gnu, được sử dụng theo mặc định trong hạt nhân ARMv4/ARMv5.
- Chế độ tương thích OABI: Điều này cho phép chạy các tệp nhị phân OABI với hạt nhân EABI.
- NWFPE
- cao: Hầu hết các máy ARM có thể hoạt động mà không cần hỗ trợ highmem bằng cách sử dụng CONFIG_VMSPLIT_2GB để xử lý bộ nhớ vật lý lên tới 2GB. Các máy lớn hơn xuất hiện với Cortex-A15 vào năm 2012, nhanh chóng được thay thế bằng chip 64-bit.
- Sparsemem: Có một cuộc thảo luận về việc loại bỏ hỗ trợ cho Spartashmem truyền thống. Điều này cũng liên quan đến các máy cần highmem để sử dụng hết RAM
- RiscPC: Đây là nền tảng lâu đời nhất được hỗ trợ và cuối cùng sẽ bị xóa vì nó không hoạt động với GCC-9 trở lên do việc loại bỏ ARMv3.
- SA1100, Cầu đi bộ: các nền tảng dựa trên StrongARM khác, chỉ phù hợp với nỗi nhớ.
- Song Tử, Moxart: Cả hai đều sử dụng lõi CPU Faraday FA526, giống như StrongARM triển khai ARMv4 thay vì ARMv4T bằng ngón tay cái. Những con chip này cũng đã hơn 20 năm tuổi nhưng mã kernel đã được cập nhật và không phải là gánh nặng bảo trì.
- Tập tin bảng PXA: Có hai tệp tấm còn lại trong mã PXA chưa được xóa hai năm trước, hy vọng điều này sẽ giúp ích cho việc chuyển đổi sang DT
- OMAP1: nền tảng ARMv4T/ARMv5 duy nhất không hỗ trợ DT, khiến nó trở thành mục tiêu bị loại bỏ vào một thời điểm nào đó.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
- OMAP24xx
- iMX31, realview/tích hợp với 1136r0
- S3C64xx (Cragganmore): Đây là bảng ARMv6K duy nhất không có hỗ trợ devicetree và tệp bảng có mức độ phức tạp tương tự như tất cả các tệp bảng khác cộng lại. Arch/arm/mach-s3c/Kconfig.s3c64xx liệt kê nó để loại bỏ vào đầu năm tới, điều này sẽ cho phép dọn dẹp cơ sở hạ tầng và trình điều khiển nền tảng.
- Tệp Orion5x, mv78xx0, bảng chim bồ câu: Giống như PXA, những thứ này vẫn đang chờ tiến trình chuyển đổi DT, nhưng không có gì xảy ra ngoại trừ một số sửa lỗi nhỏ trong mv78xx0. Ngược lại, Debian đã loại bỏ tệp nhị phân hạt nhân orion5x với lý do thiếu người dùng nên có vẻ như nó ít có khả năng hoàn thành hơn.
- iMX35, WM8750, AST2500, BCM2835: Bốn nền tảng này đều là nền tảng ARMv6K và được hỗ trợ tốt, mặc dù chỉ AST2500 và BCM2835 có cơ sở người dùng đang hoạt động.
- Bộ vi điều khiển Stm32f4/f7/h7: Đây là những chip Arm không phải MMU duy nhất tiếp tục phát triển khi ST tiếp tục hỗ trợ các khách hàng hiện tại của mình.
Cuối cùng, cần đề cập rằng kế hoạch này vẫn đang trong giai đoạn RFC, tức là được xuất bản để cộng đồng thảo luận. Nếu được chấp thuận, người ta đề xuất bắt đầu loại bỏ bộ xử lý ARM cũ trong nhân Linux 6.12, dự kiến vào tháng 4. Các ứng cử viên đầu tiên bị loại bỏ là ARMv4 (không loại bỏ ARMv32T), iWMMXt, BEXNUMX và OABI.
Fuente: https://lkml.org