Android 13 memperkenalkan ABI untuk ruang pengguna guna mengomunikasikan mode MTE yang diminta ke bootloader. Ini dapat digunakan untuk mengaktifkan MTE pada perangkat yang memiliki dukungan perangkat keras tetapi tidak dikirimkan dengan MTE yang diaktifkan secara default, atau untuk menonaktifkan MTE pada perangkat yang dikirimkan bersama MTE.
Dukungan bootloader
Untuk mendukung ABI ini, bootloader Anda perlu membaca misc_memtag_message
(didefinisikan dalam bootloader_message.h ) dari partisi misc
. Jika misc_memtag_message
yang valid ditemukan ( MISC_VIRTUAL_AB_MAGIC_HEADER
cocok, dan nomor versi didukung), bootloader akan menghitung
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
adalah pengaturan aktif/nonaktif memtag default untuk SKU. Jika memtag
benar, bootloader menyiapkan reservasi tag MTE, mengaktifkan pemeriksaan tag di tingkat pengecualian yang lebih rendah, dan mengomunikasikan wilayah cadangan tag ke kernel melalui DT. Jika memtag
salah, bootloader menambahkan arm64.nomte ke baris perintah kernel.
Jika memtag_kernel
benar, bootloader menambahkan kasan=on
ke baris perintah kernel.
Bootloader HARUS menghapus MISC_MEMTAG_MODE_MEMTAG_ONCE
dan MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
pada setiap boot.
Jika bootloader mendukung fastboot oem mte
, maka aktifkan MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
ke (1, 0, 0)
, dan off ke (0, 0, 1)
, sambil mempertahankan flag lainnya.
Anda harus mengonfigurasi produk Anda untuk membangun biner mtectrl
untuk dukungan ruang pengguna. Kemudian, atur properti sistem ro.arm64.memtag.bootctl_supported
untuk menunjukkan kepada sistem bahwa bootloader Anda mendukung pesan memtag.
Antarmuka pengguna
Ketika propertiro.arm64.memtag.bootctl_supported
diatur, sebuah tombol di menu Opsi Pengembang memungkinkan pengguna untuk melakukan boot ulang satu kali dengan MTE diaktifkan. Target audiensnya adalah pengembang aplikasi yang ingin menguji aplikasi mereka dengan MTE. Properti sistem
Untuk penggunaan tingkat lanjut, properti sistem arm64.memtag.bootctl
dapat mengambil daftar nilai berikut yang dipisahkan koma:
- memtag: aktifkan MTE ruang pengguna secara terus-menerus (setel
MISC_MEMTAG_MODE_MEMTAG
) - memtag-once: aktifkan MTE ruang pengguna satu kali (setel
MISC_MEMTAG_MODE_MEMTAG_ONCE
) - memtag-kernel: aktifkan MTE ruang kernel (atur
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) - memtag-kernel-once: aktifkan MTE ruang kernel satu kali (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) - memtag-off: nonaktifkan MTE (setel
MISC_MEMTAG_MODE_MEMTAG_OFF
)
Sistem harus di-boot ulang agar pengaturan baru dapat diterapkan (seperti yang diterapkan oleh bootloader).