Android 13 memperkenalkan ABI untuk ruang pengguna untuk 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 diaktifkan secara default, atau untuk menonaktifkan MTE pada perangkat yang dikirimkan bersamanya.
Dukungan bootloader
Untuk mendukung ABI ini, bootloader Anda perlu membaca misc_memtag_message
(didefinisikan dalam bootloader_message.h ) dari parition misc
. Jika misc_memtag_message
yang valid ditemukan ( MISC_VIRTUAL_AB_MAGIC_HEADER
cocok, dan nomor versi didukung), bootloader 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 setelan 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 yang dicadangkan 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 setel MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
ke (1, 0, 0)
, dan matikan ke (0, 0, 1)
, sambil mempertahankan flag lainnya.
Anda harus mengonfigurasi produk Anda untuk membangun biner mtectrl
untuk dukungan ruang pengguna. Kemudian, setel 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
disetel, tombol di menu Opsi Pengembang memungkinkan pengguna untuk melakukan boot ulang sekali dengan MTE diaktifkan. Target audiens untuk ini 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: terus-menerus mengaktifkan MTE ruang pengguna (setel
MISC_MEMTAG_MODE_MEMTAG
) - memtag-once: aktifkan MTE ruang pengguna sekali (setel
MISC_MEMTAG_MODE_MEMTAG_ONCE
) - memtag-kernel: aktifkan MTE ruang-kernel (setel
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) - memtag-kernel-once: aktifkan MTE ruang kernel sekali (
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).
,Android 13 memperkenalkan ABI untuk ruang pengguna untuk 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 diaktifkan secara default, atau untuk menonaktifkan MTE pada perangkat yang dikirimkan bersamanya.
Dukungan bootloader
Untuk mendukung ABI ini, bootloader Anda perlu membaca misc_memtag_message
(didefinisikan dalam bootloader_message.h ) dari parition misc
. Jika misc_memtag_message
yang valid ditemukan ( MISC_VIRTUAL_AB_MAGIC_HEADER
cocok, dan nomor versi didukung), bootloader 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 setelan 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 yang dicadangkan 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 setel MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
ke (1, 0, 0)
, dan matikan ke (0, 0, 1)
, sambil mempertahankan flag lainnya.
Anda harus mengonfigurasi produk Anda untuk membangun biner mtectrl
untuk dukungan ruang pengguna. Kemudian, setel 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
disetel, tombol di menu Opsi Pengembang memungkinkan pengguna untuk melakukan boot ulang sekali dengan MTE diaktifkan. Target audiens untuk ini 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: terus-menerus mengaktifkan MTE ruang pengguna (setel
MISC_MEMTAG_MODE_MEMTAG
) - memtag-once: aktifkan MTE ruang pengguna sekali (setel
MISC_MEMTAG_MODE_MEMTAG_ONCE
) - memtag-kernel: aktifkan MTE ruang-kernel (setel
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) - memtag-kernel-once: aktifkan MTE ruang kernel sekali (
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).