1#!/usr/bin/env python3 2# 3# SPDX-License-Identifier: GPL-2.0-or-later 4# 5# Copyright (C) 2024-2025 Mauro Carvalho Chehab <mchehab+huawei@kernel.org> 6 7""" 8Handle ACPI GHESv2 error injection logic QEMU QMP interface. 9""" 10 11import argparse 12import sys 13 14from arm_processor_error import ArmProcessorEinj 15 16EINJ_DESC = """ 17Handle ACPI GHESv2 error injection logic QEMU QMP interface. 18 19It allows using UEFI BIOS EINJ features to generate GHES records. 20 21It helps testing CPER and GHES drivers at the guest OS and how 22userspace applications at the guest handle them. 23""" 24 25def main(): 26 """Main program""" 27 28 # Main parser - handle generic args like QEMU QMP TCP socket options 29 parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, 30 usage="%(prog)s [options]", 31 description=EINJ_DESC) 32 33 g_options = parser.add_argument_group("QEMU QMP socket options") 34 g_options.add_argument("-H", "--host", default="localhost", type=str, 35 help="host name") 36 g_options.add_argument("-P", "--port", default=4445, type=int, 37 help="TCP port number") 38 g_options.add_argument('-d', '--debug', action='store_true') 39 40 subparsers = parser.add_subparsers() 41 42 ArmProcessorEinj(subparsers) 43 44 args = parser.parse_args() 45 if "func" in args: 46 args.func(args) 47 else: 48 sys.exit(f"Please specify a valid command for {sys.argv[0]}") 49 50if __name__ == "__main__": 51 main() 52