Makefile: remove old samples (Apollo Lake)

Remove sample files and launch scripts related to the Apollo Lake (APL)
platform since ACRN no longer supports it. Clean the Makefile as well to not
install these files on the target system.

Tracked-On: #6175
Signed-off-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
This commit is contained in:
Geoffroy Van Cutsem
2022-06-22 11:52:29 +02:00
committed by acrnsi-robot
parent 873ddbb969
commit ff07ccae0f
6 changed files with 1 additions and 1377 deletions

View File

@@ -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 $^

View File

@@ -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

View File

@@ -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 <vmname> 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

View File

@@ -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"
}
]
}
}

View File

@@ -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