برای پایان دادن به پشتیبانی از پردازنده های قدیمی ARM در هسته لینوکس برنامه ریزی کنید

آرند برگمان، که مسئول بسته‌های هسته در SUSE است، در لیست پستی توسعه‌دهندگان هسته لینوکس طرحی برای حذف هسته مبتنی بر GCC و ساخت ابزارهای کد برای پشتیبانی از CPUهای قدیمی ARM و ABI‌های مرتبط، مجموعه دستورالعمل‌ها و قابلیت‌های هسته ارسال کرد. . این طرح هنوز در مرحله RFC است، یعنی. برای بحث در جامعه ارسال شد در صورت تایید این طرح، حذف پردازنده های قدیمی ARM در هسته لینوکس 6.12 که انتظار می رود در ماه دسامبر منتشر شود، پیشنهاد می شود. اولین نامزدهای حذف ARMv4 (بدون حذف ARMv4T)، iWMMXt، BE32 و OABI هستند.

توقف پشتیبانی از CPU های قدیمی ARM در هسته با توقف پشتیبانی آنها در GCC تلاقی می کند - برخی از CPU های ارسال شده برای حذف دیگر در آخرین شاخه های GCC پشتیبانی نمی شوند و برخی برنامه ریزی شده است که در نسخه های بعدی حذف شوند. نوسازی و پیاده سازی ویژگی های جدید در کامپایلر را ساده می کند. اگر حداقل نسخه GCC پشتیبانی شده توسط هسته افزایش یابد، حذف پشتیبانی از یک معماری در GCC نیاز به حذف پشتیبانی آن از هسته دارد (در حال حاضر حداقل نسخه GCC 5.1 برای ساخت هسته مورد نیاز است).

معماری ها، تراشه ها و افزونه هایی که پیشنهاد می شود از هسته حذف شوند:

  • ARMv3 - دیگر در GCC 9 پشتیبانی نمی شود.
  • ARMv4 - برای پردازنده های StrongARM و FA526 استفاده می شود که هنوز در حال استفاده هستند، در حالی که جدیدترین این تراشه ها حدود 20 سال پیش عرضه شدند. پشتیبانی ARMv4 در Debian 5.0 متوقف شد. پیشنهاد می شود ابتدا پشتیبانی از ARMv4 در GCC متوقف شود و پس از چند سال در هسته.
  • ARMv4T - در زندگی روزمره 6 خانواده SoC با هسته های ARM720T، ARM920T و ARM922T وجود دارد که از SoC های مبتنی بر ARMv4 رایج تر هستند. پشتیبانی ARMv4T در Debian 9.0 متوقف شد. هسته قصد دارد پشتیبانی از ARMv4T را متوقف کند، نه قبل از پایان دادن به پشتیبانی از ARMv5.
  • ARMv5 - در حدود 1/3 از تمام پلتفرم های پشتیبانی شده در هسته استفاده می شود، اما اکثر این پلت فرم ها به پایان چرخه عمر خود نزدیک هستند. دبیان همچنان از ARMv5 پشتیبانی می کند، اما به دلیل عدم وجود FPU و عملیات اتمی، حفظ پشتیبانی به طور فزاینده ای دشوار می شود و این احتمال وجود دارد که پورت دبیان برای ARMv5 به زودی به غیر رسمی تبدیل شود.
  • نسل‌های اولیه ARMv6 - در SoCهایی مانند ARM1136r0p (NXP i.MX31) و OMAP24xx (Nokia N8xx) استفاده می‌شوند، اما پشتیبانی آن‌ها به هک‌ها نیاز دارد تا در هسته‌های دارای SMP کار کنند.
  • ARMv6K - در ARM1176 (Raspberry Pi 1، AST2500) و ARM1136r1 استفاده می شود. هیچ مانعی برای قطع پشتیبانی در هسته وجود ندارد، اما مشکلاتی در توزیع ها به دلیل ناسازگاری با مجموعه استاندارد armv7-a+vfpv3-d16 ایجاد می شود.
  • ARMv7-M - در میکروکنترلرهای مبتنی بر Cortex-M3/M4/M7 استفاده می شود که آخرین تراشه های پشتیبانی شده از هسته بدون واحد مدیریت حافظه (MMU) هستند. کار بر روی هسته‌ها در سیستم‌های بدون MMU در سال 2017 و پس از تغییر به توسعه RTOS برای تراشه‌های مشابه مانند Zephyr متوقف شد. پشتیبانی از ARMv7-M پیشنهاد می شود در سال 2027، 10 سال پس از توقف توسعه، با وجود ادامه پشتیبانی در GCC، حذف شود.
  • iWMMXt - هسته قبلاً پشتیبانی از پردازنده‌های ARMv7 PJ4 (MMP2، برلین) را متوقف کرده است، پس از آن هیچ سیستمی در حال استفاده باقی نمانده است که از این مجموعه دستورالعمل‌ها استفاده می‌کند. iWMMXt قبلاً در Clang منسوخ شده است و برای حذف از GCC پیشنهاد شده است.
  • BE32 (Endian ARMv5 بزرگ) - فقط در یک SoC Intel IXP4xx استفاده می شود. نسخه‌های قدیمی‌تر دبیان فقط از حالت کمی اندین پشتیبانی می‌کردند، اما هنوز مشکلات حل‌نشده‌ای در درایورها وجود دارد. پیشنهاد شده است که پشتیبانی BE32 از GCC و هسته حذف شود، زیرا چندین سال است که هیچ کس برای رفع مشکلات درایورها تلاش نکرده است.
  • BE8 (Big-Endian ARMv7) - بسیاری از درایورها مشکل دارند، آزمایش متوقف شده است و هیچ اطلاعاتی در مورد دستگاه‌های در حال استفاده باقی مانده است. حالت BE8 ممکن است برای آزمایش اجزای فضای کاربر در سیستم‌های بزرگ endian جالب باشد، بنابراین پشتیبانی BE8 برنامه‌ریزی شده است که حداقل برای چند سال قبل از شروع مشکل در هسته و GCC حفظ شود.

