Compatibilidad con el bootloader de MTE

Android 13 introduce una ABI para el espacio del usuario a fin de comunicar la información Modo MTE al bootloader. Esto se puede usar para habilitar MTE en dispositivos que tienen soporte de hardware, pero no envían con MTE habilitada de forma predeterminada, o inhabilitar la MTE en los dispositivos que sí lo envían.

Compatibilidad con el bootloader

Para admitir esta ABI, el bootloader debe leer el archivo misc_memtag_message (definido en bootloader_message.h) de la partición misc. Si se encuentra un misc_memtag_message válido (MISC_VIRTUAL_AB_MAGIC_HEADER coincide, y el número de versión es compatible) el bootloader calcula

memtag = (default_memtag && !(misc.memtag_mode &MISC_MEMTAG_MODE_MEMTAG_OFF)) ||
      misc.memtag_mode y MISC_MEMTAG_MODE_MEMTAG ||
      misc.memtag_mode y MISC_MEMTAG_MODE_MEMTAG_ONCE

memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL ||
      misc.memtag_mode y MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE

default_memtag es el parámetro de configuración predeterminado para activar o desactivar las tarjetas en la SKU Si memtag es verdadero, el bootloader configura la etiqueta MTE. reserva, habilita verificaciones de etiquetas en los niveles de excepción más bajos y comunica la región reservada de etiquetas al kernel mediante DT. Si memtag es falso; el bootloader agrega arm64.nomte al de la línea de comandos de kernel.

Si memtag_kernel es verdadero, el bootloader se agrega kasan=on a la línea de comandos del kernel

El bootloader DEBE borrar MISC_MEMTAG_MODE_MEMTAG_ONCE y MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE en cada inicio.

Si el bootloader admite fastboot oem mte, entonces en los conjuntos MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} a (1, 0, 0) y, luego, a (0, 0, 1), mientras y preservar las demás marcas.

Debes configurar tu producto para compilar el objeto binario mtectrl. para brindar asistencia relacionada con el espacio del usuario. Luego, configura ro.arm64.memtag.bootctl_supported propiedad del sistema para indicar al sistema si el bootloader admite el mensaje memtag.

Interfaz de usuario

Cuando se establece la propiedad ro.arm64.memtag.bootctl_supported, se muestra del menú Opciones para desarrolladores permite que el usuario reinicie el dispositivo una vez con MTE habilitado. El público objetivo de esto son los desarrolladores de apps que quieren probar sus apps con MTE. Captura de pantalla de la opción para desarrolladores de MTE.

Propiedad del sistema

Para un uso avanzado, la propiedad del sistema arm64.memtag.bootctl puede tomar una lista separada por comas de los los siguientes valores:

  • memtag: habilita de forma persistente MTE en el espacio del usuario (establecida MISC_MEMTAG_MODE_MEMTAG)
  • memtag-once: Se habilita la MTE de espacio del usuario una vez (configurada) MISC_MEMTAG_MODE_MEMTAG_ONCE)
  • memtag-kernel: habilita MTE de espacio de kernel (conjunto MISC_MEMTAG_MODE_MEMTAG_KERNEL)
  • memtag-kernel-once: Se habilita la MTE de espacio de kernel una vez. (MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE).
  • memtag-off: Inhabilita MTE (conjunto MISC_MEMTAG_MODE_MEMTAG_OFF)

Debes reiniciar el sistema para que se aplique la nueva configuración (ya que que aplica el bootloader).