Dukungan bootloader MTE

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

Dukungan bootloader

Untuk mendukung ABI ini, bootloader Anda harus membaca misc_memtag_message (ditentukan 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 setelan aktif/nonaktif tag memori default untuk SKU. Jika memtag bernilai benar, bootloader akan menyiapkan reservasi tag MTE, mengaktifkan pemeriksaan tag di tingkat pengecualian yang lebih rendah, dan menyampaikan region yang dicadangkan tag ke kernel melalui DT. Jika memtag bernilai salah, bootloader akan menambahkan arm64.nomte ke command line kernel.

Jika memtag_kernel bernilai benar, bootloader akan menambahkan kasan=on ke command line kernel.

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 aktif akan menetapkan MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} ke (1, 0, 0), dan nonaktif ke (0, 0, 1), sekaligus mempertahankan flag lainnya.

Anda harus mengonfigurasi produk untuk mem-build 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 memulai ulang sekali dengan MTE diaktifkan. Target audiens untuk hal 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 yang dipisahkan koma dari nilai berikut:

  • memtag: mengaktifkan MTE ruang pengguna secara persisten (set MISC_MEMTAG_MODE_MEMTAG)
  • memtag-once: mengaktifkan MTE ruang pengguna satu kali (tetapkan MISC_MEMTAG_MODE_MEMTAG_ONCE)
  • memtag-kernel: mengaktifkan MTE ruang kernel (set 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).