mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-01-05 07:35:31 +00:00
config-tools: allow SERIAL_CONSOLE to use any native ttyS#
Remove the restriction that SERIAL_CONSOLE needs to be ttys0, ttys1, ttys2 or ttys3. 1. Lossen the restriction in xsd. 2. Rewrite the document. 3. Refine the intx.py. Refine the logic which take effect if the <irq> is specified in "SOS_COM#_IRQ" for SOS VM's legacy vuart 0. Tracked-On: #6610 Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com>
This commit is contained in:
@@ -50,6 +50,23 @@ def create_vuart_irq_node(etree, vm_id, vm_type, vuart_id, irq):
|
||||
|
||||
common.append_node(f"./legacy_vuart[@id = '{vuart_id}']/irq", irq, allocation_vm_node)
|
||||
|
||||
def assign_legacy_vuart_irqs(vm_node, legacy_vuart_id, irq_list):
|
||||
legacy_vuart_node_irq_text = common.get_node(f"legacy_vuart[@id = '{legacy_vuart_id}']/irq/text()", vm_node)
|
||||
legacy_vuart_irq = ''
|
||||
if legacy_vuart_node_irq_text == 'COM1_IRQ' or legacy_vuart_node_irq_text == 'SOS_COM1_IRQ' \
|
||||
or legacy_vuart_node_irq_text == 'COM3_IRQ' or legacy_vuart_node_irq_text == 'SOS_COM3_IRQ':
|
||||
legacy_vuart_irq = '4'
|
||||
if legacy_vuart_irq in irq_list:
|
||||
remove_irq(irq_list, legacy_vuart_irq)
|
||||
elif legacy_vuart_node_irq_text == 'COM2_IRQ' or legacy_vuart_node_irq_text == 'SOS_COM2_IRQ' \
|
||||
or legacy_vuart_node_irq_text == 'COM4_IRQ' or legacy_vuart_node_irq_text == 'SOS_COM4_IRQ':
|
||||
legacy_vuart_irq = '3'
|
||||
if legacy_vuart_irq in irq_list:
|
||||
remove_irq(irq_list, legacy_vuart_irq)
|
||||
else:
|
||||
legacy_vuart_irq = alloc_irq(irq_list)
|
||||
return legacy_vuart_irq
|
||||
|
||||
def alloc_legacy_vuart_irqs(board_etree, scenario_etree, allocation_etree):
|
||||
native_ttys = lib.lib.get_native_ttys()
|
||||
hv_debug_console = lib.lib.parse_hv_console(scenario_etree)
|
||||
@@ -59,7 +76,7 @@ def alloc_legacy_vuart_irqs(board_etree, scenario_etree, allocation_etree):
|
||||
vm_type = common.get_node("./vm_type/text()", vm_node)
|
||||
irq_list = get_native_valid_irq() if vm_type == "SOS_VM" else [f"{d}" for d in list(range(1,15))]
|
||||
legacy_vuart_id_list = vm_node.xpath("legacy_vuart[base != 'INVALID_COM_BASE']/@id")
|
||||
legacy_vuart_irq = -1
|
||||
legacy_vuart_irq = ''
|
||||
for legacy_vuart_id in legacy_vuart_id_list:
|
||||
if legacy_vuart_id == '0' and vm_type == "SOS_VM":
|
||||
if hv_debug_console in native_ttys.keys():
|
||||
@@ -68,23 +85,11 @@ def alloc_legacy_vuart_irqs(board_etree, scenario_etree, allocation_etree):
|
||||
if legacy_vuart_irq in irq_list:
|
||||
remove_irq(irq_list, legacy_vuart_irq)
|
||||
else:
|
||||
legacy_vuart_irq = alloc_irq(irq_list)
|
||||
legacy_vuart_irq = assign_legacy_vuart_irqs(vm_node, legacy_vuart_id, irq_list)
|
||||
else:
|
||||
raise lib.error.ResourceError(f"{hv_debug_console} is not in the native environment! The ttyS available are: {native_ttys.keys()}")
|
||||
else:
|
||||
legacy_vuart_node_irq_text = common.get_node(f"legacy_vuart[@id = '{legacy_vuart_id}']/irq/text()", vm_node)
|
||||
if legacy_vuart_node_irq_text == 'COM1_IRQ' or legacy_vuart_node_irq_text == 'SOS_COM1_IRQ' \
|
||||
or legacy_vuart_node_irq_text == 'COM3_IRQ' or legacy_vuart_node_irq_text == 'SOS_COM3_IRQ':
|
||||
legacy_vuart_irq = '4'
|
||||
if legacy_vuart_irq in irq_list:
|
||||
remove_irq(irq_list, legacy_vuart_irq)
|
||||
elif legacy_vuart_node_irq_text == 'COM2_IRQ' or legacy_vuart_node_irq_text == 'SOS_COM2_IRQ' \
|
||||
or legacy_vuart_node_irq_text == 'COM4_IRQ' or legacy_vuart_node_irq_text == 'SOS_COM4_IRQ':
|
||||
legacy_vuart_irq = '3'
|
||||
if legacy_vuart_irq in irq_list:
|
||||
remove_irq(irq_list, legacy_vuart_irq)
|
||||
else:
|
||||
legacy_vuart_irq = alloc_irq(irq_list)
|
||||
legacy_vuart_irq = assign_legacy_vuart_irqs(vm_node, legacy_vuart_id, irq_list)
|
||||
|
||||
create_vuart_irq_node(allocation_etree, common.get_node("./@id", vm_node), vm_type, legacy_vuart_id, legacy_vuart_irq)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user