دعم MTE Bootloader

يقدم Android 13 واجهة ABI لمساحة المستخدم لتوصيل وضع MTE المطلوب إلى أداة تحميل التشغيل. يمكن استخدام هذا لتمكين MTE على الأجهزة التي تحتوي على دعم الأجهزة ولكنها لا تأتي مع تمكين MTE افتراضيًا، أو لتعطيل MTE على الأجهزة التي تأتي معه.

دعم محمل الإقلاع

لدعم واجهة برمجة التطبيقات (ABI) هذه، يحتاج برنامج تحميل التشغيل الخاص بك إلى قراءة misc_memtag_message (المحددة في bootloader_message.h ) من القسم misc . إذا تم العثور على misc_memtag_message صالحة (تتطابق MISC_VIRTUAL_AB_MAGIC_HEADER ، وكان رقم الإصدار مدعومًا)، يقوم برنامج تحميل التشغيل بحساب

memtag = (default_memtag && !(misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_OFF)) ||
      misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG ||
      misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_ONCE

memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL ||
      misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE

default_memtag هو إعداد تشغيل/إيقاف العلامة الافتراضية لـ SKU. إذا كانت memtag صحيحة، فسيقوم أداة تحميل التشغيل بإعداد حجز علامة MTE، وتمكين عمليات التحقق من العلامة في مستويات الاستثناء الأدنى، وتوصيل المنطقة المحجوزة للعلامة إلى kernel عبر DT. إذا كانت memtag خاطئة، فإن أداة تحميل التشغيل تضيف Arm64.nomte إلى سطر أوامر kernel.

إذا كانت قيمة memtag_kernel صحيحة، فإن أداة تحميل التشغيل تُلحق kasan=on بسطر أوامر kernel.

يجب على أداة تحميل التشغيل مسح MISC_MEMTAG_MODE_MEMTAG_ONCE و MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE في كل عملية تمهيد.

إذا كان محمل الإقلاع يدعم fastboot oem mte ، فسيتم تعيين MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} على (1, 0, 0) وإيقافه على (0, 0, 1) مع الحفاظ على العلامات الأخرى.

يجب عليك تكوين منتجك لإنشاء ملف mtectrl الثنائي لدعم مساحة المستخدم. بعد ذلك، قم بتعيين خاصية النظام ro.arm64.memtag.bootctl_supported لتشير للنظام إلى أن أداة تحميل التشغيل لديك تدعم رسالة العلامة memtag.

واجهة المستخدم

عند تعيين الخاصية ro.arm64.memtag.bootctl_supported ، يسمح زر في قائمة خيارات المطور للمستخدم بإعادة التشغيل مرة واحدة مع تمكين MTE. الجمهور المستهدف لهذا هو مطوري التطبيقات الذين يرغبون في اختبار تطبيقاتهم باستخدام MTE. لقطة شاشة لخيار مطور MTE.

خاصية النظام

للاستخدام المتقدم، يمكن لخاصية النظام arm64.memtag.bootctl أن تأخذ قائمة مفصولة بفواصل من القيم التالية:

  • علامة memtag: الاستمرار في تمكين MTE لمساحة المستخدم (اضبط MISC_MEMTAG_MODE_MEMTAG )
  • علامة الذاكرة مرة واحدة: تمكين MTE لمساحة المستخدم مرة واحدة (اضبط MISC_MEMTAG_MODE_MEMTAG_ONCE )
  • memtag-kernel: تمكين kernel-space MTE (تعيين MISC_MEMTAG_MODE_MEMTAG_KERNEL )
  • memtag-kernel-once: تمكين kernel-space MTE مرة واحدة ( MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE )
  • علامة memtag-off: تعطيل MTE (اضبط MISC_MEMTAG_MODE_MEMTAG_OFF )

يجب إعادة تشغيل النظام حتى يصبح الإعداد الجديد ساري المفعول (كما يتم تطبيقه بواسطة أداة تحميل التشغيل).