Skip to content

Commit bb48a66

Browse files
Wei Liuacrnsi
authored andcommitted
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 <weix.w.liu@intel.com> Reviewed-by: Binbin Wu <binbin.wu@intel.com> Reviewed-by: Victor Sun <victor.sun@intel.com>
1 parent 517cff1 commit bb48a66

File tree

3 files changed

+164
-101
lines changed

3 files changed

+164
-101
lines changed

devicemodel/samples/apl-mrb/launch_uos.sh

Lines changed: 79 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,33 @@ if [[ "$major_ver" -lt "2" ]] || \
4343
cse_passthrough=1
4444
fi
4545

46+
# pci devices for passthru
47+
declare -A passthru_vpid
48+
declare -A passthru_bdf
49+
50+
passthru_vpid=(
51+
["usb_xdci"]="8086 5aaa"
52+
["ipu"]="8086 5a88"
53+
["ipu_i2c"]="8086 5aac"
54+
["cse"]="8086 5a9a"
55+
["sd_card"]="8086 5aca"
56+
["audio"]="8086 5a98"
57+
["audio_codec"]="8086 5ab4"
58+
["wifi"]="11ab 2b38"
59+
["bluetooth"]="8086 5abc"
60+
)
61+
passthru_bdf=(
62+
["usb_xdci"]="0000:00:15.1"
63+
["ipu"]="0000:00:03.0"
64+
["ipu_i2c"]="0000:00:16.0"
65+
["cse"]="0000:00:0f.0"
66+
["sd_card"]="0000:00:1b.0"
67+
["audio"]="0000:00:0e.0"
68+
["audio_codec"]="0000:00:17.0"
69+
["wifi"]="0000:03:00.0"
70+
["bluetooth"]="0000:00:18.0"
71+
)
72+
4673
function launch_clearlinux()
4774
{
4875
if [ ! -f "/data/$5/$5.img" ]; then
@@ -83,29 +110,29 @@ fi
83110

84111
#for VT-d device setting
85112
modprobe pci_stub
86-
echo "8086 5aaa" > /sys/bus/pci/drivers/pci-stub/new_id
87-
echo "0000:00:15.1" > /sys/bus/pci/devices/0000:00:15.1/driver/unbind
88-
echo "0000:00:15.1" > /sys/bus/pci/drivers/pci-stub/bind
113+
echo ${passthru_vpid["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/new_id
114+
echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/devices/${passthru_bdf["usb_xdci"]}/driver/unbind
115+
echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/bind
89116

90117
echo 100 > /sys/bus/usb/drivers/usb-storage/module/parameters/delay_use
91118

92119
boot_ipu_option=""
93120
if [ $ipu_passthrough == 1 ];then
94-
# for ipu passthrough - ipu device 0:3.0
95-
if [ -d "/sys/bus/pci/devices/0000:00:03.0" ]; then
96-
echo "8086 5a88" > /sys/bus/pci/drivers/pci-stub/new_id
97-
echo "0000:00:03.0" > /sys/bus/pci/devices/0000:00:03.0/driver/unbind
98-
echo "0000:00:03.0" > /sys/bus/pci/drivers/pci-stub/bind
121+
# for ipu passthrough - ipu device
122+
if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu"]}" ]; then
123+
echo ${passthru_vpid["ipu"]} > /sys/bus/pci/drivers/pci-stub/new_id
124+
echo ${passthru_bdf["ipu"]} > /sys/bus/pci/devices/${passthru_bdf["ipu"]}/driver/unbind
125+
echo ${passthru_bdf["ipu"]} > /sys/bus/pci/drivers/pci-stub/bind
99126
boot_ipu_option="$boot_ipu_option"" -s 12,passthru,0/3/0 "
100127
fi
101128

102-
# for ipu passthrough - ipu related i2c 0:16.0
103-
# please use virtual slot 22 for i2c 0:16.0 to make sure that the i2c controller
129+
# for ipu passthrough - ipu related i2c
130+
# please use virtual slot 22 for i2c to make sure that the i2c controller
104131
# could get the same virtaul BDF as physical BDF
105-
if [ -d "/sys/bus/pci/devices/0000:00:16.0" ]; then
106-
echo "8086 5aac" > /sys/bus/pci/drivers/pci-stub/new_id
107-
echo "0000:00:16.0" > /sys/bus/pci/devices/0000:00:16.0/driver/unbind
108-
echo "0000:00:16.0" > /sys/bus/pci/drivers/pci-stub/bind
132+
if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}" ]; then
133+
echo ${passthru_vpid["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/new_id
134+
echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}/driver/unbind
135+
echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/bind
109136
boot_ipu_option="$boot_ipu_option"" -s 22,passthru,0/16/0 "
110137
fi
111138
else
@@ -114,18 +141,18 @@ fi
114141

115142
boot_cse_option=""
116143
if [ $cse_passthrough == 1 ]; then
117-
echo "8086 5a9a" > /sys/bus/pci/drivers/pci-stub/new_id
118-
echo "0000:00:0f.0" > /sys/bus/pci/devices/0000:00:0f.0/driver/unbind
119-
echo "0000:00:0f.0" > /sys/bus/pci/drivers/pci-stub/bind
144+
echo ${passthru_vpid["cse"]} > /sys/bus/pci/drivers/pci-stub/new_id
145+
echo ${passthru_bdf["cse"]} > /sys/bus/pci/devices/${passthru_bdf["cse"]}/driver/unbind
146+
echo ${passthru_bdf["cse"]} > /sys/bus/pci/drivers/pci-stub/bind
120147
boot_cse_option="$boot_cse_option"" -s 15,passthru,0/0f/0 "
121148
else
122149
boot_cse_option="$boot_cse_option"" -s 15,virtio-heci,0/0f/0 "
123150
fi
124151

125152
# for sd card passthrough - SDXC/MMC Host Controller 00:1b.0
126-
echo "8086 5aca" > /sys/bus/pci/drivers/pci-stub/new_id
127-
echo "0000:00:1b.0" > /sys/bus/pci/devices/0000:00:1b.0/driver/unbind
128-
echo "0000:00:1b.0" > /sys/bus/pci/drivers/pci-stub/bind
153+
echo ${passthru_vpid["sd_card"]} > /sys/bus/pci/drivers/pci-stub/new_id
154+
echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/devices/${passthru_bdf["sd_card"]}/driver/unbind
155+
echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/drivers/pci-stub/bind
129156

130157
#for memsize setting, total 8GB(>7.5GB) uos->6GB, 4GB(>3.5GB) uos->2GB
131158
memsize=`cat /proc/meminfo|head -n 1|awk '{print $2}'`
@@ -231,41 +258,41 @@ fi
231258

232259
#for VT-d device setting
233260
modprobe pci_stub
234-
echo "8086 5aaa" > /sys/bus/pci/drivers/pci-stub/new_id
235-
echo "0000:00:15.1" > /sys/bus/pci/devices/0000:00:15.1/driver/unbind
236-
echo "0000:00:15.1" > /sys/bus/pci/drivers/pci-stub/bind
261+
echo ${passthru_vpid["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/new_id
262+
echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/devices/${passthru_bdf["usb_xdci"]}/driver/unbind
263+
echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/bind
237264

238265
#for audio device
239266
boot_audio_option=""
240267
if [ $audio_passthrough == 1 ]; then
241-
echo "8086 5a98" > /sys/bus/pci/drivers/pci-stub/new_id
242-
echo "0000:00:0e.0" > /sys/bus/pci/devices/0000:00:0e.0/driver/unbind
243-
echo "0000:00:0e.0" > /sys/bus/pci/drivers/pci-stub/bind
268+
echo ${passthru_vpid["audio"]} > /sys/bus/pci/drivers/pci-stub/new_id
269+
echo ${passthru_bdf["audio"]} > /sys/bus/pci/devices/${passthru_bdf["audio"]}/driver/unbind
270+
echo ${passthru_bdf["audio"]} > /sys/bus/pci/drivers/pci-stub/bind
244271

245272
#for audio codec
246-
echo "8086 5ab4" > /sys/bus/pci/drivers/pci-stub/new_id
247-
echo "0000:00:17.0" > /sys/bus/pci/devices/0000:00:17.0/driver/unbind
248-
echo "0000:00:17.0" > /sys/bus/pci/drivers/pci-stub/bind
273+
echo ${passthru_vpid["audio_codec"]} > /sys/bus/pci/drivers/pci-stub/new_id
274+
echo ${passthru_bdf["audio_codec"]} > /sys/bus/pci/devices/${passthru_bdf["audio_codec"]}/driver/unbind
275+
echo ${passthru_bdf["audio_codec"]} > /sys/bus/pci/drivers/pci-stub/bind
249276

250277
boot_audio_option="-s 14,passthru,0/e/0,keep_gsi -s 23,passthru,0/17/0"
251278
else
252279
boot_audio_option="-s 14,virtio-audio"
253280
fi
254281

255282
# for sd card passthrough - SDXC/MMC Host Controller 00:1b.0
256-
echo "8086 5aca" > /sys/bus/pci/drivers/pci-stub/new_id
257-
echo "0000:00:1b.0" > /sys/bus/pci/devices/0000:00:1b.0/driver/unbind
258-
echo "0000:00:1b.0" > /sys/bus/pci/drivers/pci-stub/bind
283+
echo ${passthru_vpid["sd_card"]} > /sys/bus/pci/drivers/pci-stub/new_id
284+
echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/devices/${passthru_bdf["sd_card"]}/driver/unbind
285+
echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/drivers/pci-stub/bind
259286

260287
# WIFI
261-
echo "11ab 2b38" > /sys/bus/pci/drivers/pci-stub/new_id
262-
echo "0000:03:00.0" > /sys/bus/pci/devices/0000:03:00.0/driver/unbind
263-
echo "0000:03:00.0" > /sys/bus/pci/drivers/pci-stub/bind
288+
echo ${passthru_vpid["wifi"]} > /sys/bus/pci/drivers/pci-stub/new_id
289+
echo ${passthru_bdf["wifi"]} > /sys/bus/pci/devices/${passthru_bdf["wifi"]}/driver/unbind
290+
echo ${passthru_bdf["wifi"]} > /sys/bus/pci/drivers/pci-stub/bind
264291

265292
# Bluetooth passthrough depends on WIFI
266-
echo "8086 5abc" > /sys/bus/pci/drivers/pci-stub/new_id
267-
echo "0000:00:18.0" > /sys/bus/pci/devices/0000:00:18.0/driver/unbind
268-
echo "0000:00:18.0" > /sys/bus/pci/drivers/pci-stub/bind
293+
echo ${passthru_vpid["bluetooth"]} > /sys/bus/pci/drivers/pci-stub/new_id
294+
echo ${passthru_bdf["bluetooth"]} > /sys/bus/pci/devices/${passthru_bdf["bluetooth"]}/driver/unbind
295+
echo ${passthru_bdf["bluetooth"]} > /sys/bus/pci/drivers/pci-stub/bind
269296

270297
# Check if the NPK device/driver is present
271298
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
282309

283310
boot_ipu_option=""
284311
if [ $ipu_passthrough == 1 ];then
285-
# for ipu passthrough - ipu device 0:3.0
286-
if [ -d "/sys/bus/pci/devices/0000:00:03.0" ]; then
287-
echo "8086 5a88" > /sys/bus/pci/drivers/pci-stub/new_id
288-
echo "0000:00:03.0" > /sys/bus/pci/devices/0000:00:03.0/driver/unbind
289-
echo "0000:00:03.0" > /sys/bus/pci/drivers/pci-stub/bind
312+
# for ipu passthrough - ipu device
313+
if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu"]}" ]; then
314+
echo ${passthru_vpid["ipu"]} > /sys/bus/pci/drivers/pci-stub/new_id
315+
echo ${passthru_bdf["ipu"]} > /sys/bus/pci/devices/${passthru_bdf["ipu"]}/driver/unbind
316+
echo ${passthru_bdf["ipu"]} > /sys/bus/pci/drivers/pci-stub/bind
290317
boot_ipu_option="$boot_ipu_option"" -s 12,passthru,0/3/0 "
291318
fi
292319

293-
# for ipu passthrough - ipu related i2c 0:16.0
294-
# please use virtual slot 22 for i2c 0:16.0 to make sure that the i2c controller
320+
# for ipu passthrough - ipu related i2c
321+
# please use virtual slot 22 for i2c to make sure that the i2c controller
295322
# could get the same virtaul BDF as physical BDF
296-
if [ -d "/sys/bus/pci/devices/0000:00:16.0" ]; then
297-
echo "8086 5aac" > /sys/bus/pci/drivers/pci-stub/new_id
298-
echo "0000:00:16.0" > /sys/bus/pci/devices/0000:00:16.0/driver/unbind
299-
echo "0000:00:16.0" > /sys/bus/pci/drivers/pci-stub/bind
323+
if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}" ]; then
324+
echo ${passthru_vpid["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/new_id
325+
echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}/driver/unbind
326+
echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/bind
300327
boot_ipu_option="$boot_ipu_option"" -s 22,passthru,0/16/0 "
301328
fi
302329
else
@@ -305,9 +332,9 @@ fi
305332

306333
boot_cse_option=""
307334
if [ $cse_passthrough == 1 ]; then
308-
echo "8086 5a9a" > /sys/bus/pci/drivers/pci-stub/new_id
309-
echo "0000:00:0f.0" > /sys/bus/pci/devices/0000:00:0f.0/driver/unbind
310-
echo "0000:00:0f.0" > /sys/bus/pci/drivers/pci-stub/bind
335+
echo ${passthru_vpid["cse"]} /sys/bus/pci/drivers/pci-stub/new_id
336+
echo ${passthru_bdf["cse"]} > /sys/bus/pci/devices/${passthru_bdf["cse"]}/driver/unbind
337+
echo ${passthru_bdf["cse"]} > /sys/bus/pci/drivers/pci-stub/bind
311338
boot_cse_option="$boot_cse_option"" -s 15,passthru,0/0f/0 "
312339
else
313340
boot_cse_option="$boot_cse_option"" -s 15,virtio-heci,0/0f/0 "

devicemodel/samples/apl-up2/launch_uos.sh

Lines changed: 66 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,29 @@ if [[ "$major_ver" -lt "2" ]] || \
3232
cse_passthrough=1
3333
fi
3434

35+
# pci devices for passthru
36+
declare -A passthru_vpid
37+
declare -A passthru_bdf
38+
39+
passthru_vpid=(
40+
["usb_xdci"]="8086 5aaa"
41+
["ipu"]="8086 5a88"
42+
["ipu_i2c"]="8086 5aac"
43+
["cse"]="8086 5a9a"
44+
["sd_card"]="8086 5acc"
45+
["audio"]="8086 5a98"
46+
["audio_codec"]="8086 5ab4"
47+
)
48+
passthru_bdf=(
49+
["usb_xdci"]="0000:00:15.1"
50+
["ipu"]="0000:00:03.0"
51+
["ipu_i2c"]="0000:00:16.0"
52+
["cse"]="0000:00:0f.0"
53+
["sd_card"]="0000:00:1c.0"
54+
["audio"]="0000:00:0e.0"
55+
["audio_codec"]="0000:00:17.0"
56+
)
57+
3558
function launch_clearlinux()
3659
{
3760
if [ ! -f "/data/$5/$5.img" ]; then
@@ -72,27 +95,27 @@ fi
7295

7396
#for VT-d device setting
7497
modprobe pci_stub
75-
echo "8086 5aaa" > /sys/bus/pci/drivers/pci-stub/new_id
76-
echo "0000:00:15.1" > /sys/bus/pci/devices/0000:00:15.1/driver/unbind
77-
echo "0000:00:15.1" > /sys/bus/pci/drivers/pci-stub/bind
98+
echo ${passthru_vpid["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/new_id
99+
echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/devices/${passthru_bdf["usb_xdci"]}/driver/unbind
100+
echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/bind
78101

79102
boot_ipu_option=""
80103
if [ $ipu_passthrough == 1 ];then
81104
# for ipu passthrough - ipu device 0:3.0
82-
if [ -d "/sys/bus/pci/devices/0000:00:03.0" ]; then
83-
echo "8086 5a88" > /sys/bus/pci/drivers/pci-stub/new_id
84-
echo "0000:00:03.0" > /sys/bus/pci/devices/0000:00:03.0/driver/unbind
85-
echo "0000:00:03.0" > /sys/bus/pci/drivers/pci-stub/bind
105+
if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu"]}" ]; then
106+
echo ${passthru_vpid["ipu"]} > /sys/bus/pci/drivers/pci-stub/new_id
107+
echo ${passthru_bdf["ipu"]} > /sys/bus/pci/devices/${passthru_bdf["ipu"]}/driver/unbind
108+
echo ${passthru_bdf["ipu"]} > /sys/bus/pci/drivers/pci-stub/bind
86109
boot_ipu_option="$boot_ipu_option"" -s 12,passthru,0/3/0 "
87110
fi
88111

89-
# for ipu passthrough - ipu related i2c 0:16.0
90-
# please use virtual slot 22 for i2c 0:16.0 to make sure that the i2c controller
112+
# for ipu passthrough - ipu related i2c
113+
# please use virtual slot 22 for i2c to make sure that the i2c controller
91114
# could get the same virtaul BDF as physical BDF
92-
if [ -d "/sys/bus/pci/devices/0000:00:16.0" ]; then
93-
echo "8086 5aac" > /sys/bus/pci/drivers/pci-stub/new_id
94-
echo "0000:00:16.0" > /sys/bus/pci/devices/0000:00:16.0/driver/unbind
95-
echo "0000:00:16.0" > /sys/bus/pci/drivers/pci-stub/bind
115+
if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}" ]; then
116+
echo ${passthru_vpid["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/new_id
117+
echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}/driver/unbind
118+
echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/bind
96119
boot_ipu_option="$boot_ipu_option"" -s 22,passthru,0/16/0 "
97120
fi
98121
else
@@ -101,18 +124,18 @@ fi
101124

102125
boot_cse_option=""
103126
if [ $cse_passthrough == 1 ]; then
104-
echo "8086 5a9a" > /sys/bus/pci/drivers/pci-stub/new_id
105-
echo "0000:00:0f.0" > /sys/bus/pci/devices/0000:00:0f.0/driver/unbind
106-
echo "0000:00:0f.0" > /sys/bus/pci/drivers/pci-stub/bind
127+
echo ${passthru_vpid["cse"]} > /sys/bus/pci/drivers/pci-stub/new_id
128+
echo ${passthru_bdf["cse"]} > /sys/bus/pci/devices/${passthru_bdf["cse"]}/driver/unbind
129+
echo ${passthru_bdf["cse"]} > /sys/bus/pci/drivers/pci-stub/bind
107130
boot_cse_option="$boot_cse_option"" -s 15,passthru,0/0f/0 "
108131
else
109132
boot_cse_option="$boot_cse_option"" -s 15,virtio-heci,0/0f/0 "
110133
fi
111134

112-
# for sd card passthrough - SDXC/MMC Host Controller 00:1c.0
113-
# echo "8086 5acc" > /sys/bus/pci/drivers/pci-stub/new_id
114-
# echo "0000:00:1c.0" > /sys/bus/pci/devices/0000:00:1c.0/driver/unbind
115-
# echo "0000:00:1c.0" > /sys/bus/pci/drivers/pci-stub/bind
135+
# for sd card passthrough - SDXC/MMC Host Controller
136+
# echo ${passthru_vpid["sd_card"]} > /sys/bus/pci/drivers/pci-stub/new_id
137+
# echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/devices/${passthru_bdf["sd_card"]}/driver/unbind
138+
# echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/drivers/pci-stub/bind
116139

117140
#for memsize setting, total 8GB(>7.5GB) uos->6GB, 4GB(>3.5GB) uos->2GB
118141
memsize=`cat /proc/meminfo|head -n 1|awk '{print $2}'`
@@ -216,30 +239,30 @@ fi
216239

217240
#for VT-d device setting
218241
modprobe pci_stub
219-
echo "8086 5aaa" > /sys/bus/pci/drivers/pci-stub/new_id
220-
echo "0000:00:15.1" > /sys/bus/pci/devices/0000:00:15.1/driver/unbind
221-
echo "0000:00:15.1" > /sys/bus/pci/drivers/pci-stub/bind
242+
echo ${passthru_vpid["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/new_id
243+
echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/devices/${passthru_bdf["usb_xdci"]}/driver/unbind
244+
echo ${passthru_bdf["usb_xdci"]} > /sys/bus/pci/drivers/pci-stub/bind
222245

223246
#for audio device
224247
boot_audio_option=""
225248
if [ $audio_passthrough == 1 ]; then
226-
echo "8086 5a98" > /sys/bus/pci/drivers/pci-stub/new_id
227-
echo "0000:00:0e.0" > /sys/bus/pci/devices/0000:00:0e.0/driver/unbind
228-
echo "0000:00:0e.0" > /sys/bus/pci/drivers/pci-stub/bind
249+
echo ${passthru_vpid["audio"]} > /sys/bus/pci/drivers/pci-stub/new_id
250+
echo ${passthru_bdf["audio"]} > /sys/bus/pci/devices/${passthru_bdf["audio"]}/driver/unbind
251+
echo ${passthru_bdf["audio"]} > /sys/bus/pci/drivers/pci-stub/bind
229252

230253
#for audio codec
231-
echo "8086 5ab4" > /sys/bus/pci/drivers/pci-stub/new_id
232-
echo "0000:00:17.0" > /sys/bus/pci/devices/0000:00:17.0/driver/unbind
233-
echo "0000:00:17.0" > /sys/bus/pci/drivers/pci-stub/bind
254+
echo ${passthru_vpid["audio_codec"]} > /sys/bus/pci/drivers/pci-stub/new_id
255+
echo ${passthru_bdf["audio_codec"]} > /sys/bus/pci/devices/${passthru_bdf["audio_codec"]}/driver/unbind
256+
echo ${passthru_bdf["audio_codec"]} > /sys/bus/pci/drivers/pci-stub/bind
234257

235258
boot_audio_option="-s 14,passthru,0/e/0,keep_gsi -s 23,passthru,0/17/0"
236259
else
237260
boot_audio_option="-s 14,virtio-audio"
238261
fi
239262
# # for sd card passthrough - SDXC/MMC Host Controller 00:1b.0
240-
# echo "8086 5acc" > /sys/bus/pci/drivers/pci-stub/new_id
241-
# echo "0000:00:1c.0" > /sys/bus/pci/devices/0000:00:1c.0/driver/unbind
242-
# echo "0000:00:1c.0" > /sys/bus/pci/drivers/pci-stub/bind
263+
# echo ${passthru_vpid["sd_card"]} > /sys/bus/pci/drivers/pci-stub/new_id
264+
# echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/devices/${passthru_bdf["sd_card"]}/driver/unbind
265+
# echo ${passthru_bdf["sd_card"]} > /sys/bus/pci/drivers/pci-stub/bind
243266

244267
# Check if the NPK device/driver is present
245268
ls -d /sys/bus/pci/drivers/intel_th_pci/0000* 2>/dev/null 1>/dev/null
@@ -254,21 +277,21 @@ echo on > /sys/devices/pci0000:00/0000:00:15.0/power/control
254277

255278
boot_ipu_option=""
256279
if [ $ipu_passthrough == 1 ];then
257-
# for ipu passthrough - ipu device 0:3.0
258-
if [ -d "/sys/bus/pci/devices/0000:00:03.0" ]; then
259-
echo "8086 5a88" > /sys/bus/pci/drivers/pci-stub/new_id
260-
echo "0000:00:03.0" > /sys/bus/pci/devices/0000:00:03.0/driver/unbind
261-
echo "0000:00:03.0" > /sys/bus/pci/drivers/pci-stub/bind
280+
# for ipu passthrough - ipu device
281+
if [ -d "/sys/bus/pci/devices/${passthru_bdf["ipu"]}" ]; then
282+
echo ${passthru_vpid["ipu"]} > /sys/bus/pci/drivers/pci-stub/new_id
283+
echo ${passthru_bdf["ipu"]} > /sys/bus/pci/devices/${passthru_bdf["ipu"]}/driver/unbind
284+
echo ${passthru_bdf["ipu"]} > /sys/bus/pci/drivers/pci-stub/bind
262285
boot_ipu_option="$boot_ipu_option"" -s 12,passthru,0/3/0 "
263286
fi
264287

265288
# for ipu passthrough - ipu related i2c 0:16.0
266289
# please use virtual slot 22 for i2c 0:16.0 to make sure that the i2c controller
267290
# could get the same virtaul BDF as physical BDF
268291
if [ -d "/sys/bus/pci/devices/0000:00:16.0" ]; then
269-
echo "8086 5aac" > /sys/bus/pci/drivers/pci-stub/new_id
270-
echo "0000:00:16.0" > /sys/bus/pci/devices/0000:00:16.0/driver/unbind
271-
echo "0000:00:16.0" > /sys/bus/pci/drivers/pci-stub/bind
292+
echo ${passthru_vpid["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/new_id
293+
echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/devices/${passthru_bdf["ipu_i2c"]}/driver/unbind
294+
echo ${passthru_bdf["ipu_i2c"]} > /sys/bus/pci/drivers/pci-stub/bind
272295
boot_ipu_option="$boot_ipu_option"" -s 22,passthru,0/16/0 "
273296
fi
274297
else
@@ -277,9 +300,9 @@ fi
277300

278301
boot_cse_option=""
279302
if [ $cse_passthrough == 1 ]; then
280-
echo "8086 5a9a" > /sys/bus/pci/drivers/pci-stub/new_id
281-
echo "0000:00:0f.0" > /sys/bus/pci/devices/0000:00:0f.0/driver/unbind
282-
echo "0000:00:0f.0" > /sys/bus/pci/drivers/pci-stub/bind
303+
echo ${passthru_vpid["cse"]} > /sys/bus/pci/drivers/pci-stub/new_id
304+
echo ${passthru_bdf["cse"]} > /sys/bus/pci/devices/${passthru_bdf["cse"]}/driver/unbind
305+
echo ${passthru_bdf["cse"]} > /sys/bus/pci/drivers/pci-stub/bind
283306
boot_cse_option="$boot_cse_option"" -s 15,passthru,0/0f/0 "
284307
else
285308
boot_cse_option="$boot_cse_option"" -s 15,virtio-heci,0/0f/0 "

0 commit comments

Comments
 (0)