vdev gic

Emulate an ARM standard Generic Interrupt Controller

Synopsis:

vdev gic options

Options:

gicc guest_address
Provide the guest-physical address of the virtual GIC's CPU registers.
gicd guest_address
Provide the guest-physical address of the virtual GIC's distributor registers.
gicr guest_address
Provide the guest-physical address of the virtual GIC's redistributor registers.
Note:
This option is for a version 3 virtual GIC only; if you set it but specify 2 for the version option, the VM setup will fail and thus qvm will abort.
host-gicd host_address
Deprecated. Use the host-paddr-gicd configuration variable, as described in the VM Configuration Reference chapter.
host-gich host_address[/cpu/spacing]{,host_address[/cpu/spacing]}
Deprecated. Use the host-paddr-gich configuration variable, as described in the VM Configuration Reference chapter.
host-gicr host_address
Deprecated. Use the host-paddr-gicr configuration variable, as described in the VM Configuration Reference chapter.
host-gicv host_address
Deprecated. Use the host-paddr-gicv configuration variable, as described 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.

its-prealloc num_dts[, num_itts]
Pre-allocate memory for the ITS data structures to avoid allocation at runtime. The first argument specifies the number of device table entries while the second argument, if given, specifies the number of interrupt translation table entries.
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.

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.
Note:
This option is for a version 3 virtual GIC only; if you set it but specify 2 for the version option, the VM setup will fail and thus qvm will abort.
version number
Provide the version number of the virtual GIC to be presented to the guest. Currently acceptable values are 2 and 3. The default value in this release is 3, but if the underlying hardware uses GICv2 then 2 must be specified.

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. This release supports versions 2 (GICv2) and 3 (GICv3). Because this 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 none is available from the board or its information 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 these addresses are:
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). For more information, see asinfo in the System Page chapter in Building Embedded Systems.

Page updated: