Suporte ao carregador de inicialização MTE, suporte ao carregador de inicialização MTE

O Android 13 apresenta uma ABI para espaço do usuário para comunicar o modo MTE solicitado ao carregador de inicialização. Isso pode ser usado para habilitar o MTE em dispositivos que possuem suporte de hardware, mas não são fornecidos com o MTE habilitado por padrão, ou para desabilitar o MTE em dispositivos que o acompanham.

Suporte ao carregador de inicialização

Para suportar esta ABI, seu bootloader precisa ler o misc_memtag_message (definido em bootloader_message.h ) da partição misc . Se uma misc_memtag_message válida for encontrada (corresponde a MISC_VIRTUAL_AB_MAGIC_HEADER e o número da versão é suportado), o carregador de inicialização calcula

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 é a configuração padrão de ativação/desativação de memtag para o SKU. Se memtag for true, o bootloader configura a reserva de tag MTE, habilita as verificações de tag nos níveis de exceção mais baixos e comunica a região reservada da tag ao kernel via DT. Se memtag for false, o bootloader anexará arm64.nomte à linha de comando do kernel.

Se memtag_kernel for true, o bootloader anexará kasan=on à linha de comando do kernel.

Bootloader DEVE limpar MISC_MEMTAG_MODE_MEMTAG_ONCE e MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE em cada inicialização.

Se o bootloader suportar fastboot oem mte , então on define MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} para (1, 0, 0) e off para (0, 0, 1) , preservando os outros sinalizadores.

Você deve configurar seu produto para construir o binário mtectrl para suporte ao espaço do usuário. Em seguida, defina a propriedade do sistema ro.arm64.memtag.bootctl_supported para indicar ao sistema que seu carregador de inicialização suporta a mensagem memtag.

Interface de usuário

Quando a propriedade ro.arm64.memtag.bootctl_supported é definida, um botão no menu Opções do desenvolvedor permite que o usuário reinicialize uma vez com o MTE ativado. O público-alvo para isso são os desenvolvedores de aplicativos que desejam testar seus aplicativos com o MTE. Captura de tela da opção do desenvolvedor MTE.

Propriedade do sistema

Para uso avançado, a propriedade do sistema arm64.memtag.bootctl pode receber uma lista separada por vírgulas dos seguintes valores:

  • memtag: habilite persistentemente o MTE do espaço do usuário (definir MISC_MEMTAG_MODE_MEMTAG )
  • memtag-once: habilita o MTE do espaço do usuário uma vez (definir MISC_MEMTAG_MODE_MEMTAG_ONCE )
  • memtag-kernel: habilita o MTE do espaço do kernel (definir MISC_MEMTAG_MODE_MEMTAG_KERNEL )
  • memtag-kernel-once: habilita o MTE do espaço do kernel uma vez ( MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE )
  • memtag-off: desabilita o MTE (defina MISC_MEMTAG_MODE_MEMTAG_OFF )

O sistema deve ser reinicializado para que a nova configuração tenha efeito (como é aplicada pelo carregador de inicialização).

,

O Android 13 apresenta uma ABI para espaço do usuário para comunicar o modo MTE solicitado ao carregador de inicialização. Isso pode ser usado para habilitar o MTE em dispositivos que possuem suporte de hardware, mas não são fornecidos com o MTE habilitado por padrão, ou para desabilitar o MTE em dispositivos que o acompanham.

Suporte ao carregador de inicialização

Para suportar esta ABI, seu bootloader precisa ler o misc_memtag_message (definido em bootloader_message.h ) da partição misc . Se uma misc_memtag_message válida for encontrada (corresponde a MISC_VIRTUAL_AB_MAGIC_HEADER e o número da versão é suportado), o carregador de inicialização calcula

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 é a configuração padrão de ativação/desativação de memtag para o SKU. Se memtag for true, o bootloader configura a reserva de tag MTE, habilita as verificações de tag nos níveis de exceção mais baixos e comunica a região reservada da tag ao kernel via DT. Se memtag for false, o bootloader anexará arm64.nomte à linha de comando do kernel.

Se memtag_kernel for true, o bootloader anexará kasan=on à linha de comando do kernel.

Bootloader DEVE limpar MISC_MEMTAG_MODE_MEMTAG_ONCE e MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE em cada inicialização.

Se o bootloader suportar fastboot oem mte , então on define MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} para (1, 0, 0) e off para (0, 0, 1) , preservando os outros sinalizadores.

Você deve configurar seu produto para construir o binário mtectrl para suporte ao espaço do usuário. Em seguida, defina a propriedade do sistema ro.arm64.memtag.bootctl_supported para indicar ao sistema que seu carregador de inicialização suporta a mensagem memtag.

Interface de usuário

Quando a propriedade ro.arm64.memtag.bootctl_supported é definida, um botão no menu Opções do desenvolvedor permite que o usuário reinicialize uma vez com o MTE ativado. O público-alvo para isso são os desenvolvedores de aplicativos que desejam testar seus aplicativos com o MTE. Captura de tela da opção do desenvolvedor MTE.

Propriedade do sistema

Para uso avançado, a propriedade do sistema arm64.memtag.bootctl pode receber uma lista separada por vírgulas dos seguintes valores:

  • memtag: habilite persistentemente o MTE do espaço do usuário (definir MISC_MEMTAG_MODE_MEMTAG )
  • memtag-once: habilita o MTE do espaço do usuário uma vez (definir MISC_MEMTAG_MODE_MEMTAG_ONCE )
  • memtag-kernel: habilita o MTE do espaço do kernel (definir MISC_MEMTAG_MODE_MEMTAG_KERNEL )
  • memtag-kernel-once: habilita o MTE do espaço do kernel uma vez ( MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE )
  • memtag-off: desabilita o MTE (defina MISC_MEMTAG_MODE_MEMTAG_OFF )

O sistema deve ser reinicializado para que a nova configuração tenha efeito (como é aplicada pelo carregador de inicialização).