הם משיקים הצעה לביטול תמיכת ARM ישנה בלינוקס

הסר תמיכת ARM ישנה בלינוקס

ארנד ברגמן, מפתח ליבת לינוקס מסניף arm-soc ומנהל חבילות ליבה ב-SUSE, הוציא א הצעה שבו הוא מניח על השולחן הנושא של הסרת הליבה מבוססת GCC וליצור כלי קוד לתמיכה במעבדי ARM ישנים יותר, ABIs המשויכים להם, ערכות הוראות ויכולות ליבה.

ארנד ברגמן, מזכיר זאת בסיס ההצעה של הפסקת התמיכה עבור מעבדי ARM ישן ב-kerneאני עקב הפסקה ב-GCC, מכיוון שחלק מהמעבדים המוצעים להסרה אינם נתמכים עוד בסניפי GCC האחרונים, ואחרים מתוכננים להיות מוסרים במהדורות עתידיות.

ציין כי על ידי יישום זה, המודרניזציה והיישום של פונקציות חדשות במהדר יוקלו. והסרת תמיכה בארכיטקטורה ב-GCC תחייב את הסרתה מהקרנל אם גדלה גירסת ה-GCC המינימלית הנתמכת על ידי הליבה (כרגע, נדרשת לפחות גרסה 5.1 של GCC כדי להדר את הליבה).

