MTE bootloader desteği

Android 13, kullanıcı alanının istenen MTE modunu önyükleyiciye bildirmesi için bir ABI sunar. Bu ayarı, donanım desteği olan ancak MTE'nin varsayılan olarak etkin olmadığı cihazlarda MTE'yi etkinleştirmek veya MTE'nin varsayılan olarak etkin olduğu cihazlarda MTE'yi devre dışı bırakmak için kullanabilirsiniz.

Bootloader desteği

Bu ABI'yi desteklemek için bootloader'ınızın misc_memtag_message ( bootloader_message.h içinde tanımlanır) değerini misc bölümünden okuması gerekir. Geçerli bir misc_memtag_message bulunursa (MISC_MEMTAG_MAGIC_HEADER eşleşir ve sürüm numarası desteklenir), önyükleyici aşağıdaki gibi hesaplanır:

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 için varsayılan memtag açık veya kapalı ayarıdır. memtag true ise bootloader, MTE etiketi ayırma işlemini yapar, alt istisna seviyelerinde etiket kontrollerini etkinleştirir ve ayrılmış etiket bölgesini cihaz ağacı (DT) ile çekirdeğe iletir. memtag, false ise önyükleyici, arm64.nomte öğesini çekirdek komut satırına ekler.

memtag_kernel, true ise önyükleyici, çekirdek komut satırına kasan=on ekler. Aksi takdirde kasan=off eklenir.

Önyükleyici, her önyüklemede MISC_MEMTAG_MODE_MEMTAG_ONCE ve MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE'yi temizlemelidir.

Önyükleyici fastboot oem mte'ı destekliyorsa on bağımsız değişkeni MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} işaretlerini (1, 0, 0) olarak ayarlamalı, off bağımsız değişkeni ise diğer işaretleri koruyarak MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} işaretlerini (0, 0, 1) olarak ayarlamalıdır.

Ürününüzü, kullanıcı alanı desteği için mtectrl ikilisini oluşturacak şekilde yapılandırın. Ardından, ro.arm64.memtag.bootctl_supported sistem özelliğini ayarlayarak sisteme önyükleyicinizin memtag mesajını desteklediğini belirtin.

Kullanıcı arayüzü

ro.arm64.memtag.bootctl_supported özelliği ayarlandığında, Geliştirici Seçenekleri menüsündeki MTE ile yeniden başlat seçeneği, MTE etkin olarak bir kez yeniden başlatmanıza olanak tanır. Bu özellik, uygulamalarını MTE ile test etmek isteyen uygulama geliştiriciler için tasarlanmıştır.

MTE geliştirici seçeneği

Şekil 1. MTE geliştirici seçeneği.

Sistem özelliği

Gelişmiş kullanım için sistem özelliği arm64.memtag.bootctl, aşağıdaki değerlerin virgülle ayrılmış bir listesini alabilir:

  • memtag Kullanıcı alanı MTE'yi kalıcı olarak etkinleştirir (set MISC_MEMTAG_MODE_MEMTAG).
  • memtag-once, kullanıcı alanı MTE'yi bir kez etkinleştirir (set MISC_MEMTAG_MODE_MEMTAG_ONCE).
  • memtag-kernel, çekirdek alanı MTE'yi etkinleştirir (set MISC_MEMTAG_MODE_MEMTAG_KERNEL).
  • memtag-kernel-once, çekirdek alanında MTE'yi bir kez etkinleştirir (MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE ayarlanır).
  • memtag-off MTE'yi devre dışı bırakır (set MISC_MEMTAG_MODE_MEMTAG_OFF).

Ayar, önyükleyici tarafından uygulanır. Bu nedenle, değişiklik yaptıktan sonra sistemi yeniden başlatın.