# -*- Mode: Python -*-
# vim: filetype=python
#
# Copyright (C) 2018 Red Hat, Inc.
#
# Authors:
#  Daniel P. Berrange <berrange@redhat.com>
#  Laszlo Ersek <lersek@redhat.com>
#
# This work is licensed under the terms of the GNU GPL, version 2 or
# later. See the COPYING file in the top-level directory.

##
# ********
# Firmware
# ********
##

{ 'pragma': {
    'member-name-exceptions': [
        'FirmwareArchitecture' # x86_64
    ] } }

##
# @FirmwareOSInterface:
#
# Lists the firmware-OS interface types provided by various firmware
# that is commonly used with QEMU virtual machines.
#
# @bios: Traditional x86 BIOS interface.  For example, firmware built
#     from the SeaBIOS project usually provides this interface.
#
# @openfirmware: The interface is defined by the (historical) IEEE
#     1275-1994 standard.  Examples for firmware projects that provide
#     this interface are: OpenBIOS and SLOF.
#
# @uboot: Firmware interface defined by the U-Boot project.
#
# @uefi: Firmware interface defined by the UEFI specification.  For
#     example, firmware built from the edk2 (EFI Development Kit II)
#     project usually provides this interface.
#
# Since: 3.0
##
{ 'enum' : 'FirmwareOSInterface',
  'data' : [ 'bios', 'openfirmware', 'uboot', 'uefi' ] }

##
# @FirmwareDevice:
#
# Defines the device types that firmware can be mapped into.
#
# @flash: The firmware executable and its accompanying NVRAM file are
#     to be mapped into a pflash chip each.
#
# @kernel: The firmware is to be loaded like a Linux kernel.  This is
#     similar to @memory but may imply additional processing that is
#     specific to the target architecture and machine type.
#
# @memory: The firmware is to be mapped into memory.
#
# @igvm: The firmware is defined by a file conforming to the IGVM
#     specification and mapped into memory according to directives
#     defined in the file.  This is similar to @memory but may include
#     additional processing defined by the IGVM file including initial
#     CPU state or population of metadata into the guest address
#     space.  Since: 10.1
#
# Since: 3.0
##
{ 'enum' : 'FirmwareDevice',
  'data' : [ 'flash', 'kernel', 'memory', 'igvm' ] }

##
# @FirmwareArchitecture:
#
# Enumeration of architectures for which Qemu uses additional firmware
# files.
#
# @aarch64: 64-bit Arm.
#
# @arm: 32-bit Arm.
#
# @i386: 32-bit x86.
#
# @loongarch64: 64-bit LoongArch.  (since: 7.1)
#
# @riscv64: 64-bit RISC-V.
#
# @x86_64: 64-bit x86.
#
# Since: 3.0
##
{ 'enum' : 'FirmwareArchitecture',
  'data' : [ 'aarch64', 'arm', 'i386', 'loongarch64', 'riscv64', 'x86_64' ] }

##
# @FirmwareTarget:
#
# Defines the machine types that firmware may execute on.
#
# @architecture: Determines the emulation target (the QEMU system
#     emulator) that can execute the firmware.
#
# @machines: Lists the machine types (known by the emulator that is
#     specified through @architecture) that can execute the firmware.
#     Elements of @machines are supposed to be concrete machine types,
#     not aliases.  Glob patterns are understood, which is especially
#     useful for versioned machine types.  (For example, the glob
#     pattern "pc-i440fx-*" matches "pc-i440fx-2.12".) On the QEMU
#     command line, "-machine type=..." specifies the requested
#     machine type (but that option does not accept glob patterns).
#
# Since: 3.0
##
{ 'struct' : 'FirmwareTarget',
  'data'   : { 'architecture' : 'FirmwareArchitecture',
               'machines'     : [ 'str' ] } }

