# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This file may be modified to make local changes to the command line that
# ARCVM uses to start a VM. It contains one directive per line, with the
# following forms available:
#
#    # This is a comment.
#      Lines beginning with '#' are skipped.
#
#    --some-flag=some-value
#      Appends "--some-flag" and "some-value" to command line.
#
#    --some-flag
#      Appends "--some-flag" to command line.
#
#    !--flag-prefix
#      Removes all arguments beginning with "--flag-prefix".
#
#    KERNEL_PATH=/set/to/new_path
#      Override the guest kernel path to /set/to/new_path. KERNEL_PATH must
#      consist of capital letters.
#
#    O_DIRECT=true
#      Force O_DIRECT on disk devices.
#
#
# Directives are applied in the order they appear (i.e. to change a flag, first
# delete it and then re-add it with the desired value).
#
# Setting values on environment variables is not supported.
#
# -----------------------------------------------------------------------------
# TIP: When you want to see raw dmesg logs from the Android guest kernel and
# system processes such as init, uncomment the following line. By default,
# the guest kernel rate-limits the logging and some logs could be silently
# dropped. This is useful when modifying init.bertha.rc, for example.
#
# --params=printk.devkmsg=on
#
# Only uncommenting the line above won't let you see all the logs though. If you
# want to see very early (the first a few hundred milliseconds) logs from the
# guest kernel, make sure to install the guest kernel built with USE=pcserial:
#
#    chroot$ cros_workon --board=$BOARD start arcvm-kernel-5_4
#    chroot$ USE=pcserial emerge-$BOARD arcvm-kernel-5_4
#    chroot$ cros deploy DUT arcvm-kernel-5_4
# -----------------------------------------------------------------------------
#
# Other tips:
#
# Disable selinux on userdebug image
# --params=androidboot.selinux=permissive
# Suppress selinux audit kernel message.
# --params=audit=0
################################################################################
# This file should only be modified by hand by developers on their local
# dev-mode devices; do not check in changes to it or write code that modifies
# it. Permanent changes to ARCVM's configuration, including conditionally-set
# flags, should be made in ARCVM (see arc_vm.cc).
################################################################################

# Add serial-based earlycon and virtio-console logging.
--serial=type=syslog,hardware=serial,num=1,earlycon=true
--serial=type=syslog,hardware=virtio-console,num=1,console=true
