The GICH_LR<n> characteristics are:
These registers provide context information for the virtual CPU interface.
This register is present only when FEAT_GICv3_LEGACY is implemented and EL2 is implemented. Otherwise, direct accesses to GICH_LR<n> are RES0.
This register is available when the GIC implementation supports interrupt virtualization.
A maximum of 16 List registers can be provided. GICH_VTR.ListRegs defines the number implemented. Unimplemented List registers are RAZ/WI.
GICH_LR<n> is a 32-bit register.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
HW | Group | State | Priority | RES0 | pINTID | vINTID |
Indicates whether this virtual interrupt is a hardware interrupt, meaning that it corresponds to a physical interrupt. Deactivation of the virtual interrupt also causes the deactivation of the physical interrupt corresponding to the INTID:
HW | Meaning |
---|---|
0b0 |
This interrupt is triggered entirely in software. No notification is sent to the Distributor when the virtual interrupt is deactivated. |
0b1 | A hardware interrupt. A deactivate interrupt request is sent to the Distributor when the virtual interrupt is deactivated, using GICH_LR<n>.pINTID to indicate the physical interrupt identifier. If GICV_CTLR.EOImode == 0, this request corresponds to a write to GICV_EOIR or GICV_AEOIR, otherwise it corresponds to a write to GICV_DIR. |
The reset behavior of this field is:
Indicates whether the interrupt is Group 0 or Group 1:
Group | Meaning |
---|---|
0b0 |
Group 0 virtual interrupt. GICV_CTLR.FIQEn determines whether it is signaled as a virtual IRQ or as a virtual FIQ, and GICV_CTLR.EnableGrp0 enables signaling of this interrupt to the virtual machine. |
0b1 |
Group 1 virtual interrupt, signaled as a virtual IRQ. GICV_CTLR.EnableGrp1 enables signaling of this interrupt to the virtual machine. |
GICV_CTLR.CBPR controls whether GICV_BPR or GICV_ABPR determines if a pending Group 1 interrupt has sufficient priority to preempt current execution.
The reset behavior of this field is:
The state of the interrupt. This field has one of the following values:
State | Meaning |
---|---|
0b00 |
Inactive |
0b01 |
Pending |
0b10 |
Active |
0b11 |
Active and pending |
The GIC updates these state bits as virtual interrupts proceed through the interrupt life cycle. Entries in the inactive state are ignored, except for the purpose of generating virtual maintenance interrupts.
For hardware interrupts, the active and pending state is held in the Distributor rather than the virtual CPU interface. A hypervisor must only use the active and pending state for software originated interrupts, which are typically associated with virtual devices, or for SGIs.
The reset behavior of this field is:
The priority of this interrupt.
The reset behavior of this field is:
Reserved, RES0.
The function of this field depends on the value of GICH_LR<n>.HW.
When GICH_LR<n>.HW == 0:
When GICH_LR<n>.HW == 1:
The reset behavior of this field is:
This INTID is returned to the VM when the interrupt is acknowledged through GICV_IAR. Each valid interrupt stored in the List registers must have a unique vINTID for that virtual CPU interface. If the value of vINTID is 1020-1023, behavior is UNPREDICTABLE.
The reset behavior of this field is:
This register is used only when System register access is not enabled. When System register access is enabled:
Component | Offset | Instance |
---|---|---|
GIC Virtual interface control | 0x0100 + (4 * n) | GICH_LR<n> |
This interface is accessible as follows:
26/03/2024 09:49; 67c0ae5282a7629ba0ea0ba7267b43cd4f7939f6
Copyright © 2010-2024 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.