##
# @FirmwareFeature:
#
# Defines the features that firmware may support, and the platform
# requirements that firmware may present.
#
# @acpi-s3: The firmware supports S3 sleep (suspend to RAM), as
#     defined in the ACPI specification.  On the "pc-i440fx-*" machine
#     types of the @i386 and @x86_64 emulation targets, S3 can be
#     enabled with "-global PIIX4_PM.disable_s3=0" and disabled with
#     "-global PIIX4_PM.disable_s3=1".  On the "pc-q35-*" machine
#     types of the @i386 and @x86_64 emulation targets, S3 can be
#     enabled with "-global ICH9-LPC.disable_s3=0" and disabled with
#     "-global ICH9-LPC.disable_s3=1".
#
# @acpi-s4: The firmware supports S4 hibernation (suspend to disk), as
#     defined in the ACPI specification.  On the "pc-i440fx-*" machine
#     types of the @i386 and @x86_64 emulation targets, S4 can be
#     enabled with "-global PIIX4_PM.disable_s4=0" and disabled with
#     "-global PIIX4_PM.disable_s4=1".  On the "pc-q35-*" machine
#     types of the @i386 and @x86_64 emulation targets, S4 can be
#     enabled with "-global ICH9-LPC.disable_s4=0" and disabled with
#     "-global ICH9-LPC.disable_s4=1".
#
# @amd-sev: The firmware supports running under AMD Secure Encrypted
#     Virtualization, as specified in the AMD64 Architecture
#     Programmer's Manual.  QEMU command line options related to this
#     feature are documented in
#     "docs/system/i386/amd-memory-encryption.rst".
#
# @amd-sev-es: The firmware supports running under AMD Secure
#     Encrypted Virtualization - Encrypted State, as specified in the
#     AMD64 Architecture Programmer's Manual.  QEMU command line
#     options related to this feature are documented in
#     "docs/system/i386/amd-memory-encryption.rst".
#
# @amd-sev-snp: The firmware supports running under AMD Secure
#     Encrypted Virtualization - Secure Nested Paging, as specified in
#     the AMD64 Architecture Programmer's Manual.  QEMU command line
#     options related to this feature are documented in
#     "docs/system/i386/amd-memory-encryption.rst".
#
# @intel-tdx: The firmware supports running under Intel Trust Domain
#     Extensions (TDX).
#
# @enrolled-keys: The variable store (NVRAM) template associated with
#     the firmware binary has the UEFI Secure Boot operational mode
#     turned on, with certificates enrolled.
#
# @requires-smm: The firmware requires the platform to emulate SMM
#     (System Management Mode), as defined in the AMD64 Architecture
#     Programmer's Manual, and in the Intel(R)64 and IA-32
#     Architectures Software Developer's Manual.  On the "pc-q35-*"
#     machine types of the @i386 and @x86_64 emulation targets, SMM
#     emulation can be enabled with "-machine smm=on".  (On the
#     "pc-q35-*" machine types of the @i386 emulation target,
#     @requires-smm presents further CPU requirements; one combination
#     known to work is "-cpu coreduo,nx=off".) If the firmware is
#     marked as both @secure-boot and @requires-smm, then write
#     accesses to the pflash chip (NVRAM) that holds the UEFI variable
#     store must be restricted to code that executes in SMM, using the
#     additional option "-global
#     driver=cfi.pflash01,property=secure,value=on".  Furthermore, a
#     large guest-physical address space (comprising guest RAM, memory
#     hotplug range, and 64-bit PCI MMIO aperture), and/or a high VCPU
#     count, may present high SMRAM requirements from the firmware.
#     On the "pc-q35-*" machine types of the @i386 and @x86_64
#     emulation targets, the SMRAM size may be increased above the
#     default 16MB with the "-global mch.extended-tseg-mbytes=uint16"
#     option.  As a rule of thumb, the default 16MB size suffices for
#     1TB of guest-phys address space and a few tens of VCPUs; for
#     every further TB of guest-phys address space, add 8MB of SMRAM.
#     48MB should suffice for 4TB of guest-phys address space and 2-3
#     hundred VCPUs.
#
# @secure-boot: The firmware implements the software interfaces for
#     UEFI Secure Boot, as defined in the UEFI specification.  Note
#     that without @requires-smm, guest code running with kernel
#     privileges can undermine the security of Secure Boot.
#
# @verbose-dynamic: When firmware log capture is enabled, the firmware
#     logs a large amount of debug messages, which may impact boot
#     performance.  With log capture disabled, there is no boot
#     performance impact.  On the "pc-i440fx-*" and "pc-q35-*" machine
#     types of the @i386 and @x86_64 emulation targets, firmware log
#     capture can be enabled with the QEMU command line options
#     "-chardev file,id=fwdebug,path=LOGFILEPATH -device
#     isa-debugcon,iobase=0x402,chardev=fwdebug".  @verbose-dynamic is
#     mutually exclusive with @verbose-static.
#
# @verbose-static: The firmware unconditionally produces a large
#     amount of debug messages, which may impact boot performance.
#     This feature may typically be carried by certain UEFI firmware
#     for the "virt-*" machine types of the @arm and @aarch64
#     emulation targets, where the debug messages are written to the
#     first (always present) PL011 UART.  @verbose-static is mutually
#     exclusive with @verbose-dynamic.
#
# @host-uefi-vars: The firmware expects the host to provide an uefi
#     variable store.  qemu supports that via "uefi-vars-sysbus"
#     (aarch64, riscv64, loongarch64) or "uefi-vars-x64" (x86_64)
#     devices.  The firmware will not use flash for nvram.  When
#     loading the firmware into flash the 'stateless' setup should be
#     used.  It is recommened to load the firmware into memory though.
#
# Since: 3.0
##
{ 'enum' : 'FirmwareFeature',
  'data' : [ 'acpi-s3', 'acpi-s4',
             'amd-sev', 'amd-sev-es', 'amd-sev-snp',
             'intel-tdx',
             'enrolled-keys', 'requires-smm',
             'secure-boot', 'host-uefi-vars',
             'verbose-dynamic', 'verbose-static' ] }

