Skip to content

Commit 8464419

Browse files
Wei Liuwenlingz
authored andcommitted
acrn-config: add virtio-block support for launch config
Add virtio-block support to parse and get 'block' item value from launch config files, these values are editable by user. Tracked-On: #4172 Signed-off-by: Wei Liu <weix.w.liu@intel.com> Acked-by: Victor Sun <victor.sun@intel.com>
1 parent 4014028 commit 8464419

File tree

5 files changed

+39
-28
lines changed

5 files changed

+39
-28
lines changed

misc/acrn-config/launch_config/com.py

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,18 @@ def is_nuc_whl_clr(names, vmid):
1717
return False
1818

1919

20-
def is_mount_needed(names, vmid):
21-
uos_type = names['uos_types'][vmid]
22-
if uos_type in ("CLEARLINUX", "ANDROID", "ALIOS") and not is_nuc_whl_clr(names, vmid):
23-
return True
20+
def is_mount_needed(virt_io, vmid):
21+
rootfs_img = ''
22+
blk_dev_list = launch_cfg_lib.get_rootdev_info(launch_cfg_lib.BOARD_INFO_FILE)
23+
if virt_io['block'][vmid]:
24+
if ':' in virt_io['block'][vmid]:
25+
blk_dev = virt_io['block'][vmid].split(':')[0]
26+
rootfs_img = virt_io['block'][vmid].split(':')[1]
27+
else:
28+
blk_dev = virt_io['block'][vmid]
29+
30+
if blk_dev in blk_dev_list and rootfs_img:
31+
return True
2432

2533
return False
2634

@@ -264,7 +272,7 @@ def mem_size_set(args, vmid, config):
264272
print("mem_size={}M".format(mem_size), file=config)
265273

266274

267-
def uos_launch(names, args, vmid, config):
275+
def uos_launch(names, args, virt_io, vmid, config):
268276

269277
gvt_args = args['gvt_args'][vmid]
270278
uos_type = names['uos_types'][vmid]
@@ -294,14 +302,14 @@ def uos_launch(names, args, vmid, config):
294302
if uos_type in ("CLEARLINUX", "WINDOWS"):
295303
print('launch_{} 1 "{}"'.format(launch_uos, gvt_args), file=config)
296304

297-
if is_mount_needed(names, vmid):
305+
if is_mount_needed(virt_io, vmid):
298306
print("", file=config)
299307
print('launch_{} {} "{}" "{}" $debug'.format(launch_uos, vmid, gvt_args, vmid), file=config)
300308
print("", file=config)
301309
print("umount /data", file=config)
302310

303311

304-
def launch_end(names, args, vmid, config):
312+
def launch_end(names, args, virt_io, vmid, config):
305313

306314
board_name = names['board_name']
307315
uos_type = names['uos_types'][vmid]
@@ -327,8 +335,8 @@ def launch_end(names, args, vmid, config):
327335
print("done", file=config)
328336
print("", file=config)
329337

330-
if is_mount_needed(names, vmid):
331-
root_fs = args['rootfs_dev'][vmid]
338+
if is_mount_needed(virt_io, vmid):
339+
root_fs = virt_io['block'][vmid].split(':')[0]
332340

333341
print('if [ ! -b "{}" ]; then'.format(root_fs), file=config)
334342
print(' echo "no {} data partition, exit"'.format(root_fs), file=config)
@@ -341,7 +349,7 @@ def launch_end(names, args, vmid, config):
341349

342350
off_line_cpus(args, vmid, uos_type, config)
343351

344-
uos_launch(names, args, vmid, config)
352+
uos_launch(names, args, virt_io, vmid, config)
345353

346354

347355
def set_dm_pt(names, sel, vmid, config):
@@ -413,23 +421,26 @@ def xhci_args_set(dm, vmid, config):
413421
launch_cfg_lib.virtual_dev_slot("xhci"), dm['xhci'][vmid]), file=config)
414422

