diff --git a/devicemodel/Makefile b/devicemodel/Makefile index 3fcd1dd55..dd28db6ec 100644 --- a/devicemodel/Makefile +++ b/devicemodel/Makefile @@ -210,8 +210,6 @@ DISTCLEAN_OBJS := $(shell find $(BASEDIR) -name '*.o') PROGRAM := acrn-dm SAMPLES_NUC := $(wildcard samples/nuc/*) -SAMPLES_MRB := $(wildcard samples/apl-mrb/*) -SAMPLES_UP2 := $(wildcard samples/apl-up2/*) BIOS_BIN := $(wildcard bios/*) @@ -262,20 +260,12 @@ $(DM_OBJDIR)/%.o: %.c $(HEADERS) [ ! -e $@ ] && mkdir -p $(dir $@); \ $(CC) $(CFLAGS) -c $< -o $@ -MMD -MT $@ -install: $(DM_OBJDIR)/$(PROGRAM) install-samples-nuc install-samples-mrb install-bios install-samples-up2 +install: $(DM_OBJDIR)/$(PROGRAM) install-samples-nuc install-bios install -D --mode=0755 $(DM_OBJDIR)/$(PROGRAM) $(DESTDIR)$(bindir)/$(PROGRAM) -install-samples-up2: $(SAMPLES_UP2) - install -D -t $(DESTDIR)$(datadir)/acrn/samples/apl-up2 $^ - install-samples-nuc: $(SAMPLES_NUC) install -D -t $(DESTDIR)$(datadir)/acrn/samples/nuc $^ -install-samples-mrb: $(SAMPLES_MRB) - install -D -t $(DESTDIR)$(datadir)/acrn/samples/apl-mrb $^ - install -d $(DESTDIR)$(systemd_unitdir)/system/ - install -p -D -m 0644 ./samples/apl-mrb/acrn_guest.service $(DESTDIR)$(systemd_unitdir)/system - install-bios: $(BIOS_BIN) install -d $(DESTDIR)$(datadir)/acrn/bios install -D --mode=0664 -t $(DESTDIR)$(datadir)/acrn/bios $^ diff --git a/misc/config_tools/data/sample_launch_scripts/apl-mrb/acrn_guest.service b/misc/config_tools/data/sample_launch_scripts/apl-mrb/acrn_guest.service deleted file mode 100644 index 08a883519..000000000 --- a/misc/config_tools/data/sample_launch_scripts/apl-mrb/acrn_guest.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=Start ACRN UOS -After=acrnprobe.service -After=weston.service -After=systemd-resolved.service - -ConditionPathExists=/sys/kernel/gvt -ConditionPathExists=/dev/acrn_hsm - -[Service] -Type=simple -RemainAfterExit=false -ExecStart=/bin/sh /usr/share/acrn/samples/apl-mrb/launch_uos.sh -V 6 - -[Install] -WantedBy=multi-user.target diff --git a/misc/config_tools/data/sample_launch_scripts/apl-mrb/launch_uos.args b/misc/config_tools/data/sample_launch_scripts/apl-mrb/launch_uos.args deleted file mode 100644 index 5b69e6f42..000000000 --- a/misc/config_tools/data/sample_launch_scripts/apl-mrb/launch_uos.args +++ /dev/null @@ -1 +0,0 @@ --V 2 -C diff --git a/misc/config_tools/data/sample_launch_scripts/apl-mrb/launch_uos.sh b/misc/config_tools/data/sample_launch_scripts/apl-mrb/launch_uos.sh deleted file mode 100755 index ae412eb92..000000000 --- a/misc/config_tools/data/sample_launch_scripts/apl-mrb/launch_uos.sh +++ /dev/null @@ -1,594 +0,0 @@ -#!/bin/bash -# Copyright (C) 2019 Intel Corporation. -# SPDX-License-Identifier: BSD-3-Clause - -kernel_version=$(uname -r) -audio_module="/usr/lib/modules/$kernel_version/kernel/sound/soc/intel/boards/snd-soc-sst_bxt_sos_tdf8532.ko" -ipu_passthrough=0 - -# Check the device file of /dev/vbs_ipu to determine the IPU mode -if [ ! -e "/dev/vbs_ipu" ]; then -ipu_passthrough=1 -fi - -# use the modprobe to force loading snd-soc-skl/sst_bxt_bdf8532 -if [ ! -e $(audio_module)]; then -modprobe -q snd-soc-skl -modprobe -q snd-soc-sst_bxt_tdf8532 -else - -modprobe -q snd_soc_skl -modprobe -q snd_soc_tdf8532 -modprobe -q snd_soc_sst_bxt_sos_tdf8532 -modprobe -q snd_soc_skl_virtio_be -fi -audio_passthrough=0 - -# Check the device file of /dev/vbs_k_audio to determine the audio mode -if [ ! -e "/dev/vbs_k_audio" ]; then -audio_passthrough=1 -fi - -cse_passthrough=0 -hbm_ver=`cat /sys/class/mei/mei0/hbm_ver` -major_ver=`echo $hbm_ver | cut -d '.' -f1` -minor_ver=`echo $hbm_ver | cut -d '.' -f2` -if [[ "$major_ver" -lt "2" ]] || \ - [[ "$major_ver" == "2" && "$minor_ver" -le "2" ]]; then - cse_passthrough=1 -fi - -# pci devices for passthru -declare -A passthru_vpid -declare -A passthru_bdf - -passthru_vpid=( -["usb_xdci"]="8086 5aaa" -["ipu"]="8086 5a88" -["ipu_i2c"]="8086 5aac" -["cse"]="8086 5a9a" -["sd_card"]="8086 5aca" -["audio"]="8086 5a98" -["audio_codec"]="8086 5ab4" -["wifi"]="11ab 2b38" -["bluetooth"]="8086 5abc" -) -passthru_bdf=( -["usb_xdci"]="0000:00:15.1" -["ipu"]="0000:00:03.0" -["ipu_i2c"]="0000:00:16.0" -["cse"]="0000:00:0f.0" -["sd_card"]="0000:00:1b.0" -["audio"]="0000:00:0e.0" -["audio_codec"]="0000:00:17.0" -["wifi"]="0000:03:00.0" -["bluetooth"]="0000:00:18.0" -) - -function launch_clearlinux() -{ -if [ ! -f "/data/$4/$4.img" ]; then - echo "no /data/$4/$4.img, exit" - exit -fi - -#vm-name used to generate uos-mac address -mac=$(cat /sys/class/net/e*/address) -vm_name=vm$1 -mac_seed=${mac:9:8}-${vm_name} - -# create a unique tap device for each VM -tap=tap_$5 -tap_exist=$(ip a | grep "$tap" | awk '{print $1}') -if [ "$tap_exist"x != "x" ]; then - echo "tap device existed, reuse $tap" -else - ip tuntap add dev $tap mode tap -fi - -# if acrn-br0 exists, add VM's unique tap device under it -br_exist=$(ip a | grep acrn-br0 | awk '{print $1}') -if [ "$br_exist"x != "x" -a "$tap_exist"x = "x" ]; then - echo "acrn-br0 bridge aleady exists, adding new tap device to it..." - ip link set "$tap" master acrn-br0 - ip link set dev "$tap" down - ip link set dev "$tap" up -fi - -#check if the vm is running or not -vm_ps=$(pgrep -a -f acrn-dm) -result=$(echo $vm_ps | grep -w "${vm_name}") -if [[ "$result" != "" ]]; then - echo "$vm_name is running, can't create twice!" - exit -fi - -#for VT-d device setting -modprobe pci_stub -echo ${passthru_vpid["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/new_id -echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/devices/${passthru_bdf["usb_xdci"]}/driver/unbind -echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/bind - -echo 100 > /sys/bus/usb/drivers/usb-storage/module/parameters/delay_use - -boot_ipu_option="" -if [ $ipu_passthrough == 1 ];then - # for ipu passthrough - ipu device - if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu"]}" ]; then - echo ${passthru_vpid["ipu"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["ipu"]} > /sys/bus/pci/devices/${passthru_bdf["ipu"]}/driver/unbind - echo ${passthru_bdf["ipu"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_ipu_option="$boot_ipu_option"" -s 12,passthru,0/3/0 " - fi - - # for ipu passthrough - ipu related i2c - # please use virtual slot 22 for i2c to make sure that the i2c controller - # could get the same virtaul BDF as physical BDF - if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}" ]; then - echo ${passthru_vpid["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}/driver/unbind - echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_ipu_option="$boot_ipu_option"" -s 22,passthru,0/16/0 " - fi -else - boot_ipu_option="$boot_ipu_option"" -s 21,virtio-ipu " -fi - -boot_cse_option="" -if [ $cse_passthrough == 1 ]; then - echo ${passthru_vpid["cse"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["cse"]} > /sys/bus/pci/devices/${passthru_bdf["cse"]}/driver/unbind - echo ${passthru_bdf["cse"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_cse_option="$boot_cse_option"" -s 15,passthru,0/0f/0 " -else - boot_cse_option="$boot_cse_option"" -s 15,virtio-heci,0/0f/0 " -fi - -# for sd card passthrough - SDXC/MMC Host Controller 00:1b.0 -echo ${passthru_vpid["sd_card"]} > /sys/bus/pci/drivers/pci-stub/new_id -echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/devices/${passthru_bdf["sd_card"]}/driver/unbind -echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/drivers/pci-stub/bind - -#for memsize setting, total 8GB(>7.5GB) uos->6GB, 4GB(>3.5GB) uos->2GB -memsize=`cat /proc/meminfo|head -n 1|awk '{print $2}'` -if [ $memsize -gt 7500000 ];then - mem_size=6G -elif [ $memsize -gt 3500000 ];then - mem_size=2G -else - mem_size=1750M -fi - -if [ "$setup_mem" != "" ];then - mem_size=$setup_mem -fi - -boot_dev_flag=",b" -if [ $6 == 1 ];then - boot_image_option="--vsbl /usr/share/acrn/bios/VSBL_debug.bin" -else - boot_image_option="--vsbl /usr/share/acrn/bios/VSBL.bin" -fi - -#interrupt storm monitor for pass-through devices, params order: -#threshold/s,probe-period(s),intr-inject-delay-time(ms),delay-duration(ms) -intr_storm_monitor="--intr_monitor 10000,10,1,100" - -acrn-dm --help 2>&1 | grep 'GVT args' -if [ $? == 0 ];then - GVT_args=$2 - boot_GVT_option=" -s 0:2:0,pci-gvt -G " -else - boot_GVT_option='' - GVT_args='' -fi - - -acrn-dm -A -m $mem_size $boot_GVT_option"$GVT_args" -s 0:0,hostbridge -s 1:0,lpc -l com1,stdio \ - -s 5,virtio-console,@pty:pty_port \ - -s 6,virtio-hyper_dmabuf \ - -s 8,wdt-i6300esb \ - -s 3,virtio-blk$boot_dev_flag,/data/$4/$4.img \ - -s 4,virtio-net,$tap $boot_image_option \ - -s 7,xhci,1-1:1-2:1-3:2-1:2-2:2-3:cap=apl \ - -s 9,passthru,0/15/1 \ - $boot_cse_option \ - --mac_seed $mac_seed \ - -s 27,passthru,0/1b/0 \ - $intr_storm_monitor \ - $boot_ipu_option \ - -i /run/acrn/ioc_$vm_name,0x20 \ - -l com2,/run/acrn/ioc_$vm_name \ - --pm_notify_channel ioc \ - -B "root=/dev/vda2 rw rootwait nohpet console=hvc0 \ - snd_soc_skl_virtio_fe.domain_id=1 \ - snd_soc_skl_virtio_fe.domain_name="GuestOS" \ - console=ttyS0 no_timer_check ignore_loglevel log_buf_len=16M \ - consoleblank=0 tsc=reliable i915.avail_planes_per_pipe=$3 i915.enable_guc_loading=0 \ - i915.enable_hangcheck=0 i915.nuclear_pageflip=1 \ - i915.enable_guc_submission=0 i915.enable_guc=0" $vm_name -} - -function launch_android() -{ -if [ ! -f "/data/$4/$4.img" ]; then - echo "no /data/$4/$4.img, exit" - exit -fi - -#vm-name used to generate uos-mac address -mac=$(cat /sys/class/net/e*/address) -vm_name=vm$1 -mac_seed=${mac:9:8}-${vm_name} - -# create a unique tap device for each VM -tap=tap_$5 -tap_exist=$(ip a | grep "$tap" | awk '{print $1}') -if [ "$tap_exist"x != "x" ]; then - echo "tap device existed, reuse $tap" -else - ip tuntap add dev $tap mode tap -fi - -# if acrn-br0 exists, add VM's unique tap device under it -br_exist=$(ip a | grep acrn-br0 | awk '{print $1}') -if [ "$br_exist"x != "x" -a "$tap_exist"x = "x" ]; then - echo "acrn-br0 bridge aleady exists, adding new tap device to it..." - ip link set "$tap" master acrn-br0 - ip link set dev "$tap" down - ip link set dev "$tap" up -fi - -#Use MMC name + serial for ADB serial no., same as native android -mmc_name=`cat /sys/block/mmcblk1/device/name` -mmc_serial=`cat /sys/block/mmcblk1/device/serial | sed -n 's/^..//p'` -ser=$mmc_name$mmc_serial - -#check if the vm is running or not -vm_ps=$(pgrep -a -f acrn-dm) -result=$(echo $vm_ps | grep -w "${vm_name}") -if [[ "$result" != "" ]]; then - echo "$vm_name is running, can't create twice!" - exit -fi - -#for VT-d device setting -modprobe pci_stub -echo ${passthru_vpid["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/new_id -echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/devices/${passthru_bdf["usb_xdci"]}/driver/unbind -echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/bind - -#for audio device -boot_audio_option="" -if [ $audio_passthrough == 1 ]; then - echo ${passthru_vpid["audio"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["audio"]} > /sys/bus/pci/devices/${passthru_bdf["audio"]}/driver/unbind - echo ${passthru_bdf["audio"]} > /sys/bus/pci/drivers/pci-stub/bind - - #for audio codec - echo ${passthru_vpid["audio_codec"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["audio_codec"]} > /sys/bus/pci/devices/${passthru_bdf["audio_codec"]}/driver/unbind - echo ${passthru_bdf["audio_codec"]} > /sys/bus/pci/drivers/pci-stub/bind - - boot_audio_option="-s 14,passthru,0/e/0,keep_gsi -s 23,passthru,0/17/0" -else - boot_audio_option="-s 14,virtio-audio" -fi - -# for sd card passthrough - SDXC/MMC Host Controller 00:1b.0 -echo ${passthru_vpid["sd_card"]} > /sys/bus/pci/drivers/pci-stub/new_id -echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/devices/${passthru_bdf["sd_card"]}/driver/unbind -echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/drivers/pci-stub/bind - -# WIFI -echo ${passthru_vpid["wifi"]} > /sys/bus/pci/drivers/pci-stub/new_id -echo ${passthru_bdf["wifi"]} > /sys/bus/pci/devices/${passthru_bdf["wifi"]}/driver/unbind -echo ${passthru_bdf["wifi"]} > /sys/bus/pci/drivers/pci-stub/bind - -# Bluetooth passthrough depends on WIFI -echo ${passthru_vpid["bluetooth"]} > /sys/bus/pci/drivers/pci-stub/new_id -echo ${passthru_bdf["bluetooth"]} > /sys/bus/pci/devices/${passthru_bdf["bluetooth"]}/driver/unbind -echo ${passthru_bdf["bluetooth"]} > /sys/bus/pci/drivers/pci-stub/bind - -# Check if the NPK device/driver is present -ls -d /sys/bus/pci/drivers/intel_th_pci/0000* 2>/dev/null 1>/dev/null -if [ $? == 0 ];then - npk_virt="-s 0:0:2,npk,8/24" -else - npk_virt="" -fi - -# WA for USB role switch hang issue, disable runtime PM of xHCI device -echo on > /sys/devices/pci0000:00/0000:00:15.0/power/control - -echo 100 > /sys/bus/usb/drivers/usb-storage/module/parameters/delay_use - -boot_ipu_option="" -if [ $ipu_passthrough == 1 ];then - # for ipu passthrough - ipu device - if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu"]}" ]; then - echo ${passthru_vpid["ipu"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["ipu"]} > /sys/bus/pci/devices/${passthru_bdf["ipu"]}/driver/unbind - echo ${passthru_bdf["ipu"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_ipu_option="$boot_ipu_option"" -s 12,passthru,0/3/0 " - fi - - # for ipu passthrough - ipu related i2c - # please use virtual slot 22 for i2c to make sure that the i2c controller - # could get the same virtaul BDF as physical BDF - if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}" ]; then - echo ${passthru_vpid["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}/driver/unbind - echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_ipu_option="$boot_ipu_option"" -s 22,passthru,0/16/0 " - fi -else - boot_ipu_option="$boot_ipu_option"" -s 21,virtio-ipu " -fi - -boot_cse_option="" -if [ $cse_passthrough == 1 ]; then - echo ${passthru_vpid["cse"]} /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["cse"]} > /sys/bus/pci/devices/${passthru_bdf["cse"]}/driver/unbind - echo ${passthru_bdf["cse"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_cse_option="$boot_cse_option"" -s 15,passthru,0/0f/0 " -else - boot_cse_option="$boot_cse_option"" -s 15,virtio-heci,0/0f/0 " -fi - -#for memsize setting, total 8GB(>7.5GB) uos->6GB, 4GB(>3.5GB) uos->2GB -memsize=`cat /proc/meminfo|head -n 1|awk '{print $2}'` -if [ $memsize -gt 7500000 ];then - mem_size=6G -elif [ $memsize -gt 3500000 ];then - mem_size=2G -else - mem_size=1750M -fi - -if [ "$setup_mem" != "" ];then - mem_size=$setup_mem -fi - -kernel_cmdline_generic="nohpet tsc=reliable intel_iommu=off \ - androidboot.serialno=$ser \ - snd_soc_skl_virtio_fe.domain_id=1 \ - snd_soc_skl_virtio_fe.domain_name="GuestOS" \ - i915.enable_rc6=1 i915.enable_fbc=1 i915.enable_guc_loading=0 i915.avail_planes_per_pipe=$3 \ - i915.enable_hangcheck=0 use_nuclear_flip=1 i915.enable_guc_submission=0 i915.enable_guc=0" - -boot_dev_flag=",b" -if [ $6 == 1 ];then - boot_image_option="--vsbl /usr/share/acrn/bios/VSBL_debug.bin" -else - boot_image_option="--vsbl /usr/share/acrn/bios/VSBL.bin" -fi -kernel_cmdline="$kernel_cmdline_generic" - -: ' -select right virtual slots for acrn_dm: -1. some passthru device need virtual slot same as physical, like audio 0:e.0 at -virtual #14 slot, so "-s 14,passthru,0/e/0" -2. acrn_dm share vioapic irq between some virtual slots: like 6&14, 7&15. Need -guarantee no virt irq sharing for each passthru device. -FIXME: picking a virtual slot (#24 now) which is level-triggered to make sure -audio codec passthrough working -3. the bootable device slot is configured in compile stating in Android Guest -image, it should be kept using 3 as fixed value for Android Guest on Gordon_peak -ACRN project -' - -#interrupt storm monitor for pass-through devices, params order: -#threshold/s,probe-period(s),intr-inject-delay-time(ms),delay-duration(ms) -intr_storm_monitor="--intr_monitor 10000,10,1,100" - -acrn-dm --help 2>&1 | grep 'GVT args' -if [ $? == 0 ];then - GVT_args=$2 - boot_GVT_option=" -s 2,pci-gvt -G " -else - boot_GVT_option='' - GVT_args='' -fi - - acrn-dm -A -m $mem_size $boot_GVT_option"$GVT_args" -s 0:0,hostbridge -s 1:0,lpc -l com1,stdio $npk_virt\ - -s 9,virtio-net,$tap \ - -s 3,virtio-blk$boot_dev_flag,/data/$4/$4.img \ - -s 7,xhci,1-1:1-2:1-3:2-1:2-2:2-3:cap=apl \ - -s 8,passthru,0/15/1 \ - -s 13,virtio-rpmb \ - -s 10,virtio-hyper_dmabuf \ - -s 11,wdt-i6300esb \ - $boot_audio_option \ - $boot_cse_option \ - --mac_seed $mac_seed \ - -s 27,passthru,0/1b/0 \ - -s 24,passthru,0/18/0 \ - -s 18,passthru,3/0/0,keep_gsi \ - $intr_storm_monitor \ - $boot_ipu_option \ - -i /run/acrn/ioc_$vm_name,0x20 \ - -l com2,/run/acrn/ioc_$vm_name \ - --pm_notify_channel ioc \ - $boot_image_option \ - --enable_trusty \ - -B "$kernel_cmdline" $vm_name -} - -function launch_alios() -{ -#AliOS is not Android, only has same configuration currently, reuse launch function - -launch_android "$@" -} - -function help() -{ -echo "Use luanch_uos.sh like that ./launch_uos.sh -V <#>" -echo "The option -V means the UOSs group to be launched by vsbl as below" -echo "-V 1 means just launching 1 clearlinux UOS" -echo "-V 2 means just launching 1 android UOS" -echo "-V 3 means launching 1 clearlinux UOS + 1 android UOS" -echo "-V 4 means launching 2 clearlinux UOSs" -echo "-V 5 means just launching 1 alios UOS" -echo "-V 6 means auto check android/linux/alios UOS; if exist, launch it" -echo "-C means launching acrn-dm in runC container for QoS" -} - -launch_type=1 -debug=0 -runC_enable=0 - -function run_container() -{ -vm_name=vm1 -config_src="/usr/share/acrn/samples/apl-mrb/runC.json" -shell="/usr/share/acrn/conf/add/$vm_name.sh" -arg_file="/usr/share/acrn/conf/add/$vm_name.args" -runc_bundle="/usr/share/acrn/conf/add/runc/$vm_name" -rootfs_dir="/usr/share/acrn/conf/add/runc/rootfs" -config_dst="$runc_bundle/config.json" - - -input=$(runc list -f table | awk '{print $1}''{print $3}') -arr=(${input// / }) - -for((i=0;i<${#arr[@]};i++)) -do - if [ "$vm_name" = "${arr[$i]}" ]; then - if [ "running" = "${arr[$i+1]}" ]; then - echo "runC instance ${arr[$i]} is running" - exit - else - runc kill ${arr[$i]} - runc delete ${arr[$i]} - fi - fi -done -vmsts=$(acrnctl list) -vms=(${vmsts// / }) -for((i=0;i<${#vms[@]};i++)) -do - if [ "$vm_name" = "${vms[$i]}" ]; then - if [ "stopped" != "${vms[$i+1]}" ]; then - echo "Uos ${vms[$i]} ${vms[$i+1]}" - acrnctl stop ${vms[$i]} - fi - fi -done - -if [ ! -f "$shell" ]; then - echo "Pls add the vm at first!" - exit -fi - -if [ ! -f "$arg_file" ]; then - echo "Pls add the vm args!" - exit -fi - -if [ ! -d "$rootfs_dir" ]; then - mkdir -p "$rootfs_dir" -fi -if [ ! -d "$runc_bundle" ]; then - mkdir -p "$runc_bundle" -fi -if [ ! -f "$config_dst" ]; then - cp "$config_src" "$config_dst" - args=$(sed '{s/-C//g;s/^[ \t]*//g;s/^/\"/;s/ /\",\"/g;s/$/\"/}' ${arg_file}) - sed -i "s|\"sh\"|\"$shell\", $args|" $config_dst -fi -runc run --bundle $runc_bundle -d $vm_name -echo "The runC container is running in backgroud" -echo "'#runc exec bash' to login the container bash" -exit -} - -while getopts "V:M:hdC" opt -do - case $opt in - V) launch_type=$[$OPTARG] - ;; - M) setup_mem=$OPTARG - ;; - d) debug=1 - ;; - C) runC_enable=1 - ;; - h) help - exit 1 - ;; - ?) help - exit 1 - ;; - esac -done - -if [ ! -b "/dev/mmcblk1p3" ]; then - echo "no /dev/mmcblk1p3 data partition, exit" - exit -fi - -mkdir -p /data -mount /dev/mmcblk1p3 /data - -if [ $launch_type == 6 ]; then - if [ -f "/data/android/android.img" ]; then - launch_type=2; - elif [ -f "/data/alios/alios.img" ]; then - launch_type=5; - else - launch_type=1; - fi -fi - -if [ $runC_enable == 1 ]; then - if [ $(hostname) = "runc" ]; then - echo "Already in container exit!" - exit - fi - run_container - exit -fi - -# offline SOS CPUs except BSP before launch UOS -for i in `ls -d /sys/devices/system/cpu/cpu[1-99]`; do - online=`cat $i/online` - idx=`echo $i | tr -cd "[1-99]"` - echo cpu$idx online=$online - if [ "$online" = "1" ]; then - echo 0 > $i/online - online=`cat $i/online` - # during boot time, cpu hotplug may be disabled by pci_device_probe during a pci module insmod - while [ "$online" = "1" ]; do - sleep 1 - echo 0 > $i/online - online=`cat $i/online` - done - echo $idx > /sys/devices/virtual/misc/acrn_hsm/remove_cpu - fi -done - -case $launch_type in - 1) echo "Launch clearlinux UOS" - launch_clearlinux 1 "64 448 8" 0x070F00 clearlinux "LaaG" $debug - ;; - 2) echo "Launch android UOS" - launch_android 1 "64 448 8" 0x070F00 android "AaaG" $debug - ;; - 3) echo "Launch clearlinux UOS + android UOS" - launch_android 1 "64 448 4" 0x00000C android "AaaG" $debug & - sleep 5 - launch_clearlinux 2 "64 448 4" 0x070F00 clearlinux "LaaG" $debug - ;; - 4) echo "Launch two clearlinux UOSs" - launch_clearlinux 1 "64 448 4" 0x00000C clearlinux "L1aaG" $debug & - sleep 5 - launch_clearlinux 2 "64 448 4" 0x070F00 clearlinux_dup "L2aaG" $debug - ;; - 5) echo "Launch alios UOS" - launch_alios 1 "64 448 8" 0x070F00 alios "AliaaG" $debug - ;; -esac - -umount /data diff --git a/misc/config_tools/data/sample_launch_scripts/apl-mrb/runC.json b/misc/config_tools/data/sample_launch_scripts/apl-mrb/runC.json deleted file mode 100644 index c68d401b3..000000000 --- a/misc/config_tools/data/sample_launch_scripts/apl-mrb/runC.json +++ /dev/null @@ -1,274 +0,0 @@ -{ - "ociVersion": "1.0.1-dev", - "process": { - "terminal": false, - "user": { - "uid": 0, - "gid": 0 - }, - "args": [ - "sh" - ], - "env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "TERM=xterm" - ], - "cwd": "/", - "capabilities": { - "bounding": [ - "CAP_AUDIT_WRITE", - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND", - "CAP_AUDIT_READ" - - ], - "effective": [ - "CAP_AUDIT_WRITE", - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND", - "CAP_AUDIT_READ" - ], - "inheritable": [ - "CAP_AUDIT_WRITE", - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND", - "CAP_AUDIT_READ" - ], - "permitted": [ - "CAP_AUDIT_WRITE", - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND", - "CAP_AUDIT_READ" - ], - "ambient": [ - "CAP_AUDIT_WRITE", - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND", - "CAP_AUDIT_READ" - ] - } - }, - "root": { - "path": "../rootfs", - "readonly": false - }, - "hostname": "runc", - "mounts": [ - { - "destination": "/", - "type": "none", - "source": "/", - "options": ["rbind","rw"] - } - ], - "linux": { - "resources": { - "devices": [ - { - "allow": true, - "access": "rwm" - } - ] - }, - "uidMappings": [ - { - "hostID": 0, - "containerID": 0, - "size": 1 - } - ], - "gidMappings": [ - { - "hostID": 0, - "containerID": 0, - "size": 1 - } - ], - "namespaces": [ - { - "type": "pid" - }, - { - "type": "uts" - }, - { - "type": "mount" - } - ] - } -} diff --git a/misc/config_tools/data/sample_launch_scripts/apl-up2/launch_uos.sh b/misc/config_tools/data/sample_launch_scripts/apl-up2/launch_uos.sh deleted file mode 100755 index e83b49edf..000000000 --- a/misc/config_tools/data/sample_launch_scripts/apl-up2/launch_uos.sh +++ /dev/null @@ -1,481 +0,0 @@ -#!/bin/bash -# Copyright (C) 2019 Intel Corporation. -# SPDX-License-Identifier: BSD-3-Clause - -kernel_version=$(uname -r | awk -F. '{ printf("%d.%d", $1,$2) }') - -ipu_passthrough=0 - -# Check the device file of /dev/vbs_ipu to determine the IPU mode -if [ ! -e "/dev/vbs_ipu" ]; then -ipu_passthrough=1 -fi - -audio_passthrough=0 - -# Check the device file of /dev/vbs_k_audio to determine the audio mode -if [ ! -e "/dev/vbs_k_audio" ]; then -audio_passthrough=1 -fi - -cse_passthrough=0 -hbm_ver=`cat /sys/class/mei/mei0/hbm_ver` -major_ver=`echo $hbm_ver | cut -d '.' -f1` -minor_ver=`echo $hbm_ver | cut -d '.' -f2` -if [[ "$major_ver" -lt "2" ]] || \ - [[ "$major_ver" == "2" && "$minor_ver" -le "2" ]]; then - cse_passthrough=1 -fi - -# pci devices for passthru -declare -A passthru_vpid -declare -A passthru_bdf - -passthru_vpid=( -["usb_xdci"]="8086 5aaa" -["ipu"]="8086 5a88" -["ipu_i2c"]="8086 5aac" -["cse"]="8086 5a9a" -["sd_card"]="8086 5acc" -["audio"]="8086 5a98" -["audio_codec"]="8086 5ab4" -) -passthru_bdf=( -["usb_xdci"]="0000:00:15.1" -["ipu"]="0000:00:03.0" -["ipu_i2c"]="0000:00:16.0" -["cse"]="0000:00:0f.0" -["sd_card"]="0000:00:1c.0" -["audio"]="0000:00:0e.0" -["audio_codec"]="0000:00:17.0" -) - -function launch_clearlinux() -{ -if [ ! -f "/data/$4/$4.img" ]; then - echo "no /data/$4/$4.img, exit" - exit -fi - -#vm-name used to generate uos-mac address -mac=$(cat /sys/class/net/en*/address) -vm_name=vm$1 -mac_seed=${mac:9:8}-${vm_name} - -# create a unique tap device for each VM -tap=tap_$5 -tap_exist=$(ip a | grep "$tap" | awk '{print $1}') -if [ "$tap_exist"x != "x" ]; then - echo "tap device existed, reuse $tap" -else - ip tuntap add dev $tap mode tap -fi - -# if acrn-br0 exists, add VM's unique tap device under it -br_exist=$(ip a | grep acrn-br0 | awk '{print $1}') -if [ "$br_exist"x != "x" -a "$tap_exist"x = "x" ]; then - echo "acrn-br0 bridge aleady exists, adding new tap device to it..." - ip link set "$tap" master acrn-br0 - ip link set dev "$tap" down - ip link set dev "$tap" up -fi - -#check if the vm is running or not -vm_ps=$(pgrep -a -f acrn-dm) -result=$(echo $vm_ps | grep -w "${vm_name}") -if [[ "$result" != "" ]]; then - echo "$vm_name is running, can't create twice!" - exit -fi - -#for VT-d device setting -modprobe pci_stub -echo ${passthru_vpid["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/new_id -echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/devices/${passthru_bdf["usb_xdci"]}/driver/unbind -echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/bind - -boot_ipu_option="" -if [ $ipu_passthrough == 1 ];then - # for ipu passthrough - ipu device 0:3.0 - if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu"]}" ]; then - echo ${passthru_vpid["ipu"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["ipu"]} > /sys/bus/pci/devices/${passthru_bdf["ipu"]}/driver/unbind - echo ${passthru_bdf["ipu"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_ipu_option="$boot_ipu_option"" -s 12,passthru,0/3/0 " - fi - - # for ipu passthrough - ipu related i2c - # please use virtual slot 22 for i2c to make sure that the i2c controller - # could get the same virtaul BDF as physical BDF - if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}" ]; then - echo ${passthru_vpid["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}/driver/unbind - echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_ipu_option="$boot_ipu_option"" -s 22,passthru,0/16/0 " - fi -else - boot_ipu_option="$boot_ipu_option"" -s 21,virtio-ipu " -fi - -boot_cse_option="" -if [ $cse_passthrough == 1 ]; then - echo ${passthru_vpid["cse"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["cse"]} > /sys/bus/pci/devices/${passthru_bdf["cse"]}/driver/unbind - echo ${passthru_bdf["cse"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_cse_option="$boot_cse_option"" -s 15,passthru,0/0f/0 " -else - boot_cse_option="$boot_cse_option"" -s 15,virtio-heci,0/0f/0 " -fi - -# for sd card passthrough - SDXC/MMC Host Controller -# echo ${passthru_vpid["sd_card"]} > /sys/bus/pci/drivers/pci-stub/new_id -# echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/devices/${passthru_bdf["sd_card"]}/driver/unbind -# echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/drivers/pci-stub/bind - -#for memsize setting, total 8GB(>7.5GB) uos->6GB, 4GB(>3.5GB) uos->2GB -memsize=`cat /proc/meminfo|head -n 1|awk '{print $2}'` -if [ $memsize -gt 7500000 ];then - mem_size=6G -elif [ $memsize -gt 3500000 ];then - mem_size=2G -else - mem_size=1750M -fi - -if [ "$setup_mem" != "" ];then - mem_size=$setup_mem -fi - -boot_dev_flag=",b" -if [ $6 == 1 ];then - boot_image_option="--vsbl /usr/share/acrn/bios/VSBL_debug.bin" -else - boot_image_option="--vsbl /usr/share/acrn/bios/VSBL.bin" -fi - -#interrupt storm monitor for pass-through devices, params order: -#threshold/s,probe-period(s),intr-inject-delay-time(ms),delay-duration(ms) -intr_storm_monitor="--intr_monitor 10000,10,1,100" - -acrn-dm --help 2>&1 | grep 'GVT args' -if [ $? == 0 ];then - GVT_args=$2 - boot_GVT_option=" -s 0:2:0,pci-gvt -G " -else - boot_GVT_option='' - GVT_args='' -fi - -#logger_setting, format: logger_name,level; like following -logger_setting="--logger_setting console,level=4;kmsg,level=3;disk,level=5" - -acrn-dm -A -m $mem_size $boot_GVT_option"$GVT_args" -s 0:0,hostbridge -s 1:0,lpc -l com1,stdio \ - -s 5,virtio-console,@pty:pty_port \ - -s 6,virtio-hyper_dmabuf \ - -s 8,wdt-i6300esb \ - -s 3,virtio-blk$boot_dev_flag,/data/$4/$4.img \ - -s 4,virtio-net,$tap $boot_image_option \ - -s 7,xhci,1-1:1-2:1-3:2-1:2-2:2-3:cap=apl \ - -s 9,passthru,0/15/1 \ - $boot_cse_option \ - $intr_storm_monitor \ - $logger_setting \ - $boot_ipu_option \ - --mac_seed $mac_seed \ - --pm_notify_channel power_button \ - -B "root=/dev/vda2 rw rootwait nohpet console=hvc0 \ - console=ttyS0 no_timer_check ignore_loglevel log_buf_len=16M \ - consoleblank=0 tsc=reliable i915.avail_planes_per_pipe=$3 i915.enable_guc_loading=0 \ - i915.enable_hangcheck=0 i915.nuclear_pageflip=1 \ - i915.enable_guc_submission=0 i915.enable_guc=0" $vm_name -} - -function launch_android() -{ -if [ ! -f "/data/$4/$4.img" ]; then - echo "no /data/$4/$4.img, exit" - exit -fi - -#vm-name used to generate uos-mac address -mac=$(cat /sys/class/net/en*/address) -vm_name=vm$1 -mac_seed=${mac:9:8}-${vm_name} - -# create a unique tap device for each VM -tap=tap_$5 -tap_exist=$(ip a | grep "$tap" | awk '{print $1}') -if [ "$tap_exist"x != "x" ]; then - echo "tap device existed, reuse $tap" -else - ip tuntap add dev $tap mode tap -fi - -# if acrn-br0 exists, add VM's unique tap device under it -br_exist=$(ip a | grep acrn-br0 | awk '{print $1}') -if [ "$br_exist"x != "x" -a "$tap_exist"x = "x" ]; then - echo "acrn-br0 bridge aleady exists, adding new tap device to it..." - ip link set "$tap" master acrn-br0 - ip link set dev "$tap" down - ip link set dev "$tap" up -fi - -#Use MMC name + serial for ADB serial no., same as native android -mmc_name=`cat /sys/block/mmcblk0/device/name` -mmc_serial=`cat /sys/block/mmcblk0/device/serial | sed -n 's/^..//p'` -ser=$mmc_name$mmc_serial - -#check if the vm is running or not -vm_ps=$(pgrep -a -f acrn-dm) -result=$(echo $vm_ps | grep -w "${vm_name}") -if [[ "$result" != "" ]]; then - echo "$vm_name is running, can't create twice!" - exit -fi - -#for VT-d device setting -modprobe pci_stub -echo ${passthru_vpid["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/new_id -echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/devices/${passthru_bdf["usb_xdci"]}/driver/unbind -echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/bind - -#for audio device -boot_audio_option="" -if [ $audio_passthrough == 1 ]; then - echo ${passthru_vpid["audio"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["audio"]} > /sys/bus/pci/devices/${passthru_bdf["audio"]}/driver/unbind - echo ${passthru_bdf["audio"]} > /sys/bus/pci/drivers/pci-stub/bind - - #for audio codec - echo ${passthru_vpid["audio_codec"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["audio_codec"]} > /sys/bus/pci/devices/${passthru_bdf["audio_codec"]}/driver/unbind - echo ${passthru_bdf["audio_codec"]} > /sys/bus/pci/drivers/pci-stub/bind - - boot_audio_option="-s 14,passthru,0/e/0,keep_gsi -s 23,passthru,0/17/0" -else - boot_audio_option="-s 14,virtio-audio" -fi -# # for sd card passthrough - SDXC/MMC Host Controller 00:1b.0 -# echo ${passthru_vpid["sd_card"]} > /sys/bus/pci/drivers/pci-stub/new_id -# echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/devices/${passthru_bdf["sd_card"]}/driver/unbind -# echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/drivers/pci-stub/bind - -# Check if the NPK device/driver is present -ls -d /sys/bus/pci/drivers/intel_th_pci/0000* 2>/dev/null 1>/dev/null -if [ $? == 0 ];then - npk_virt="-s 0:0:2,npk,8/24" -else - npk_virt="" -fi - -# WA for USB role switch hang issue, disable runtime PM of xHCI device -echo on > /sys/devices/pci0000:00/0000:00:15.0/power/control - -boot_ipu_option="" -if [ $ipu_passthrough == 1 ];then - # for ipu passthrough - ipu device - if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu"]}" ]; then - echo ${passthru_vpid["ipu"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["ipu"]} > /sys/bus/pci/devices/${passthru_bdf["ipu"]}/driver/unbind - echo ${passthru_bdf["ipu"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_ipu_option="$boot_ipu_option"" -s 12,passthru,0/3/0 " - fi - - # for ipu passthrough - ipu related i2c 0:16.0 - # please use virtual slot 22 for i2c 0:16.0 to make sure that the i2c controller - # could get the same virtaul BDF as physical BDF - if [ -d "/sys/bus/pci/devices/0000:00:16.0" ]; then - echo ${passthru_vpid["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}/driver/unbind - echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_ipu_option="$boot_ipu_option"" -s 22,passthru,0/16/0 " - fi -else - boot_ipu_option="$boot_ipu_option"" -s 21,virtio-ipu " -fi - -boot_cse_option="" -if [ $cse_passthrough == 1 ]; then - echo ${passthru_vpid["cse"]} > /sys/bus/pci/drivers/pci-stub/new_id - echo ${passthru_bdf["cse"]} > /sys/bus/pci/devices/${passthru_bdf["cse"]}/driver/unbind - echo ${passthru_bdf["cse"]} > /sys/bus/pci/drivers/pci-stub/bind - boot_cse_option="$boot_cse_option"" -s 15,passthru,0/0f/0 " -else - boot_cse_option="$boot_cse_option"" -s 15,virtio-heci,0/0f/0 " -fi - -#for memsize setting, total 8GB(>7.5GB) uos->6GB, 4GB(>3.5GB) uos->2GB -memsize=`cat /proc/meminfo|head -n 1|awk '{print $2}'` -if [ $memsize -gt 7500000 ];then - mem_size=6G -elif [ $memsize -gt 3500000 ];then - mem_size=2G -else - mem_size=1750M -fi - -if [ "$setup_mem" != "" ];then - mem_size=$setup_mem -fi - -kernel_cmdline_generic="nohpet tsc=reliable intel_iommu=off \ - androidboot.serialno=$ser \ - i915.enable_rc6=1 i915.enable_fbc=1 i915.enable_guc_loading=0 i915.avail_planes_per_pipe=$3 \ - i915.enable_hangcheck=0 use_nuclear_flip=1 i915.enable_guc_submission=0 i915.enable_guc=0" - -boot_dev_flag=",b" -if [ $6 == 1 ];then - boot_image_option="--vsbl /usr/share/acrn/bios/VSBL_debug.bin" -else - boot_image_option="--vsbl /usr/share/acrn/bios/VSBL.bin" -fi -kernel_cmdline="$kernel_cmdline_generic" - -: ' -select right virtual slots for acrn_dm: -1. some passthru device need virtual slot same as physical, like audio 0:e.0 at -virtual #14 slot, so "-s 14,passthru,0/e/0" -2. acrn_dm share vioapic irq between some virtual slots: like 6&14, 7&15. Need -guarantee no virt irq sharing for each passthru device. -FIXME: picking a virtual slot (#24 now) which is level-triggered to make sure -audio codec passthrough working -3. the bootable device slot is configured in compile stating in Android Guest -image, it should be kept using 3 as fixed value for Android Guest on Gordon_peak -ACRN project -' - -#interrupt storm monitor for pass-through devices, params order: -#threshold/s,probe-period(s),intr-inject-delay-time(ms),delay-duration(ms) -intr_storm_monitor="--intr_monitor 10000,10,1,100" - -acrn-dm --help 2>&1 | grep 'GVT args' -if [ $? == 0 ];then - GVT_args=$2 - boot_GVT_option=" -s 2,pci-gvt -G " -else - boot_GVT_option='' - GVT_args='' -fi - -#logger_setting, format: logger_name,level; like following -logger_setting="--logger_setting console,level=4;kmsg,level=3;disk,level=5" - - acrn-dm -A -m $mem_size $boot_GVT_option"$GVT_args" -s 0:0,hostbridge -s 1:0,lpc -l com1,stdio $npk_virt\ - -s 9,virtio-net,$tap \ - -s 3,virtio-blk$boot_dev_flag,/data/$4/$4.img \ - -s 7,xhci,1-1:1-2:1-3:2-1:2-2:2-3:cap=apl \ - -s 8,passthru,0/15/1 \ - -s 13,virtio-rpmb \ - -s 10,virtio-hyper_dmabuf \ - -s 11,wdt-i6300esb \ - $boot_audio_option \ - $boot_cse_option \ - $intr_storm_monitor \ - $logger_setting \ - $boot_ipu_option \ - --mac_seed $mac_seed \ - $boot_image_option \ - --enable_trusty \ - --pm_notify_channel power_button \ - -B "$kernel_cmdline" $vm_name -} - -function launch_alios() -{ -#AliOS is not Android, only has same configuration currently, reuse launch function - -launch_android "$@" -} - -function help() -{ -echo "Use luanch_uos.sh like that ./launch_uos.sh -V <#>" -echo "The option -V means the UOSs group to be launched by vsbl as below" -echo "-V 1 means just launching 1 clearlinux UOS" -echo "-V 2 means just launching 1 android UOS" -echo "-V 3 means launching 1 clearlinux UOS + 1 android UOS" -echo "-V 4 means launching 2 clearlinux UOSs" -echo "-V 5 means just launching 1 alios UOS" -echo "-V 6 means auto check android/linux/alios UOS; if exist, launch it" -} - -launch_type=1 -debug=0 - -while getopts "V:M:hd" opt -do - case $opt in - V) launch_type=$[$OPTARG] - ;; - M) setup_mem=$OPTARG - ;; - d) debug=1 - ;; - h) help - exit 1 - ;; - ?) help - exit 1 - ;; - esac -done - -if [ ! -b "/dev/mmcblk0p1" ]; then - echo "no /dev/mmcblk0p1 data partition, exit" - exit -fi - -mkdir -p /data -mount /dev/mmcblk0p1 /data - -if [ $launch_type == 6 ]; then - if [ -f "/data/android/android.img" ]; then - launch_type=2; - elif [ -f "/data/alios/alios.img" ]; then - launch_type=5; - else - launch_type=1; - fi -fi - -# offline SOS CPUs except BSP before launch UOS -for i in `ls -d /sys/devices/system/cpu/cpu[1-99]`; do - online=`cat $i/online` - idx=`echo $i | tr -cd "[1-99]"` - echo cpu$idx online=$online - if [ "$online" = "1" ]; then - echo 0 > $i/online - online=`cat $i/online` - # during boot time, cpu hotplug may be disabled by pci_device_probe during a pci module insmod - while [ "$online" = "1" ]; do - sleep 1 - echo 0 > $i/online - online=`cat $i/online` - done - echo $idx > /sys/devices/virtual/misc/acrn_hsm/remove_cpu - fi -done - -case $launch_type in - 1) echo "Launch clearlinux UOS" - launch_clearlinux 1 "64 448 8" 0x070F00 clearlinux "LaaG" $debug - ;; - 2) echo "Launch android UOS" - launch_android 1 "64 448 8" 0x070F00 android "AaaG" $debug - ;; - 3) echo "Launch clearlinux UOS + android UOS" - launch_android 1 "64 448 4" 0x00000C android "AaaG" $debug & - sleep 5 - launch_clearlinux 2 "64 448 4" 0x070F00 clearlinux "LaaG" $debug - ;; - 4) echo "Launch two clearlinux UOSs" - launch_clearlinux 1 "64 448 4" 0x00000C clearlinux "L1aaG" $debug & - sleep 5 - launch_clearlinux 2 "64 448 4" 0x070F00 clearlinux_dup "L2aaG" $debug - ;; - 5) echo "Launch alios UOS" - launch_alios 1 "64 448 8" 0x070F00 alios "AliaaG" $debug - ;; -esac - -umount /data