##
# @FirmwareFormat:
#
# Formats that are supported for firmware images.
#
# @raw: Raw disk image format.
#
# @qcow2: The QCOW2 image format.
#
# Since: 3.0
##
{ 'enum': 'FirmwareFormat',
  'data': [ 'raw', 'qcow2' ] }

##
# @FirmwareFlashFile:
#
# Defines common properties that are necessary for loading a firmware
# file into a pflash chip.  The corresponding QEMU command line option
# is "-drive file=@filename,format=@format".  Note however that the
# option-argument shown here is incomplete; it is completed under
# @FirmwareMappingFlash.
#
# @filename: Specifies the filename on the host filesystem where the
#     firmware file can be found.
#
# @format: Specifies the block format of the file pointed-to by
#     @filename, such as @raw or @qcow2.
#
# Since: 3.0
##
{ 'struct' : 'FirmwareFlashFile',
  'data'   : { 'filename' : 'str',
               'format'   : 'FirmwareFormat' } }


##
# @FirmwareFlashMode:
#
# Describes how the firmware build handles code versus variable
# persistence.
#
# @split: the executable file contains code while the NVRAM template
#     provides variable storage.  The executable must be configured
#     read-only and can be shared between multiple guests.  The NVRAM
#     template must be cloned for each new guest and configured
#     read-write.
#
# @combined: the executable file contains both code and variable
#     storage.  The executable must be cloned for each new guest and
#     configured read-write.  No NVRAM template will be specified.
#
# @stateless: the executable file contains code and variable storage
#     is not persisted.  The executable must be configured read-only
#     and can be shared between multiple guests.  No NVRAM template
#     will be specified.
#
# Since: 7.0.0
##
{ 'enum': 'FirmwareFlashMode',
  'data': [ 'split', 'combined', 'stateless' ] }

##
# @FirmwareMappingFlash:
#
# Describes loading and mapping properties for the firmware executable
# and its accompanying NVRAM file, when @FirmwareDevice is @flash.
#
# @mode: Describes how the firmware build handles code versus variable
#     storage.  If not present, it must be treated as if it was
#     configured with value @split.  Since: 7.0.0
#
# @executable: Identifies the firmware executable.  The @mode
#     indicates whether there will be an associated NVRAM template
#     present.  The preferred corresponding QEMU command line options
#     are
#
#     ::
#
#         -drive if=none,id=pflash0,readonly=on,file=@executable.@filename,format=@executable.@format
#         -machine pflash0=pflash0
#
#     or equivalent -blockdev instead of -drive.  When @mode is
#     @combined the executable must be cloned before use and
#     configured with readonly=off.  With QEMU versions older than
#     4.0, you have to use
#
#     ::
#
#         -drive if=pflash,unit=0,readonly=on,file=@executable.@filename,format=@executable.@format
#
# @nvram-template: Identifies the NVRAM template compatible with
#     @executable, when @mode is set to @split, otherwise it should
#     not be present.  Management software instantiates an individual
#     copy -- a specific NVRAM file -- from @nvram-template.@filename
#     for each new virtual machine definition created.
#     @nvram-template.@filename itself is never mapped into virtual
#     machines, only individual copies of it are.  An NVRAM file is
#     typically used for persistently storing the non-volatile UEFI
#     variables of a virtual machine definition.  The preferred
#     corresponding QEMU command line options are
#
#     ::
#
#         -drive if=none,id=pflash1,readonly=off,file=FILENAME_OF_PRIVATE_NVRAM_FILE,format=@nvram-template.@format
#         -machine pflash1=pflash1
#
#     or equivalent -blockdev instead of -drive.  With QEMU versions
#     older than 4.0, you have to use
#
#     ::
#
#         -drive if=pflash,unit=1,readonly=off,file=FILENAME_OF_PRIVATE_NVRAM_FILE,format=@nvram-template.@format
#
# Since: 3.0
##
{ 'struct' : 'FirmwareMappingFlash',
  'data'   : { '*mode': 'FirmwareFlashMode',
               'executable'     : 'FirmwareFlashFile',
               '*nvram-template' : 'FirmwareFlashFile' } }

