| #!/usr/bin/env python3 |
| # |
| # SPDX-License-Identifier: GPL-2.0-or-later |
| # |
| # Copyright (C) 2024-2025 Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
| |
| """ |
| Handle ACPI GHESv2 error injection logic QEMU QMP interface. |
| """ |
| |
| import argparse |
| import sys |
| |
| from arm_processor_error import ArmProcessorEinj |
| |
| EINJ_DESC = """ |
| Handle ACPI GHESv2 error injection logic QEMU QMP interface. |
| |
| It allows using UEFI BIOS EINJ features to generate GHES records. |
| |
| It helps testing CPER and GHES drivers at the guest OS and how |
| userspace applications at the guest handle them. |
| """ |
| |
| def main(): |
| """Main program""" |
| |
| # Main parser - handle generic args like QEMU QMP TCP socket options |
| parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, |
| usage="%(prog)s [options]", |
| description=EINJ_DESC) |
| |
| g_options = parser.add_argument_group("QEMU QMP socket options") |
| g_options.add_argument("-H", "--host", default="localhost", type=str, |
| help="host name") |
| g_options.add_argument("-P", "--port", default=4445, type=int, |
| help="TCP port number") |
| g_options.add_argument('-d', '--debug', action='store_true') |
| |
| subparsers = parser.add_subparsers() |
| |
| ArmProcessorEinj(subparsers) |
| |
| args = parser.parse_args() |
| if "func" in args: |
| args.func(args) |
| else: |
| sys.exit(f"Please specify a valid command for {sys.argv[0]}") |
| |
| if __name__ == "__main__": |
| main() |