适用于 SDV IVI 的 QVM 示例配置

# Copyright (C) 2026 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.

system sdv-1
set counter-offset 0
debug
logger debug,info,error slog
cpu sched 10 runmask 0,1,2,3
cpu sched 10 runmask 0,1,2,3
cpu sched 10 runmask 0,1,2,3
cpu sched 10 runmask 0,1,2,3

# DDR for LA
pass loc mem:$asinfo_start{android_sysram2},$asinfo_length{android_sysram2},rwcxm
pass loc mem:$asinfo_start{android_sysram1},$asinfo_length{android_sysram1},rwcxm
pass loc mem:$asinfo_start{android_sysram3},$asinfo_length{android_sysram3},rwcxm

unsupported register ignore

load /guests/android/sdv-ivi-1/kernel
load /guests/android/sdv-ivi-1/cf.dtb
initrd load /guests/android/sdv-ivi-1/vramdisk

# Allocate 4K RAM to the guest at an arbitrary address for storing the test
# DICE chain. This memory region is referred to in the Device Tree by a
# reserved-memory node tagged by "google,open-dice", so the open-dice driver
# can pick it up and expose it to user space.
ram 0xD1C30000,4K
# Load the test DICE chain to the reserved guest memory.
# Warning: This must not be used in a production system. Instead, either the
# guest loader or the bootloader must provide it.
data load 0xD1C30000,/guests/android/sdv-ivi-1/test_dice_handover

# The cmdline is limited to 2048 characters. Additional parameters must use
# the bootconfig.
cmdline "printk.devkmsg=on \
firmware_class.path=/vendor/etc/ \
init=/init \
kfence.sample_interval=500 \
loop.max_part=7 \
mac80211_hwsim.radios=0 \
kernel.snd-hda-intel.enable=0 \
kernel.vmw_vsock_virtio_transport_common.virtio_transport_max_vsock_pkt_buf_size=16384 \
buildvariant=userdebug \
console=ttyAMA0 \
panic=-1 \
earlycon=pl011,0x1c090000 \
pci=noacpi \
reboot=k \
audit=1 \
androidboot.boot_devices=vdevs/1c0f1000.virtio_blk \
androidboot.cpuvulkan.version=0 \
androidboot.hardware.gralloc=minigbm \
androidboot.hardware.gltransport=virtio-gpu-asg \
androidboot.hardware.hwcomposer=ranchu \
androidboot.hardware.egl=emulation \
androidboot.hardware.hwcomposer.mode= \
androidboot.hardware.hwcomposer.display_finder_mode=drm \
androidboot.hardware.vulkan=ranchu \
androidboot.serialno=SDV1 \
androidboot.setupwizard_mode=DISABLED \
androidboot.verifiedbootstate=orange \
androidboot.selinux=permissive \
androidboot.slot_suffix=_a \
androidboot.force_normal_boot=1 \
androidboot.sdv.instance_name=instance1 \
androidboot.sdv.keymint.rpc.hbk=799da7577efd41d5b27810c5952fcec0291cbcfd687e77ac9a6cec8370651b1d \
androidboot.sdv.boot_mode=locked \
androidboot.sdv.preprovisioned_vvmtruststore=etc \
androidboot.sdv.vvmfactorytrust=c779a73d0595a6814ba0414a419e99ad4026ad0feb603f2ad80ee6a9e4d1adb7 \
androidboot.sdv.ignore_avb_state=true \
androidboot.vbmeta.digest=ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff \
stack_depot_disable=on \
cgroup_disable=pressure \
cma=0 \
enforcing=0 \
androidboot.cf_devcfg=1 \
androidboot.cf_wifi_on=1 \
androidboot.wifi_impl=virt_wifi \
androidboot.wifi_mac_prefix=5554 \
virtio_snd.pcm_buffer_ms=120 virtio_snd.pcm_periods_min=6 \
virtio_snd.pcm_periods_max=6 \
virtio_snd.pcm_period_ms_min=20 \
virtio_snd.pcm_period_ms_max=20 \
v4l2loopback.video_nr=10"

vdev pl011
   loc 0x1c090000
   intr gic:37
   # Tip: Comment out all hostdev entries to get an interactive shell.
   hostdev >/var/log/guest/guest.out
   hostdev </dev/ptyp6
   name vdev_pl011

vdev shmem
   name vdev_shmem

vdev virtio-entropy
   intr gic:38
   loc 0x1c0a0000

