Android 13, kullanıcının istediği MTE modunu önyükleyiciye bildirmek için kullanıcı alanına yönelik bir ABI sunar. Bu, donanım desteği olan ancak varsayılan olarak MTE etkinleştirilmemiş cihazlarda MTE'yi etkinleştirmek veya MTE'nin etkinleştirildiği cihazlarda MTE'yi devre dışı bırakmak için kullanılabilir.
Bootloader desteği
Bu ABI'yi desteklemek için bootloader'ınızın misc_memtag_message
(
bootloader_message.h içinde tanımlanır) öğesini misc
bölümünden okuması gerekir.
Geçerli bir misc_memtag_message
bulunursa
(MISC_VIRTUAL_AB_MAGIC_HEADER
eşleşir ve sürüm numarası destekleniyorsa),
önyükleyici
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çma/kapatma ayarıdır. memtag
doğruysa önyükleyici, MTE etiketi ayırma işlemini yapar, daha düşük istisna seviyelerinde etiket kontrollerini etkinleştirir ve ayrılmış etiket bölgesini DT aracılığıyla çekirdeğe iletir. If
memtag
false ise önyükleyici, çekirdek komut satırına
arm64.nomte
ekler.
memtag_kernel
doğruysa ö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 TEMİZLEMELİDİR.
Önyükleyici fastboot oem mte
'yı destekliyorsa diğer işaretleri korurken MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
'yı (1, 0, 0)
'ya, (0, 0, 1)
'ı ise kapalıya ayarlar.
Ürününüzü, kullanıcı alanı desteği için mtectrl
ikili dosyasını
oluşturacak şekilde yapılandırmanız gerekir. Ardından, ro.arm64.memtag.bootctl_supported
sistem özelliğini, önyükleyicinizin memtag mesajını desteklediğini sisteme bildirecek şekilde ayarlayın.
Kullanıcı arayüzü
ro.arm64.memtag.bootctl_supported
özelliği ayarlandığında, Geliştirici Seçenekleri menüsündeki bir düğme kullanıcının MTE etkin olarak bir kez yeniden başlatmasına olanak tanır. Bu dokümanın hedef kitlesi, uygulamalarını MTE ile test etmek isteyen uygulama geliştiricilerdir.

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ştirin (set
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-once: Kullanıcı alanı MTE'yi bir kez etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG_ONCE
ayarlanır). -
memtag-kernel: çekirdek alanı MTE'yi etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG_KERNEL
olarak ayarlayın) -
memtag-kernel-once: çekirdek alanında MTE'yi bir kez etkinleştirin
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: MTE'yi devre dışı bırakır (set
MISC_MEMTAG_MODE_MEMTAG_OFF
)
Yeni ayarın geçerli olması için sistemin yeniden başlatılması gerekir (bootloader tarafından uygulandığı için).