Emulate an ARM standard Generic Interrupt Controller (GICv2 or
GICv3)
Synopsis:
vdev gic options
Options:
- gicc
guest_address
- Provide the guest-physical address of the virtual GIC's CPU registers.
- gicr
guest_address
- GICv3 and more recent only. Provide the guest-physical address of the
virtual GIC's redistributor registers.
- If the gicr option is specified, the guest is presented
with a GICv3 vdev (equivalent to specifying version 3; see
version below).
- host-gicd
host_address
- Deprecated. Use set
host-paddr-gicd (see the host-paddr-gicd variable in the VM Configuration Reference chapter).
- host-gich
host_address[/cpu/spacing]{,host_address[/cpu/spacing]}
- Deprecated. Use set
host-paddr-gich (see the host-paddr-gich variable in the VM Configuration Reference chapter).
- host-gicv
host_address
- Deprecated. Use set
host-paddr-gicv (see the host-paddr-gicv variable in the VM Configuration Reference chapter).
- its
address
-
Present the guest with virtualized Interrupt Translation Service (ITS)
hardware at the guest-physical address specified by
address.
- ITS hardware isn't useful without LPIs, so if you specify the
its option, you must also specify the num-lpis option.
- If the its option is specified, the guest is presented with
a GICv3 vdev (equivalent to specifying version 3; see version below).
- loc
address
- Provide the guest-physical address of the GIC distributor registers.
- msi
address,
base_intr,num_intrs
-
Create a Message Signaled Interrupt (MSI) device frame at the physical
address specified by address.
- The base_intr argument specifies the first interrupt
number the frame allows, and num_intrs specifies the
number of interrupts allowed. Thus, the highest interrupt allowed is
base_intr + num_intrs
- 1.
- Use this option only when presenting a GICv2 to the guest. If a GICv3
is specified, MSIs are automatically available (see version below).
Note: When presenting a vdev or passing through a device requiring
MSI or MSI-X, you must make an MSI mechanism available to the guest that
uses this vdev or device.
- num-lpis
number
-
Set the number of Locality-specific Peripheral Interrupts (LPIs) that will
be made available to the guest. The number argument must
be a value from 8192 to 65536.
- If the num-lpis option is specified, the guest is presented
with a GICv3 vdev (equivalent to specifying version 3; see
version below).
- version
number
- Provide the version number of the virtual GIC to be presented to the guest.
Currently supported values for number are
2 and 3; 4 is
permitted, but GICv4 is not yet supported.
- If this option isn't specified, the default: 2 (two) is
assumed, unless num-lpis or gicr is
specified (see gicr and
num-lpis above).
For a list of options available to all vdevs, see Common vdev options earlier in this chapter.
Description:
ARM only. Implicit (see Implicit vdevs).
The gic vdev emulates an ARM standard Generic Interrupt
Controller (GICv2 or GICv3). Since it is an implicit vdev, you need to add
configuration information for it only if you want to use non-default behavior
or provide information to be used in case information is not available
from the board or is incorrect.
If none of gicc, gicd, or loc is
specified, the qvm process assumes the ARM foundation model
addresses. For GICv2 these addresses are:
gicc=0x2f002000, gicd=0x2f001000
For GICv3 or GICv4, the qvm process assumes the following
addresses:
gicc=0x2c000000, gicd=0x2f000000, gicr=0x2f100000
If some addresses are specified but others missing, the qvm
process places the gicc registers after the gicd
registers (GICv2) or after the gicr registers (GICv3 and GICv4).
For more information, see asinfo in the System Page chapter in Building
Embedded Systems.
Related configuration variables
There are configuration variables that are specific to the vdev gic. For details,
see About the set
host-* arguments in the VM Configuration Reference chapter.