Dukungan bootloader MTE

Android 13 memperkenalkan ABI untuk ruang pengguna guna mengomunikasikan mode MTE yang diminta ke bootloader. Anda dapat menggunakannya 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 (ditetapkan dalam bootloader_message.h) dari partisi misc. Jika misc_memtag_message yang valid ditemukan (MISC_MEMTAG_MAGIC_HEADER cocok, dan nomor versi didukung), bootloader akan menghitung sebagai berikut:

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 default aktif atau nonaktif untuk memtag di SKU. Jika memtag adalah true, bootloader akan menyiapkan reservasi tag MTE, mengaktifkan pemeriksaan tag di tingkat pengecualian yang lebih rendah, dan mengomunikasikan wilayah yang dicadangkan tag ke kernel dengan devicetree (DT). Jika memtag adalah false, bootloader akan menambahkan arm64.nomte ke command line kernel.

Jika memtag_kernel adalah true, 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 setiap kali melakukan booting.

Jika bootloader mendukung fastboot oem mte, argumen on harus menetapkan flag MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} ke (1, 0, 0), dan argumen off harus menetapkannya ke (0, 0, 1), sekaligus mempertahankan flag lainnya.

Konfigurasi produk Anda untuk membuat 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

Saat properti ro.arm64.memtag.bootctl_supported disetel, opsi Mulai Ulang dengan MTE di menu Opsi Developer memungkinkan Anda memulai ulang sekali dengan MTE diaktifkan. Target audiens untuk ini adalah developer aplikasi yang ingin menguji aplikasi mereka dengan MTE.

Opsi developer MTE

Gambar 1. 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 (setel MISC_MEMTAG_MODE_MEMTAG).
  • memtag-once mengaktifkan MTE ruang pengguna satu kali (setel MISC_MEMTAG_MODE_MEMTAG_ONCE).
  • memtag-kernel mengaktifkan MTE ruang kernel (tetapkan MISC_MEMTAG_MODE_MEMTAG_KERNEL).
  • memtag-kernel-once mengaktifkan MTE ruang kernel sekali (tetapkan MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE).
  • memtag-off menonaktifkan MTE (set MISC_MEMTAG_MODE_MEMTAG_OFF).

Setelan diterapkan oleh bootloader, jadi mulai ulang sistem setelah Anda melakukan perubahan.