master
py 51 lines 1.5 KB
Raw
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 """
8 Handle ACPI GHESv2 error injection logic QEMU QMP interface.
9 """
10
11 import argparse
12 import sys
13
14 from arm_processor_error import ArmProcessorEinj
15
16 EINJ_DESC = """
17 Handle ACPI GHESv2 error injection logic QEMU QMP interface.
18
19 It allows using UEFI BIOS EINJ features to generate GHES records.
20
21 It helps testing CPER and GHES drivers at the guest OS and how
22 userspace applications at the guest handle them.
23 """
24
25 def 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
50 if __name__ == "__main__":
51 main()