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 varsayılan olarak MTE etkin şekilde gönderilmeyen cihazlarda MTE'yi etkinleştirmek veya MTE etkin şekilde gönderilen 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 şekilde 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, daha düşük istisna seviyelerinde etiket kontrollerini etkinleştirir ve ayrılmış etiket bölgesini cihaz ağacı (DT) ile çekirdeğe iletir. memtag, false ise bootloader, arm64.nomte öğesini çekirdek komut satırına ekler.

memtag_kernel, true ise bootloader, kasan=on öğesini çekirdek komut satırına 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'yı 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 (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 sistemin, ö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 Bellek Etiketleme Uzantısı menüsü, kullanıcının cihaz için MTE'yi etkinleştirmesine olanak tanır. Bu belgenin hedef kitlesi, uygulamalarını MTE ile test etmek isteyen uygulama geliştiricilerdir.

MTE geliştirici seçeneği

Şekil 1. MTE geliştirici menüsü.

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.