From bb48a66b9606e38510e8ccc6f68aab5a8a72084b Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Tue, 14 May 2019 22:57:31 +0800 Subject: [PATCH] dm: refine the passthrough devices with dictionary As vm config tool will override the passthrough devices if run on different hw, and it will take a lot of work to search and replace the passthrough device. This patch refine the passthrough devices that tools to overwrite. Tracked-On: #3127 Signed-off-by: Wei Liu Reviewed-by: Binbin Wu Reviewed-by: Victor Sun --- devicemodel/samples/apl-mrb/launch_uos.sh | 131 +++++++++++-------- devicemodel/samples/apl-up2/launch_uos.sh | 109 +++++++++------ devicemodel/samples/nuc/launch_hard_rt_vm.sh | 25 +++- 3 files changed, 164 insertions(+), 101 deletions(-) diff --git a/devicemodel/samples/apl-mrb/launch_uos.sh b/devicemodel/samples/apl-mrb/launch_uos.sh index 8d764eaa3..b1fe15de0 100755 --- a/devicemodel/samples/apl-mrb/launch_uos.sh +++ b/devicemodel/samples/apl-mrb/launch_uos.sh @@ -43,6 +43,33 @@ if [[ "$major_ver" -lt "2" ]] || \ 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/$5/$5.img" ]; then @@ -83,29 +110,29 @@ fi #for VT-d device setting modprobe pci_stub -echo "8086 5aaa" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:00:15.1" > /sys/bus/pci/devices/0000:00:15.1/driver/unbind -echo "0000:00:15.1" > /sys/bus/pci/drivers/pci-stub/bind +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 0:3.0 - if [ -d "/sys/bus/pci/devices/0000:00:03.0" ]; then - echo "8086 5a88" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:03.0" > /sys/bus/pci/devices/0000:00:03.0/driver/unbind - echo "0000:00:03.0" > /sys/bus/pci/drivers/pci-stub/bind + # 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 + # 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/0000:00:16.0" ]; then - echo "8086 5aac" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:16.0" > /sys/bus/pci/devices/0000:00:16.0/driver/unbind - echo "0000:00:16.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 @@ -114,18 +141,18 @@ fi boot_cse_option="" if [ $cse_passthrough == 1 ]; then - echo "8086 5a9a" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:0f.0" > /sys/bus/pci/devices/0000:00:0f.0/driver/unbind - echo "0000:00:0f.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 "8086 5aca" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:00:1b.0" > /sys/bus/pci/devices/0000:00:1b.0/driver/unbind -echo "0000:00:1b.0" > /sys/bus/pci/drivers/pci-stub/bind +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}'` @@ -231,21 +258,21 @@ fi #for VT-d device setting modprobe pci_stub -echo "8086 5aaa" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:00:15.1" > /sys/bus/pci/devices/0000:00:15.1/driver/unbind -echo "0000:00:15.1" > /sys/bus/pci/drivers/pci-stub/bind +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 "8086 5a98" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:0e.0" > /sys/bus/pci/devices/0000:00:0e.0/driver/unbind - echo "0000:00:0e.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 "8086 5ab4" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:17.0" > /sys/bus/pci/devices/0000:00:17.0/driver/unbind - echo "0000:00:17.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 @@ -253,19 +280,19 @@ else fi # for sd card passthrough - SDXC/MMC Host Controller 00:1b.0 -echo "8086 5aca" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:00:1b.0" > /sys/bus/pci/devices/0000:00:1b.0/driver/unbind -echo "0000:00:1b.0" > /sys/bus/pci/drivers/pci-stub/bind +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 "11ab 2b38" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:03:00.0" > /sys/bus/pci/devices/0000:03:00.0/driver/unbind -echo "0000:03:00.0" > /sys/bus/pci/drivers/pci-stub/bind +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 "8086 5abc" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:00:18.0" > /sys/bus/pci/devices/0000:00:18.0/driver/unbind -echo "0000:00:18.0" > /sys/bus/pci/drivers/pci-stub/bind +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 @@ -282,21 +309,21 @@ 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 0:3.0 - if [ -d "/sys/bus/pci/devices/0000:00:03.0" ]; then - echo "8086 5a88" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:03.0" > /sys/bus/pci/devices/0000:00:03.0/driver/unbind - echo "0000:00:03.0" > /sys/bus/pci/drivers/pci-stub/bind + # 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 + # 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/0000:00:16.0" ]; then - echo "8086 5aac" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:16.0" > /sys/bus/pci/devices/0000:00:16.0/driver/unbind - echo "0000:00:16.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 @@ -305,9 +332,9 @@ fi boot_cse_option="" if [ $cse_passthrough == 1 ]; then - echo "8086 5a9a" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:0f.0" > /sys/bus/pci/devices/0000:00:0f.0/driver/unbind - echo "0000:00:0f.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 " diff --git a/devicemodel/samples/apl-up2/launch_uos.sh b/devicemodel/samples/apl-up2/launch_uos.sh index fbd5ee9fe..6ce4e8728 100755 --- a/devicemodel/samples/apl-up2/launch_uos.sh +++ b/devicemodel/samples/apl-up2/launch_uos.sh @@ -32,6 +32,29 @@ if [[ "$major_ver" -lt "2" ]] || \ 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/$5/$5.img" ]; then @@ -72,27 +95,27 @@ fi #for VT-d device setting modprobe pci_stub -echo "8086 5aaa" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:00:15.1" > /sys/bus/pci/devices/0000:00:15.1/driver/unbind -echo "0000:00:15.1" > /sys/bus/pci/drivers/pci-stub/bind +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/0000:00:03.0" ]; then - echo "8086 5a88" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:03.0" > /sys/bus/pci/devices/0000:00:03.0/driver/unbind - echo "0000:00:03.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 + # 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/0000:00:16.0" ]; then - echo "8086 5aac" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:16.0" > /sys/bus/pci/devices/0000:00:16.0/driver/unbind - echo "0000:00:16.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 @@ -101,18 +124,18 @@ fi boot_cse_option="" if [ $cse_passthrough == 1 ]; then - echo "8086 5a9a" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:0f.0" > /sys/bus/pci/devices/0000:00:0f.0/driver/unbind - echo "0000:00:0f.0" > /sys/bus/pci/drivers/pci-stub/bind + 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:1c.0 -# echo "8086 5acc" > /sys/bus/pci/drivers/pci-stub/new_id -# echo "0000:00:1c.0" > /sys/bus/pci/devices/0000:00:1c.0/driver/unbind -# echo "0000:00:1c.0" > /sys/bus/pci/drivers/pci-stub/bind +# 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}'` @@ -216,30 +239,30 @@ fi #for VT-d device setting modprobe pci_stub -echo "8086 5aaa" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:00:15.1" > /sys/bus/pci/devices/0000:00:15.1/driver/unbind -echo "0000:00:15.1" > /sys/bus/pci/drivers/pci-stub/bind +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 "8086 5a98" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:0e.0" > /sys/bus/pci/devices/0000:00:0e.0/driver/unbind - echo "0000:00:0e.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 "8086 5ab4" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:17.0" > /sys/bus/pci/devices/0000:00:17.0/driver/unbind - echo "0000:00:17.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 "8086 5acc" > /sys/bus/pci/drivers/pci-stub/new_id -# echo "0000:00:1c.0" > /sys/bus/pci/devices/0000:00:1c.0/driver/unbind -# echo "0000:00:1c.0" > /sys/bus/pci/drivers/pci-stub/bind +# 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 @@ -254,11 +277,11 @@ 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 0:3.0 - if [ -d "/sys/bus/pci/devices/0000:00:03.0" ]; then - echo "8086 5a88" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:03.0" > /sys/bus/pci/devices/0000:00:03.0/driver/unbind - echo "0000:00:03.0" > /sys/bus/pci/drivers/pci-stub/bind + # 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 @@ -266,9 +289,9 @@ if [ $ipu_passthrough == 1 ];then # 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 "8086 5aac" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:16.0" > /sys/bus/pci/devices/0000:00:16.0/driver/unbind - echo "0000:00:16.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 @@ -277,9 +300,9 @@ fi boot_cse_option="" if [ $cse_passthrough == 1 ]; then - echo "8086 5a9a" > /sys/bus/pci/drivers/pci-stub/new_id - echo "0000:00:0f.0" > /sys/bus/pci/devices/0000:00:0f.0/driver/unbind - echo "0000:00:0f.0" > /sys/bus/pci/drivers/pci-stub/bind + 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 " diff --git a/devicemodel/samples/nuc/launch_hard_rt_vm.sh b/devicemodel/samples/nuc/launch_hard_rt_vm.sh index 927943840..beac007a8 100755 --- a/devicemodel/samples/nuc/launch_hard_rt_vm.sh +++ b/devicemodel/samples/nuc/launch_hard_rt_vm.sh @@ -1,6 +1,19 @@ #!/bin/bash # This is an example of launch script for KBL NUC7i7DNH, may need to revise for other platform. +# pci devices for passthru +declare -A passthru_vpid +declare -A passthru_bdf + +passthru_vpid=( +["eth"]="8086 156f" +["sata"]="8086 9d03" +) +passthru_bdf=( +["eth"]="0000:00:1f.6" +["sata"]="0000:00:17.0" +) + function launch_hard_rt_vm() { #for memsize setting @@ -8,14 +21,14 @@ mem_size=1024M modprobe pci_stub # Ethernet pass-through -#echo "8086 156f" > /sys/bus/pci/drivers/pci-stub/new_id -#echo "0000:00:1f.6" > /sys/bus/pci/devices/0000:00:1f.6/driver/unbind -#echo "0000:00:1f.6" > /sys/bus/pci/drivers/pci-stub/bind +#echo ${passthru_vpid["eth"]} > /sys/bus/pci/drivers/pci-stub/new_id +#echo ${passthru_bdf["eth"]} > /sys/bus/pci/devices/${passthru_bdf["eth"]}/driver/unbind +#echo ${passthru_bdf["eth"]} > /sys/bus/pci/drivers/pci-stub/bind # SATA pass-through -echo "8086 9d03" > /sys/bus/pci/drivers/pci-stub/new_id -echo "0000:00:17.0" > /sys/bus/pci/devices/0000:00:17.0/driver/unbind -echo "0000:00:17.0" > /sys/bus/pci/drivers/pci-stub/bind +echo ${passthru_vpid["sata"]} > /sys/bus/pci/drivers/pci-stub/new_id +echo ${passthru_bdf["sata"]} > /sys/bus/pci/devices/${passthru_bdf["sata"]}/driver/unbind +echo ${passthru_bdf["sata"]} > /sys/bus/pci/drivers/pci-stub/bind /usr/bin/acrn-dm -A -m $mem_size -c $1 \ -k /root/rt_uos_kernel \