vdev virtio-net
   loc 0x1c0c0000
   intr gic:40
   peer /dev/vdevpeers/vp0
   mac 02:00:AB:CD:EF:01
   peerfeats 0x0382
   name p2p_0

vdev virtio-blk
   loc 0x1c0f1000
   intr gic:41
   hostdev /guests/android/sdv-ivi-1/disk.img
   name virtio-blk_qvmdisk0

# /dev/hvc10 (oemlock)
vdev virtio-console
    loc 0x1c0ef000
    intr gic:71
    hostdev >/dev/null

# /dev/hvc9 (bogus)
vdev virtio-console
    loc 0x1c0ff000
    intr gic:70
    hostdev >/dev/null

# /dev/hvc8 (bogus)
vdev virtio-console
    loc 0x1c0fd000
    intr gic:69
    hostdev >/dev/null

# /dev/hvc7 (GNSS fixed location)
vdev virtio-console
    loc 0x1c0f5000
    intr gic:68
    hostdev /var/run/gnss1
    #hostdev >/dev/null

# /dev/hvc6 (GNSS raw measurement)
vdev virtio-console
    loc 0x1c0fb000
    intr gic:67
    hostdev >/dev/null

# /dev/hvc5 (Bluetooth)
vdev virtio-console
    loc 0x1c0fa000
    intr gic:66
    hostdev >/dev/null

# /dev/hvc4 (bogus)
vdev virtio-console
    loc 0x1c0f9000
    intr gic:65
    hostdev >/dev/null

# /dev/hvc3 (bogus)
vdev virtio-console
    loc 0x1c0f7000
    intr gic:62
    hostdev >/dev/null

# /dev/hvc2 (logcat)
vdev virtio-console
    loc 0x1c0f2000
    intr gic:58
    hostdev >/var/run/guestlogcat/hvc2_fifo

# /dev/hvc1 (androidboot.console)
vdev virtio-console
    loc 0x1c0f3000
    intr gic:59
    hostdev >/dev/null

# /dev/hvc0 (kernel dmesg)
vdev virtio-console
    loc 0x1c0f4000
    intr gic:60
    hostdev >/dev/null

vdev virtio-input
   loc 0x1c0d0000
   intr gic:43
   screen keyboard
   window *

vdev virtio-input
   loc 0x1c0e0000
   intr gic:44
   screen mouse
   window *
   name virtio-input_mouse

vdev virtio-input
   loc 0x1c0f0000
   intr gic:45
   protocol b
   screen multi-touch
   size 1920,1080
   window *

vdev virtio-gpu
   loc 0x1c160000
   intr gic:63
   vdisp -bsize=1920x1080,-disp_id=2:-size=1920x720,-class_name=qtcluster_native,-disp_id=1
   vram_loc 0x700000000
   redblue_swap 0
   gfxstream

vdev virtio-vsock
   guest_cid 3
   loc 0x1c0f6000
   intr gic:46

vdev virtio-snd
   loc 0x20020000
   intr gic:47
   stream playback
        nid 0
        hostdev hw:CARD=qc,DEV=0
        associated_control PCM
        rates 44100:48000
        formats s16
   chmap playback
        nid 0
        channels 2
   stream capture
        nid 0
        hostdev plughw:CARD=qc,DEV=0
        rates 48000
        formats s16
   chmap capture
        nid 0
        channels 2
        #map guest_fl=host_fl:guest_fr=host_fr:guest_rl=host_rl:guest_rr=host_rr

vdev virtio-video-camera
    loc 0x1c0f8000
    intr gic:50
    num_cameras 2
    sensor_unit SENSOR_UNIT_1,SENSOR_UNIT_2
    dynamic_configuration false
    blit_enabled true
    camera_format CBYCRY
    guest_format RGB8888
    guest_num_buffers 4

vdev virtio-video-decoder
    loc 0x1c0fc000
    intr gic:48

vdev virtio-video-encoder
    loc 0x1c100000
    intr gic:49

vdev exhci
    loc 0x1d000000
    intr gic:55
    name exhci_android_auto_14

# Share a host filesystem directory with the guest. Example guest mount command:
# mount -t virtiofs qhostfs /data/qnx_host
vdev virtio-fs
   loc 0x1c0fe000
   intr gic:56
   tag qhostfs    # Tag to use in guest's mount command.
   num_req_queues 1
   host_path /accounts/1000/shared/videos # If you set this to /pps, set directio true below.
   directio false