Dukungan Bootloader MTE

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 properti ro.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. Tangkapan layar opsi pengembang 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).