# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/zbi/kernel_cmdline.gni")

kernel_cmdline("kernel.bypass-debuglog--true") {
  args = [ "kernel.bypass-debuglog=true" ]
}

# TODO(https://fxbug.dev/42170495): Remove when migration is complete.
kernel_cmdline("kernel.experimental.serial_migration--true") {
  args = [ "kernel.experimental.serial_migration=true" ]
}

# TODO(https://fxbug.dev/42170495): Remove when migration is complete.
kernel_cmdline("kernel.debug_uart_poll--true") {
  args = [ "kernel.debug_uart_poll=true" ]
}

kernel_cmdline("kernel.enable-serial-syscalls--output-only") {
  args = []
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("kernel.halt-on-panic--true") {
  args = [ "kernel.halt-on-panic=true" ]
}

kernel_cmdline("kernel.oom.behavior--jobkill") {
  args = [ "kernel.oom.behavior=jobkill" ]
}

kernel_cmdline("kernel.oom.behavior--reboot") {
  args = [ "kernel.oom.behavior=reboot" ]
}

kernel_cmdline("kernel.render-dlog-to-crashlog--true") {
  args = [ "kernel.render-dlog-to-crashlog=true" ]
}

kernel_cmdline("virtcon.keep-log-visible--true") {
  args = [ "virtcon.keep-log-visible=true" ]
}

kernel_cmdline("virtcon.rounded-corners--true") {
  args = [ "virtcon.rounded_corners=true" ]
}

kernel_cmdline("virtcon.display-rotation--90") {
  args = [ "virtcon.display_rotation=90" ]
}

kernel_cmdline("virtcon.display-rotation--270") {
  args = [ "virtcon.display_rotation=270" ]
}

kernel_cmdline("virtcon.boot-animation--true") {
  args = [ "virtcon.boot_animation=true" ]
}

kernel_cmdline("virtcon.dpi--160-240-360-480") {
  args = [ "virtcon.dpi=160,240,360,480" ]
}

kernel_cmdline("virtcon.buffer-count--2") {
  args = [ "virtcon.buffer_count=2" ]
}

kernel_cmdline("ktrace.grpmask-0") {
  args = [ "ktrace.grpmask=0" ]
}

kernel_cmdline("kernel_active_aging_2_15_2") {
  args = [
    "kernel.page-scanner.min-aging-interval=2",
    "kernel.page-scanner.max-aging-interval=15",
    "kernel.page-scanner.active-ratio-multiplier=2",
  ]
}

kernel_cmdline("low-memory-pools") {
  args = [
    "driver.sysmem.contiguous_memory_size=0",
    "driver.sysmem.protected_memory_size=0",
  ]
}

kernel_cmdline("oom.reboot-timeout--low") {
  args = [ "kernel.oom.reboot-timeout-ms=8000" ]
}

# Should only be visible on x64.
if (target_cpu == "x64") {
  kernel_cmdline("kernel.serial--legacy") {
    args = [ "kernel.serial=legacy" ]
    deps = [ "//build/validate:non_production_tag" ]
  }
}