415423

416-
def vritio_args_set(virt_io, vmid, config):
424+
def virtio_args_set(dm, virt_io, vmid, config):
417425

418426
# virtio-input set, the value type is a list
419427
for input_val in virt_io['input'][vmid]:
420428
if input_val:
421429
print(" -s {},virtio-input,{} \\".format(
422430
launch_cfg_lib.virtual_dev_slot("virtio-input{}".format(input_val)), input_val), file=config)
423431

432+
# virtio-blk set, the value type is a list
433+
for blk in virt_io['block'][vmid]:
434+
if blk:
435+
print(" -s {},virtio-blk,{} \\".format(launch_cfg_lib.virtual_dev_slot("virtio-blk{}".format(blk)), blk.strip(':')), file=config)
436+
424437

425438
def dm_arg_set(names, sel, virt_io, dm, vmid, config):
426439

427440
uos_type = names['uos_types'][vmid]
428441
board_name = names['board_name']
429442

430-
# vboot loader for vsbl
431443
boot_image_type(dm, vmid, config)
432-
root_img = dm['rootfs_img'][vmid]
433444

434445
# uuid get
435446
scenario_uuid = launch_cfg_lib.get_scenario_uuid()
@@ -495,7 +506,7 @@ def dm_arg_set(names, sel, virt_io, dm, vmid, config):
495506
xhci_args_set(dm, vmid, config)
496507

497508
# VIRTIO args set
498-
vritio_args_set(virt_io, vmid, config)
509+
virtio_args_set(dm, virt_io, vmid, config)
499510

500511
# GVT args set
501512
gvt_arg_set(uos_type, config)
@@ -529,12 +540,6 @@ def dm_arg_set(names, sel, virt_io, dm, vmid, config):
529540

530541
if not is_nuc_whl_clr(names, vmid):
531542
print(" -s {},wdt-i6300esb \\".format(launch_cfg_lib.virtual_dev_slot("wdt-i6300esb")), file=config)
532-
#print(" -s {},xhci,1-1:1-2:1-3:2-1:2-2:2-3:cap=apl \\".format(launch_cfg_lib.virtual_dev_slot("xhci")), file=config)
533-
534-
if dm['vbootloader'][vmid] and dm['vbootloader'][vmid] == "vsbl":
535-
print(" -s {},virtio-blk$boot_dev_flag,/data/{} \\".format(launch_cfg_lib.virtual_dev_slot("virtio-blk"), root_img), file=config)
536-
elif dm['vbootloader'][vmid] and dm['vbootloader'][vmid] == "ovmf":
537-
print(" -s {},virtio-blk,{} \\".format(launch_cfg_lib.virtual_dev_slot("virtio-blk"), root_img), file=config)
538543

539544
if uos_type in ("ANDROID", "ALIOS"):
540545
print(" --enable_trusty \\", file=config)
@@ -568,4 +573,4 @@ def gen(names, pt_sel, virt_io, dm, vmid, config):
568573
dm_arg_set(names, pt_sel, virt_io, dm, vmid, config)
569574

570575
# gen launch end
571-
launch_end(names, dm, vmid, config)
576+
launch_end(names, dm, virt_io, vmid, config)

misc/acrn-config/launch_config/launch_cfg_gen.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ def get_launch_item_values(board_info):
4343
# acrn dm available optargs
4444
launch_item_values['uos,uos_type'] = launch_cfg_lib.UOS_TYPES
4545
launch_item_values["uos,rtos_type"] = launch_cfg_lib.RTOS_TYPE
46-
launch_item_values["uos,rootfs_dev"] = launch_cfg_lib.get_rootdev_info(board_info)
4746

4847
launch_item_values["uos,vbootloader"] = launch_cfg_lib.BOOT_TYPE
4948
launch_item_values['uos,console_type'] = launch_cfg_lib.REDIRECT_CONSOLE

