# 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("blobfs.cache-eviction-policy--NEVER_EVICT") {
  args = [ "blobfs.cache-eviction-policy=NEVER_EVICT" ]
}

kernel_cmdline("console.shell--true") {
  args = [ "console.shell=true" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("console.shell--false") {
  args = [ "console.shell=false" ]
}

kernel_cmdline("devmgr.log-to-debuglog--true") {
  args = [ "devmgr.log-to-debuglog=true" ]
}

kernel_cmdline("devmgr.enable-ephemeral--true") {
  args = [ "devmgr.enable-ephemeral=true" ]
}

kernel_cmdline("devmgr.enable-ephemeral--false") {
  args = [ "devmgr.enable-ephemeral=false" ]
}

kernel_cmdline("driver_manager.root-meta--platform-bus.cm") {
  args = [ "driver_manager.root-driver=fuchsia-boot:///#meta/platform-bus.cm" ]
}

kernel_cmdline("driver_manager.use_driver_framework_v2--true") {
  args = [ "driver_manager.use_driver_framework_v2=true" ]
}

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

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

kernel_cmdline("kernel.enable-debugging-syscalls--false") {
  args = [ "kernel.enable-debugging-syscalls=false" ]
}

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

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

kernel_cmdline("kernel.enable-serial-syscalls--false") {
  args = [ "kernel.enable-serial-syscalls=false" ]
}

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("kernel.serial--none") {
  args = [ "kernel.serial=none" ]
}

kernel_cmdline("netsvc.all-features--true") {
  args = [ "netsvc.all-features=true" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("netsvc.disable--false") {
  args = [ "netsvc.disable=false" ]
  deps = [ "//build/validate:non_production_tag" ]
}

kernel_cmdline("netsvc.disable--true") {
  args = [ "netsvc.disable=true" ]
}

kernel_cmdline("virtcon.hide-on-boot") {
  args = [ "virtcon.hide-on-boot" ]
}

kernel_cmdline("virtcon.disable--true") {
  args = [ "virtcon.disable=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" ]
  }
}