##
# @FirmwareMappingKernel:
#
# Describes loading and mapping properties for the firmware
# executable, when @FirmwareDevice is @kernel.
#
# @filename: Identifies the firmware executable.  The firmware
#     executable may be shared by multiple virtual machine
#     definitions.  The corresponding QEMU command line option is
#     "-kernel @filename".
#
# Since: 3.0
##
{ 'struct' : 'FirmwareMappingKernel',
  'data'   : { 'filename' : 'str' } }

##
# @FirmwareMemoryUefiVars:
#
# Contains information needed to set up the "uefi-vars" device
# to provide UEFI variable store access to the firmware.
#
# @template: The path to the UEFI JSON variable store template
#     compatible with the firmware.  Management software instantiates
#     an individual copy -- a specific UEFI variable store file --
#     from @template for each new virtual machine definition created.
#     @template itself is never mapped into virtual machines, only
#     individual copies of it are.  The file created by copying
#     @template is used for persistently storing the non-volatile
#     UEFI variables of a virtual machine definition.  The
#     corresponding QEMU command line options are
#
#     ::
#
#         -device uefi-vars-x64,jsonfile=PATH_TO_PRIVATE_FILE
#
#     for x86_64 virtual machines, or
#
#     ::
#
#         -device uefi-vars-sysbus,jsonfile=PATH_TO_PRIVATE_FILE
#
#     for other UEFI architectures (aarch64, riscv64, loongarch64).
#
# Since: 11.0
##
{ 'struct' : 'FirmwareMemoryUefiVars',
  'data'   : { 'template' : 'str' }}

##
# @FirmwareMappingMemory:
#
# Describes loading and mapping properties for the firmware
# executable, when @FirmwareDevice is @memory.
#
# @filename: Identifies the firmware executable.  The firmware
#     executable may be shared by multiple virtual machine
#     definitions.  The corresponding QEMU command line option is
#     "-bios @filename".
#
# @uefi-vars: Information specific to firmware builds that expect the
#     "uefi-vars" device to be used to provide access to the UEFI
#     variable store.  If the mapping contains this member, the
#     firmware descriptor must advertise both the @uefi interface
#     from @FirmwareOSInterface and the @host-uefi-vars feature from
#     @FirmwareFeature.  (Since 11.0)
#
# Since: 3.0
##
{ 'struct' : 'FirmwareMappingMemory',
  'data'   : { 'filename' : 'str',
               '*uefi-vars' : 'FirmwareMemoryUefiVars' } }

##
# @FirmwareMappingIgvm:
#
# Describes loading and mapping properties for the firmware
# executable, when @FirmwareDevice is @igvm.
#
# @filename: Identifies the IGVM file containing the firmware
#     executable along with other information used to configure the
#     initial state of the guest.  The IGVM file may be shared by
#     multiple virtual machine definitions.  This corresponds to
#     creating an object on the command line with "-object igvm-cfg,
#     file=@filename".
#
# Since: 10.1
##
{ 'struct' : 'FirmwareMappingIgvm',
  'data'   : { 'filename' : 'str' } }

##
# @FirmwareMapping:
#
# Provides a discriminated structure for firmware to describe its
# loading / mapping properties.
#
# @device: Selects the device type that the firmware must be mapped
#     into.
#
# Since: 3.0
##
{ 'union'         : 'FirmwareMapping',
  'base'          : { 'device' : 'FirmwareDevice' },
  'discriminator' : 'device',
  'data'          : { 'flash'  : 'FirmwareMappingFlash',
                      'kernel' : 'FirmwareMappingKernel',
                      'memory' : 'FirmwareMappingMemory',
                      'igvm'   : 'FirmwareMappingIgvm' } }

