Compatibilité avec le bootloader MTE

Android 13 introduit une ABI permettant à l'espace utilisateur de communiquer les informations du mode MTE au bootloader. Cela permet d'activer MTE sur les appareils disposer d'une prise en charge matérielle, mais ne sont pas livrés avec MTE activé par défaut ; désactiver MTE sur les appareils qui sont livrés avec.

Compatibilité avec le bootloader

Pour prendre en charge cette ABI, votre bootloader doit lire les misc_memtag_message (défini dans <ph type="x-smartling-placeholder"></ph> bootloader_message.h) à partir de la partition misc. Si un élément misc_memtag_message valide est trouvé (MISC_VIRTUAL_AB_MAGIC_HEADER correspond, et le numéro de version est accepté) le bootloader calcule

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

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

default_memtag est le paramètre d'activation/de désactivation par défaut de la fonctionnalité memtag SKU. Si memtag est défini sur "true", le bootloader configure le tag MTE. la réservation, active la vérification des tags aux niveaux d'exception inférieurs communique la région réservée du tag au noyau via DT. Si memtag est "false", le bootloader ajoute arm64.nomte au de la ligne de commande du noyau.

Si memtag_kernel est "true", le bootloader ajoute kasan=on à la ligne de commande du noyau.

Le bootloader DOIT effacer MISC_MEMTAG_MODE_MEMTAG_ONCE et MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE à chaque démarrage.

Si le bootloader est compatible avec fastboot oem mte, sur les ensembles MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} jusqu'à (1, 0, 0) et (0, 0, 1), tandis que en conservant les autres indicateurs.

Vous devez configurer votre produit pour compiler le binaire mtectrl pour la prise en charge de l'espace utilisateur. Définissez ensuite le paramètre ro.arm64.memtag.bootctl_supported pour indiquer au système pour lequel votre bootloader accepte le message memtag.

Interface utilisateur

Lorsque la propriété ro.arm64.memtag.bootctl_supported est définie, dans le menu Options du développeur permet à l'utilisateur de redémarrer une seule fois avec MTE est activé. Elle s'adresse aux développeurs qui souhaitent tester leurs applications avec MTE. Capture d&#39;écran de l&#39;option MTE pour les développeurs

Propriété système

Pour une utilisation avancée, la propriété système arm64.memtag.bootctl peut utiliser une liste des éléments séparés par une virgule les valeurs suivantes:

  • memtag:active de manière persistante les MTE de l'espace utilisateur (définis MISC_MEMTAG_MODE_MEMTAG)
  • memtag-once:active une seule fois la fonction MTE de l'espace utilisateur (définie MISC_MEMTAG_MODE_MEMTAG_ONCE)
  • memtag-kernel:active la fonction kernel-space MTE (définie MISC_MEMTAG_MODE_MEMTAG_KERNEL)
  • memtag-kernel-once:active la MTE une fois pour l'espace de noyau (MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE)
  • memtag-off:désactive MTE (défini MISC_MEMTAG_MODE_MEMTAG_OFF)

Le système doit être redémarré pour que le nouveau paramètre prenne effet appliquée par le bootloader).