ویژگی های هسته لینوکس پیشنهادی برای حذف:

  • ساختار param_struct مورد استفاده قبل از ATAGS (ARM Tag-Area) در سال 2001 منسوخ اعلام شد، اما همچنان در کد پلتفرم‌های RiscPC و Footbridge استفاده می‌شود.
  • فایل هایی با پارامترهای مبتنی بر ساختار ATAGS (برای انتقال اطلاعات پیکربندی به Device Tree استفاده می شود) - 29 فایل در هسته مرتبط با 10 پلت فرم SoC با استفاده از ATAGS باقی می مانند.
  • OABI (ABI قدیمی، ABI قدیمی برای معماری ARM) - EABI (Embedded ABI) اکنون تقریباً در همه جا استفاده می شود. OABI علت بسیاری از خطاها است زیرا توسعه دهندگان درایور برخی از ویژگی های مرتبط با آن را در نظر نگرفته اند. پشتیبانی OABI برای ساخت فضای کاربر در GCC 4.8 متوقف شد، اما هسته پرچم "-mabi=apcs-gnu" را حفظ کرد. پیشنهاد شده است که OABI فعلا حفظ شود، اما به دلیل نظارت دشوارتر شود.
  • حالت سازگاری OABI (OABI_COMPAT) - به فایل های اجرایی کامپایل شده برای OABI اجازه می دهد تا با استفاده از یک هسته با EABI اجرا شوند. برخی از مشکلات در درایورها به دلیل ناسازگاری با ioctl ایجاد می شود، اما پیچیدگی حفظ این حالت به طور قابل توجهی کمتر از حفظ هسته ها با OABI است. برای حفظ پشتیبانی StrongARM، منطقی است که پشتیبانی OABI یا OABI_COMPAT را حفظ کنید.
  • NWFPE (بدون شبیه ساز نقطه شناور) - وصله هایی برای حذف 11 سال پیش پیشنهاد شد، اما NWFPE برای برخی از اجزای فضای کاربر ساخته شده برای OABI مورد نیاز است، بنابراین توصیه می شود تا زمانی که پشتیبانی OABI یا OABI_COMPAT در هسته باقی بماند، پشتیبانی از NWFPE را حفظ کنید.
  • Highmem (برای مدیریت حافظه در مناطق بیش از 1 گیگابایت استفاده می شود) - اکثر سیستم های ARM می توانند بدون فعال کردن highmem اجرا شوند یا می توانند از CONFIG_VMSPLIT_2 گیگابایت برای دسترسی به 2 گیگابایت اول حافظه فیزیکی استفاده کنند. کار برای دسترسی به 4 گیگابایت رم در سیستم‌های دارای LPAE (Cortex-A7/A15) در حال انجام است، پس از آن ممکن است پشتیبانی Highmem حذف شود.
  • Sparsemem - برای سیستم هایی که نیاز به highmem دارند لازم است.

