Dukungan bootloader MTE

Android 13 memperkenalkan ABI untuk ruang pengguna guna mengomunikasikan mode MTE yang diminta ke bootloader. Hal ini dapat digunakan untuk mengaktifkan MTE di perangkat yang memiliki dukungan hardware tetapi tidak dikirimkan dengan MTE yang diaktifkan secara default, atau untuk menonaktifkan MTE di perangkat yang dikirimkan dengan MTE.

Dukungan bootloader

Untuk mendukung ABI ini, bootloader Anda harus membaca misc_memtag_message (ditetapkan di bootloader_message.h) dari partisi misc. Jika misc_memtag_message yang valid ditemukan (MISC_VIRTUAL_AB_MAGIC_HEADER cocok, dan nomor versinya 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 (true), bootloader akan 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 bernilai salah (false), bootloader akan menambahkan arm64.nomte ke command line kernel.

Jika memtag_kernel benar, bootloader akan menambahkan kasan=on ke command line kernel. Jika tidak, kasan=off akan ditambahkan.

Bootloader HARUS menghapus MISC_MEMTAG_MODE_MEMTAG_ONCE dan MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE pada setiap booting.

Jika bootloader mendukung fastboot oem mte, maka setel MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} ke (1, 0, 0), dan nonaktif ke (0, 0, 1), sambil mempertahankan flag lainnya.

Anda harus mengonfigurasi produk untuk membuat biner mtectrl untuk dukungan ruang pengguna. Kemudian, tetapkan properti sistem ro.arm64.memtag.bootctl_supported untuk menunjukkan kepada sistem bahwa bootloader Anda mendukung pesan memtag.

Antarmuka pengguna

Saat properti ro.arm64.memtag.bootctl_supported ditetapkan, tombol di menu Opsi Developer memungkinkan pengguna melakukan reboot sekali dengan MTE diaktifkan. Audiens target untuk ini adalah developer aplikasi yang ingin menguji aplikasi mereka dengan MTE. Screenshot opsi developer MTE.

Properti sistem

Untuk penggunaan lanjutan, properti sistem arm64.memtag.bootctl dapat menggunakan daftar nilai berikut yang dipisahkan koma:

  • memtag: mengaktifkan MTE ruang pengguna secara persisten (set MISC_MEMTAG_MODE_MEMTAG)
  • memtag-once: mengaktifkan MTE ruang pengguna satu kali (set MISC_MEMTAG_MODE_MEMTAG_ONCE)
  • memtag-kernel: mengaktifkan MTE ruang kernel (tetapkan MISC_MEMTAG_MODE_MEMTAG_KERNEL)
  • memtag-kernel-once: mengaktifkan MTE ruang kernel satu kali (MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE)
  • memtag-off: menonaktifkan MTE (set MISC_MEMTAG_MODE_MEMTAG_OFF)

Sistem harus dimulai ulang agar setelan baru diterapkan (karena diterapkan oleh bootloader).