misc/acrn-config/launch_config/launch_item.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ def get_args(self):
1818
self.args["rtos_type"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "rtos_type")
1919
self.args["mem_size"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "mem_size")
2020
self.args["gvt_args"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "gvt_args")
21-
self.args["rootfs_dev"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "rootfs_dev")
22-
self.args["rootfs_img"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "rootfs_img")
2321
self.args["vbootloader"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "vbootloader")
2422
self.args["console_type"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "console_type")
2523
self.args["off_pcpus"] = launch_cfg_lib.get_leaf_tag_map(self.scenario_info, "vcpu_affinity", "pcpu_id")
@@ -33,7 +31,6 @@ def check_item(self):
3331
launch_cfg_lib.args_aval_check(self.args["gvt_args"], "gvt_args", launch_cfg_lib.GVT_ARGS)
3432
launch_cfg_lib.args_aval_check(self.args["vbootloader"], "vbootloader", launch_cfg_lib.BOOT_TYPE)
3533
launch_cfg_lib.args_aval_check(self.args["console_type"], "console_type", launch_cfg_lib.REDIRECT_CONSOLE)
36-
launch_cfg_lib.args_aval_check(self.args["rootfs_dev"], "rootfs_dev", rootfs)
3734

3835

3936
class AvailablePthru():
@@ -153,3 +150,4 @@ def __init__(self, launch_info):
153150

154151
def get_virtio(self):
155152
self.dev["input"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "virtio_devices", "input")
153+
self.dev["block"] = launch_cfg_lib.get_leaf_tag_map(self.launch_info, "virtio_devices", "block")

misc/acrn-config/library/common.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
START_HPA_SIZE_LIST = ['0x20000000', '0x40000000', '0x80000000', 'CONFIG_SOS_RAM_SIZE', 'VM0_MEM_SIZE']
2424

2525

26-
MULTI_ITEM = ["guest_flag", "pcpu_id", "input"]
26+
MULTI_ITEM = ["guest_flag", "pcpu_id", "input", "block"]
2727

2828

2929
class MultiItem():
@@ -32,6 +32,7 @@ def __init__(self):
3232
self.guest_flag = []
3333
self.pcpu_id = []
3434
self.vir_input = []
35+
self.vir_block = []
3536
self.vir_console = []
3637
self.vir_net = []
3738

@@ -415,6 +416,10 @@ def get_leaf_value(tmp, tag_str, leaf):
415416
if leaf.tag == "input" and tag_str == "input":
416417
tmp.multi.vir_input.append(leaf.text)
417418

419+
# get virtio-blk for vm
420+
if leaf.tag == "block" and tag_str == "block":
421+
tmp.multi.vir_block.append(leaf.text)
422+
418423

419424
def get_sub_value(tmp, tag_str, vm_id):
420425

@@ -427,10 +432,14 @@ def get_sub_value(tmp, tag_str, vm_id):
427432
if tmp.multi.pcpu_id and tag_str == "pcpu_id":
428433
tmp.tag[vm_id] = tmp.multi.pcpu_id
429434

430-
# append input for vm
435+
# append virtio input for vm
431436
if tmp.multi.vir_input and tag_str == "input":
432437
tmp.tag[vm_id] = tmp.multi.vir_input
433438

439+
# append virtio block for vm
440+
if tmp.multi.vir_block and tag_str == "block":
441+
tmp.tag[vm_id] = tmp.multi.vir_block
442+
434443

435444
def get_leaf_tag_map(config_file, branch_tag, tag_str):
436445
"""

misc/acrn-config/library/launch_cfg_lib.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ def args_aval_check(arg_list, item, avl_list):
461461
"""
462462
# args should be set into launch xml from webUI
463463
i_cnt = 1
464-
skip_check_list = ['gvt_args', 'rootfs_dev']
464+
skip_check_list = ['gvt_args']
465465
if item in skip_check_list:
466466
return
467467

0 commit comments

Comments
 (0)