پلتفرم های پیشنهادی برای حذف:

  • RiscPC قدیمی ترین پلتفرم پشتیبانی شده در هسته است. به دلیل حذف پشتیبانی ARMv9 از نسخه 3.x در GCC پشتیبانی نمی‌شود. نگهدارنده همچنان به آزمایش هسته در این پلتفرم ادامه می‌دهد، اما به نظر می‌رسد که دیگر کاربر واقعی وجود ندارد، بنابراین در صورت از دست دادن علاقه نگهدار، پشتیبانی ممکن است متوقف شود.
  • SA1100، Footbridge - پلتفرم های منسوخ شده، فقط به دلایل نوستالژی حفظ شده است. تقریباً تمام فایل‌های توصیف کننده بردهای این پلتفرم‌ها در هسته 6.3 حذف شدند و تنها از دستگاه‌های ipaq h3600، assabet، netwinder و ebsa285 پشتیبانی می‌کردند. مسئله حذف بستگی به نیت نگهدار دارد.
  • Gemini، Moxart - از CPU های مبتنی بر ARMv4 استفاده کنید. این تراشه ها بیش از 20 سال پیش منتشر شدند، اما پشتیبانی از آنها نیازی به تلاش های اضافی برای تعمیر و نگهداری ندارد، بنابراین حذف آنها قبل از حذف پلت فرم StrongARM فایده ای ندارد.
  • فایل‌هایی برای پشتیبانی از PXA - پلتفرم‌ها رها شده‌اند و در صورت عدم استفاده از علاقه به آن‌ها، در ابتدای سال 2025 حذف خواهند شد.
  • OMAP1 - از یک طرف، تنها پلتفرم مبتنی بر ARMv4T/ARMv5 بدون پشتیبانی Device Tree باقی می ماند و هیچ حرکتی به سمت انتقال به Device Tree وجود ندارد، اما از طرف دیگر، این پلتفرم همچنان کاربران دارد.
  • Nspire، AT91RM9200، CLPS711X، EP93xx، iMX1 - از CPU های مبتنی بر ARMv4T استفاده کنید. کار برای انتقال توضیحات برد به Device Tree در حال انجام است، اما پشتیبانی از آنها فقط تا زمانی که پشتیبانی ARMv5 حفظ می شود منطقی است.
  • OMAP24xx تنها پلتفرم مبتنی بر ARMv6 با کاربران فعال است. حفظ پشتیبانی به حفظ پشتیبانی از CPU arm1136r0 بستگی دارد.
  • iMX31 - هیچ اطلاعاتی در مورد حضور کاربران فعال وجود ندارد، اما حذف قبل از OMAP2 فایده ای ندارد.
  • S3C64xx (Cragganmore) تنها پلتفرم بدون پشتیبانی Device Tree است که بر روی ARMv6K ساخته شده است. این پلتفرم همچنان برای آزمایش کدک‌های صوتی استفاده می‌شود، بنابراین حذف تا زمانی که آزمایش به برد دیگری منتقل شود به تأخیر می‌افتد.
  • Orion5x، mv78xx0 - موضوع حذف قرار است در اوایل سال آینده در نظر گرفته شود.
  • iMX35، WM8750، AST2500، BCM2835 - به خوبی پشتیبانی می شوند و هنوز هیچ برنامه ای برای حذف آنها وجود ندارد.
  • stm32f4/f7/h7 - میکروکنترلرهای بدون MMU، پشتیبانی در هسته ادامه دارد و کاربران فعال وجود دارد. موضوع حذف قرار است در سال 2026 در نظر گرفته شود.

منبع: opennet.ru

اضافه کردن نظر