Dukungan MTE Bootloader, dukungan MTE Bootloader

Android 13 memperkenalkan ABI untuk ruang pengguna untuk 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 diaktifkan secara default, atau untuk menonaktifkan MTE pada perangkat yang dikirimkan bersamanya.

Dukungan bootloader

Untuk mendukung ABI ini, bootloader Anda perlu membaca misc_memtag_message (didefinisikan dalam bootloader_message.h ) dari parition misc . Jika misc_memtag_message yang valid ditemukan ( MISC_VIRTUAL_AB_MAGIC_HEADER cocok, dan nomor versi 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, bootloader 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 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 setel MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} ke (1, 0, 0) , dan matikan ke (0, 0, 1) , sambil mempertahankan flag lainnya.

Anda harus mengonfigurasi produk Anda untuk membangun 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

Ketika properti ro.arm64.memtag.bootctl_supported disetel, tombol di menu Opsi Pengembang memungkinkan pengguna untuk melakukan boot ulang sekali dengan MTE diaktifkan. Target audiens untuk ini 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: terus-menerus mengaktifkan MTE ruang pengguna (setel MISC_MEMTAG_MODE_MEMTAG )
  • memtag-once: aktifkan MTE ruang pengguna sekali (setel MISC_MEMTAG_MODE_MEMTAG_ONCE )
  • memtag-kernel: aktifkan MTE ruang-kernel (setel MISC_MEMTAG_MODE_MEMTAG_KERNEL )
  • memtag-kernel-once: aktifkan MTE ruang kernel sekali ( 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).

,

Android 13 memperkenalkan ABI untuk ruang pengguna untuk 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 diaktifkan secara default, atau untuk menonaktifkan MTE pada perangkat yang dikirimkan bersamanya.

Dukungan bootloader

Untuk mendukung ABI ini, bootloader Anda perlu membaca misc_memtag_message (didefinisikan dalam bootloader_message.h ) dari parition misc . Jika misc_memtag_message yang valid ditemukan ( MISC_VIRTUAL_AB_MAGIC_HEADER cocok, dan nomor versi 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, bootloader 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 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 setel MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} ke (1, 0, 0) , dan matikan ke (0, 0, 1) , sambil mempertahankan flag lainnya.

Anda harus mengonfigurasi produk Anda untuk membangun 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

Ketika properti ro.arm64.memtag.bootctl_supported disetel, tombol di menu Opsi Pengembang memungkinkan pengguna untuk melakukan boot ulang sekali dengan MTE diaktifkan. Target audiens untuk ini 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: terus-menerus mengaktifkan MTE ruang pengguna (setel MISC_MEMTAG_MODE_MEMTAG )
  • memtag-once: aktifkan MTE ruang pengguna sekali (setel MISC_MEMTAG_MODE_MEMTAG_ONCE )
  • memtag-kernel: aktifkan MTE ruang-kernel (setel MISC_MEMTAG_MODE_MEMTAG_KERNEL )
  • memtag-kernel-once: aktifkan MTE ruang kernel sekali ( 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).