בין ארכיטקטורות, שבבים והרחבות שמוצעים להסיר מהקרנל, מוזכרים הבאים:

  • ARMv3: הוסר ב-GCC-9, כך שהוא יוסר בסופו של דבר מהקרנל ככל שמספר גרסאות המהדר יגדלו.
  • ARMv4: משמש למעבדי StrongARM ו-FA526, עדיין בחלק מהלוחות. אפילו השבבים החדשים ביותר הם בני קרוב ל-20 שנה. הגרסה האחרונה של דביאן שתמכה בהם הייתה לני (5.0). שש משפחות SoC עם ליבות ARMv4T (ARM720T, ARM920T ו-ARM922T) עדיין נתמכות. למרות שהם ישנים, יש להם יותר משתמשים ומפתחים מאשר ARMv4. Debian Stretch (9.0) הייתה האחרונה שתמכה בהם.
  • ARMv5: כשליש מהפלטפורמות הנתמכות משתמשות ב-ARMv5, אך רובן נמצאות לקראת סיום התמיכה שלהן.
  • ARMv6 מוקדם: כולל ARM1136r0p ב-NXP i.MX31 ו-OMAP24xx, בעיקר טאבלט Nokia N8xx. דורש פריצות מיוחדות כדי לתמוך בקרנלים עם SMP. יש תיקון שמשנה את ARMv6 מהתאמה ל-ARMv7 לתואם ל-ARMv5, אבל הוא דורש יותר עבודה.
  • ARMv6K
    ARMv7-M: Cortex-M3/M4/M7 הן הליבות היחידות הנתמכות ללא MMU, כרגע ב-5 פלטפורמות מיקרו-בקר. ניתן להסיר אותם ב-2027, אך GCC עדיין תצטרך לתמוך בהם במערכות הפעלה אחרות.
  • iWMMXt: לא נותרו משתמשים ידועים עבור iWMMXt, והתמיכה במעבדי ARMv7 PJ4 הוסרה. זה נתמך רק ב-Intel/Marvell PXA ו-MMP1.
  • ליבת ARMv5 big endian (BE32): רק SoC אחד משתמש בו, Intel IXP4xx. דביאן תמכה בו במצב little-endian, אבל הדרייברים שבורים ב-LE.
  • ליבת ARMv7 big endian (BE8)
  • Param_struct pre-ATAGS: זה הופחת בשנת 2001, כדי להתבטל בעוד "5 שנים", וזה כבר קרה.
  • קבצי לוחות מבוססי ATAGS: לאחר הניקוי לעיל, נותרו 29 קבצי לוח ב-10 פלטפורמות SoC.
  • גרעיני OABI: כמעט כולם משתמשים ב-EABI היום, ותמיכת OABI הוסרה כיעד ב-GCC-4.8. הליבה עדיין מאפשרת לבנות כ-OABI עם -mabi=apcs-gnu, בשימוש כברירת מחדל בליבת ARMv4/ARMv5.
  • מצב OABI Compat: זה מאפשר להריץ קבצים בינאריים של OABI עם ליבת EABI.
  • NWFPE
  • Highmem: רוב מכשירי ARM יכולים לעבוד ללא תמיכת highmem באמצעות CONFIG_VMSPLIT_2GB כדי לטפל בזיכרון פיזי של עד 2GB. מכונות גדולות יותר הופיעו עם Cortex-A15 בשנת 2012, הוחלפו במהירות בשבבים של 64 סיביות.
  • Sparsemem: יש דיון על הסרת התמיכה ב-sparsemem המסורתית. זה קשור גם למכונות הזקוקות ל-highmem כדי להשתמש בכל זיכרון ה-RAM שלהן
  • RiscPC: זוהי הפלטפורמה הוותיקה ביותר שנתמכת, ובסופו של דבר תוסר, מכיוון שהיא לא עובדת עם GCC-9 ומעלה עקב הסרת ARMv3.
  • SA1100, גשר הולכי רגל: פלטפורמות אחרות מבוססות StrongARM, רלוונטיות רק לנוסטלגיה.
  • מזל תאומים, מוקסארט: שניהם משתמשים בליבת המעבד Faraday FA526, שכמו StrongARM מיישמת ARMv4 במקום ARMv4T עם אגודל. השבבים הם גם בני יותר מ-20 שנה, אך קוד הליבה עודכן ואינו מהווה נטל תחזוקה.
  • קבצי לוח PXA: נותרו שני קבצי לוחיות בקוד PXA שלא הוסרו לפני שנתיים, בתקווה שזה יעזור להמרה ל-DT
  • OMAP1: פלטפורמת ARMv4T/ARMv5 היחידה ללא תמיכת DT, מה שהופך אותה למטרה להסרה בשלב מסוים.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
  • OMAP24xx
  • iMX31, realview/אינטגרטור עם 1136r0
  • S3C64xx (Cragganmore): זהו לוח ה-ARMv6K היחיד ללא תמיכה ב- devicetree, וקובץ הלוח מכיל כמות דומה של מורכבות כמו כל קבצי הלוח האחרים גם יחד. arch/arm/mach-s3c/Kconfig.s3c64xx מפרט אותו להסרה בתחילת השנה הבאה, מה שיאפשר ניקוי גדול של תשתית הפלטפורמה והנהגים.
  • Orion5x, mv78xx0, קבצי לוח יונה: כמו PXA, אלה נותרו בהמתנה להתקדמות לקראת המרת ה-DT, אבל שום דבר לא קרה מלבד כמה תיקונים קלים ב-mv78xx0. לעומת זאת, דביאן הסירה את הליבה הבינארית של orion5x תוך ציטוט של חוסר משתמשים, כך שנראה הרבה פחות סביר שהוא יושלם.
  • iMX35, WM8750, AST2500, BCM2835: ארבע אלו הן כולן פלטפורמות ARMv6K והן נתמכות היטב, אם כי רק ל-AST2500 ו-BCM2835 יש בסיס משתמשים פעיל.
  • בקרי מיקרו Stm32f4/f7/h7: אלו הם השבבים היחידים שאינם MMU Arm שראו את המשך הפיתוח שכן ST ממשיכה לתמוך בלקוחותיה הקיימים.

לבסוף, יש להזכיר כי תוכנית זו עדיין בשלב ה-RFC, כלומר, פורסם לדיון בקהילה. אם יאושר, מוצע להתחיל בהסרה של מעבדי ARM ישנים בליבת Linux 6.12, הצפוי בדצמבר. המועמדים הראשונים שיוסרו הם ARMv4 (ללא הסרת ARMv4T), iWMMXt, BE32 ו-OABI.

מקור: https://lkml.org