##
# @Firmware:
#
# Describes a firmware (or a firmware use case) to management
# software.
#
# It is possible for multiple @Firmware elements to match the search
# criteria of management software.  Applications thus need rules to
# pick one of the many matches, and users need the ability to override
# distro defaults.
#
# It is recommended to create firmware JSON files (each containing a
# single @Firmware root element) with a double-digit prefix, for
# example "50-ovmf.json", "50-seabios-256k.json", etc, so they can be
# sorted in predictable order.  The firmware JSON files should be
# searched for in three directories:
#
# - /usr/share/qemu/firmware -- populated by distro-provided firmware
#                               packages (XDG_DATA_DIRS covers
#                               /usr/share by default),
#
# - /etc/qemu/firmware -- exclusively for sysadmins' local additions,
#
# - $XDG_CONFIG_HOME/qemu/firmware -- exclusively for per-user local
#                                     additions (XDG_CONFIG_HOME
#                                     defaults to $HOME/.config).
#
# Top-down, the list of directories goes from general to specific.
#
# Management software should build a list of files from all three
# locations, then sort the list by filename (i.e., last pathname
# component).  Management software should choose the first JSON file
# on the sorted list that matches the search criteria.  If a more
# specific directory has a file with same name as a less specific
# directory, then the file in the more specific directory takes
# effect.  If the more specific file is zero length, it hides the less
# specific one.
#
# For example, if a distro ships
#
# - /usr/share/qemu/firmware/50-ovmf.json
#
# - /usr/share/qemu/firmware/50-seabios-256k.json
#
# then the sysadmin can prevent the default OVMF being used at all
# with
#
#   $ touch /etc/qemu/firmware/50-ovmf.json
#
# The sysadmin can replace/alter the distro default OVMF with
#
#   $ vim /etc/qemu/firmware/50-ovmf.json
#
# or they can provide a parallel OVMF with higher priority
#
#   $ vim /etc/qemu/firmware/10-ovmf.json
#
# or they can provide a parallel OVMF with lower priority
#
#   $ vim /etc/qemu/firmware/99-ovmf.json
#
# @description: Provides a human-readable description of the firmware.
#     Management software may or may not display @description.
#
# @interface-types: Lists the types of interfaces that the firmware
#     can expose to the guest OS.  This is a non-empty, ordered list;
#     entries near the beginning of @interface-types are considered
#     more native to the firmware, and/or to have a higher quality
#     implementation in the firmware, than entries near the end of
#     @interface-types.
#
# @mapping: Describes the loading / mapping properties of the
#     firmware.
#
# @targets: Collects the target architectures (QEMU system emulators)
#     and their machine types that may execute the firmware.
#
# @features: Lists the features that the firmware supports, and the
#     platform requirements it presents.
#
# @tags: A list of auxiliary strings associated with the firmware for
#     which @description is not appropriate, due to the latter's
#     possible exposure to the end-user.  @tags serves development and
#     debugging purposes only, and management software shall
#     explicitly ignore it.
#
# Since: 3.0
#
# .. qmp-example::
#
#     {
#         "description": "SeaBIOS",
#         "interface-types": [
#             "bios"
#         ],
#         "mapping": {
#             "device": "memory",
#             "filename": "/usr/share/seabios/bios-256k.bin"
#         },
#         "targets": [
#             {
#                 "architecture": "i386",
#                 "machines": [
#                     "pc-i440fx-*",
#                     "pc-q35-*"
#                 ]
#             },
#             {
#                 "architecture": "x86_64",
#                 "machines": [
#                     "pc-i440fx-*",
#                     "pc-q35-*"
#                 ]
#             }
#         ],
#         "features": [
#             "acpi-s3",
#             "acpi-s4"
#         ],
#         "tags": [
#             "CONFIG_BOOTSPLASH=n",
#             "CONFIG_ROM_SIZE=256",
#             "CONFIG_USE_SMM=n"
#         ]
#     }
#
#     {
#         "description": "OVMF with SB+SMM, empty varstore",
#         "interface-types": [
#             "uefi"
#         ],
#         "mapping": {
#             "device": "flash",
#             "executable": {
#                 "filename": "/usr/share/OVMF/OVMF_CODE.secboot.fd",
#                 "format": "raw"
#             },
#             "nvram-template": {
#                 "filename": "/usr/share/OVMF/OVMF_VARS.fd",
#                 "format": "raw"
#             }
#         },
#         "targets": [
#             {
#                 "architecture": "x86_64",
#                 "machines": [
#                     "pc-q35-*"
#                 ]
#             }
#         ],
#         "features": [
#             "acpi-s3",
#             "amd-sev",
#             "requires-smm",
#             "secure-boot",
#             "verbose-dynamic"
#         ],
#         "tags": [
#             "-a IA32",
#             "-a X64",
#             "-p OvmfPkg/OvmfPkgIa32X64.dsc",
#             "-t GCC48",
#             "-b DEBUG",
#             "-D SMM_REQUIRE",
#             "-D SECURE_BOOT_ENABLE",
#             "-D FD_SIZE_4MB"
#         ]
#     }
#
#     {
#         "description": "OVMF with SB+SMM, SB enabled, MS certs enrolled",
#         "interface-types": [
#             "uefi"
#         ],
#         "mapping": {
#             "device": "flash",
#             "executable": {
#                 "filename": "/usr/share/OVMF/OVMF_CODE.secboot.fd",
#                 "format": "raw"
#             },
#             "nvram-template": {
#                 "filename": "/usr/share/OVMF/OVMF_VARS.secboot.fd",
#                 "format": "raw"
#             }
#         },
#         "targets": [
#             {
#                 "architecture": "x86_64",
#                 "machines": [
#                     "pc-q35-*"
#                 ]
#             }
#         ],
#         "features": [
#             "acpi-s3",
#             "amd-sev",
#             "enrolled-keys",
#             "requires-smm",
#             "secure-boot",
#             "verbose-dynamic"
#         ],
#         "tags": [
#             "-a IA32",
#             "-a X64",
#             "-p OvmfPkg/OvmfPkgIa32X64.dsc",
#             "-t GCC48",
#             "-b DEBUG",
#             "-D SMM_REQUIRE",
#             "-D SECURE_BOOT_ENABLE",
#             "-D FD_SIZE_4MB"
#         ]
#     }
#
#     {
#         "description": "OVMF with SEV-ES support",
#         "interface-types": [
#             "uefi"
#         ],
#         "mapping": {
#             "device": "flash",
#             "executable": {
#                 "filename": "/usr/share/OVMF/OVMF_CODE.fd",
#                 "format": "raw"
#             },
#             "nvram-template": {
#                 "filename": "/usr/share/OVMF/OVMF_VARS.fd",
#                 "format": "raw"
#             }
#         },
#         "targets": [
#             {
#                 "architecture": "x86_64",
#                 "machines": [
#                     "pc-q35-*"
#                 ]
#             }
#         ],
#         "features": [
#             "acpi-s3",
#             "amd-sev",
#             "amd-sev-es",
#             "verbose-dynamic"
#         ],
#         "tags": [
#             "-a X64",
#             "-p OvmfPkg/OvmfPkgX64.dsc",
#             "-t GCC48",
#             "-b DEBUG",
#             "-D FD_SIZE_4MB"
#         ]
#     }
#
#     {
#         "description": "UEFI firmware for ARM64 virtual machines",
#         "interface-types": [
#             "uefi"
#         ],
#         "mapping": {
#             "device": "flash",
#             "executable": {
#                 "filename": "/usr/share/AAVMF/AAVMF_CODE.fd",
#                 "format": "raw"
#             },
#             "nvram-template": {
#                 "filename": "/usr/share/AAVMF/AAVMF_VARS.fd",
#                 "format": "raw"
#             }
#         },
#         "targets": [
#             {
#                 "architecture": "aarch64",
#                 "machines": [
#                     "virt-*"
#                 ]
#             }
#         ],
#         "features": [
#
#         ],
#         "tags": [
#             "-a AARCH64",
#             "-p ArmVirtPkg/ArmVirtQemu.dsc",
#             "-t GCC48",
#             "-b DEBUG",
#             "-D DEBUG_PRINT_ERROR_LEVEL=0x80000000"
#         ]
#     }
##
{ 'struct' : 'Firmware',
  'data'   : { 'description'     : 'str',
               'interface-types' : [ 'FirmwareOSInterface' ],
               'mapping'         : 'FirmwareMapping',
               'targets'         : [ 'FirmwareTarget' ],
               'features'        : [ 'FirmwareFeature' ],
               'tags'            : [ 'str' ] } }
