# Copyright (C) 2022 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

on property:arm64.memtag.bootctl=* && property:ro.arm64.memtag.bootctl_supported=1
  wait_for_prop arm64.memtag.bootctl_loaded 1
  exec -- /system/bin/mtectrl ${arm64.memtag.bootctl:-none} ${persist.device_config.runtime_native_boot.bootloader_override:-default}

on property:persist.device_config.runtime_native_boot.bootloader_override=* && property:ro.arm64.memtag.bootctl_supported=1
  wait_for_prop arm64.memtag.bootctl_loaded 1
  exec -- /system/bin/mtectrl ${arm64.memtag.bootctl:-none} ${persist.device_config.runtime_native_boot.bootloader_override:-default}

# adbd gets initialized in init, so run before that. this makes sure that the
# user does not change the value before we initialize it
on early-boot && property:ro.arm64.memtag.bootctl_supported=1
  exec_background -- /system/bin/mtectrl -s arm64.memtag.bootctl -f arm64.memtag.bootctl_loaded

on shutdown && property:ro.arm64.memtag.bootctl_supported=1 && property:arm64.memtag.bootctl_loaded=*
  # This doesn't use wait_for_prop to not stall the shutdown.
  exec -- /system/bin/mtectrl ${arm64.memtag.bootctl:-none} ${persist.device_config.runtime_native_boot.bootloader_override:-default}

on property:persist.device_config.runtime_native_boot.bootloader_override=force_on
  setprop persist.sys.mte.permissive 1
