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.

Ş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:
-
memtagKullanıcı alanı MTE'yi kalıcı olarak etkinleştirir (setMISC_MEMTAG_MODE_MEMTAG). -
memtag-once, kullanıcı alanı MTE'yi bir kez etkinleştirir (setMISC_MEMTAG_MODE_MEMTAG_ONCE). -
memtag-kernel, çekirdek alanı MTE'yi etkinleştirir (setMISC_MEMTAG_MODE_MEMTAG_KERNEL). -
memtag-kernel-once, çekirdek alanında MTE'yi bir kez etkinleştirir (MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCEayarlanır). -
memtag-offMTE'yi devre dışı bırakır (setMISC_MEMTAG_MODE_MEMTAG_OFF).
Ayar, önyükleyici tarafından uygulanır. Bu nedenle, değişiklik yaptıktan sonra sistemi yeniden başlatın.