diff --git a/misc/config_tools/hv_config/board_defconfig.py b/misc/config_tools/hv_config/board_defconfig.py index b8769043d..71daa3d67 100644 --- a/misc/config_tools/hv_config/board_defconfig.py +++ b/misc/config_tools/hv_config/board_defconfig.py @@ -21,6 +21,7 @@ def get_serial_type(): ttys_type = '' ttys_value = '' pci_mmio = False + width = None # Only set if width field is found # Get ttySx information from board config file ttys_lines = board_cfg_lib.get_info(acrn_config_utilities.BOARD_INFO_FILE, "", "") @@ -34,20 +35,34 @@ def get_serial_type(): for line in ttys_lines: if ttyn in line: # line format: - # seri:/dev/ttyS0 type:portio base:0x3F8 irq:4 - # seri:/dev/ttyS0 type:mmio base:0xB3640000 irq:4 [bdf:"0:x.y"] - ttys_type = line.split()[1].split(':')[1] + # seri:/dev/ttyS0 type:portio base:0x3F8 [width:1byte] irq:4 + # seri:/dev/ttyS0 type:mmio base:0xB3640000 [width:1byte] irq:4 [bdf:"0:x.y"] + parts = line.split() + ttys_type = parts[1].split(':')[1] + + # Parse width if present + for part in parts: + if part.startswith('width:'): + width_str = part.split(':')[1] + if 'byte' in width_str: + width = int(width_str.replace('byte', '')) + break + if ttys_type == "portio": - ttys_value = line.split()[2].split(':')[1] + ttys_value = parts[2].split(':')[1] elif ttys_type == "mmio": if 'bdf' in line: - ttys_value = line.split()[-1].split('"')[1:-1][0] - pci_mmio = True + # Find the bdf field specifically + for part in parts: + if part.startswith('bdf:'): + ttys_value = part.split('"')[1] + pci_mmio = True + break else: - ttys_value = line.split()[2].split(':')[1] + ttys_value = parts[2].split(':')[1] break - return (ttys_type, ttys_value, pci_mmio) + return (ttys_type, ttys_value, pci_mmio, width) def get_memory(hv_info, config): @@ -66,7 +81,7 @@ def get_memory(hv_info, config): def get_serial_console(config): - (serial_type, serial_value, pci_mmio) = get_serial_type() + (serial_type, serial_value, pci_mmio, width) = get_serial_type() if serial_type == "portio": print("CONFIG_SERIAL_LEGACY=y", file=config) print("CONFIG_SERIAL_PIO_BASE={}".format(serial_value), file=config) @@ -83,6 +98,10 @@ def get_serial_console(config): if serial_value: print('CONFIG_SERIAL_MMIO_BASE={}'.format(serial_value), file=config) + # Only output width configuration if width field was found + if width is not None: + print("CONFIG_SERIAL_REG_WIDTH={}".format(width), file=config) + def get_features(hv_info, config): print("CONFIG_{}=y".format(hv_info.features.scheduler), file=config) diff --git a/misc/config_tools/static_allocators/lib/lib.py b/misc/config_tools/static_allocators/lib/lib.py index 491242147..a7bea2a38 100644 --- a/misc/config_tools/static_allocators/lib/lib.py +++ b/misc/config_tools/static_allocators/lib/lib.py @@ -80,14 +80,24 @@ def get_native_ttys(): for tty_line in ttys_lines: tmp_dic = {} #seri:/dev/ttySx type:mmio base:0x91526000 irq:4 [bdf:"00:18.0"] + #seri:/dev/ttySx type:mmio base:0x91526000 width:1byte irq:4 [bdf:"00:18.0"] #seri:/dev/ttySy type:portio base:0x2f8 irq:5 - tty = tty_line.split('/')[2].split()[0] - ttys_type = tty_line.split()[1].split(':')[1].strip() - ttys_base = tty_line.split()[2].split(':')[1].strip() - ttys_irq = tty_line.split()[3].split(':')[1].strip() + parts = tty_line.split() + tty = parts[0].split('/')[2] + ttys_type = parts[1].split(':')[1].strip() + ttys_base = parts[2].split(':')[1].strip() + + # Find irq field by looking for "irq:" prefix + ttys_irq = None + for part in parts: + if part.startswith('irq:'): + ttys_irq = part.split(':')[1].strip() + break + tmp_dic['type'] = ttys_type tmp_dic['base'] = ttys_base - tmp_dic['irq'] = int(ttys_irq) + if ttys_irq is not None: + tmp_dic['irq'] = int(ttys_irq) native_ttys[tty] = tmp_dic return native_ttys diff --git a/misc/config_tools/xforms/config_common.xsl b/misc/config_tools/xforms/config_common.xsl index 3f919f3be..653d57be2 100644 --- a/misc/config_tools/xforms/config_common.xsl +++ b/misc/config_tools/xforms/config_common.xsl @@ -216,6 +216,8 @@ + + @@ -264,6 +266,14 @@ + + + + + + + +