Dukungan bootloader MTE

Android 13 memperkenalkan ABI untuk ruang pengguna guna mengomunikasikan permintaan mode MTE ke bootloader. Ini dapat digunakan untuk mengaktifkan MTE pada perangkat yang memiliki dukungan perangkat keras tetapi tidak mengirim dengan MTE yang diaktifkan secara {i>default<i}, atau nonaktifkan MTE di perangkat yang disertakan dengannya.

Dukungan bootloader

Untuk mendukung ABI ini, bootloader perlu membaca misc_memtag_message (ditentukan di bootloader_message.h) dari partisi misc. Jika misc_memtag_message yang valid ditemukan (MISC_VIRTUAL_AB_MAGIC_HEADER kecocokan, dan nomor versinya didukung), {i>bootloader<i} 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 akan menyiapkan tag MTE reservasi, mengaktifkan pemeriksaan tag di tingkat pengecualian yang lebih rendah, dan mengomunikasikan region tag yang dicadangkan ke kernel melalui DT. Jika memtag salah, bootloader menambahkan arm64.nomte ke command line {i>kernel<i}.

Jika memtag_kernel 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 pada set MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} hingga (1, 0, 0), dan turun ke (0, 0, 1), sambil mempertahankan penanda lain.

Anda harus mengonfigurasi produk untuk membangun biner mtectrl untuk dukungan userspace. Lalu, setel Properti sistem ro.arm64.memtag.bootctl_supported untuk menunjukkan ke sistem di mana {i>bootloader<i} Anda mendukung pesan memtag.

Antarmuka pengguna

Saat properti ro.arm64.memtag.bootctl_supported ditetapkan, di menu Opsi Developer memungkinkan pengguna memulai ulang sekali dengan MTE mengaktifkan pembuatan versi. Target audiens 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 mengambil daftar yang dipisahkan koma dari nilai berikut:

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

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