|
|
@@ -59,6 +59,13 @@ bool vgic_supports_direct_msis(struct kvm *kvm)
|
|
|
return kvm_vgic_global_state.has_gicv4 && vgic_has_its(kvm);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * The Revision field in the IIDR have the following meanings:
|
|
|
+ *
|
|
|
+ * Revision 2: Interrupt groups are guest-configurable and signaled using
|
|
|
+ * their configured groups.
|
|
|
+ */
|
|
|
+
|
|
|
static unsigned long vgic_mmio_read_v3_misc(struct kvm_vcpu *vcpu,
|
|
|
gpa_t addr, unsigned int len)
|
|
|
{
|
|
|
@@ -471,7 +478,7 @@ static const struct vgic_register_region vgic_v3_dist_registers[] = {
|
|
|
vgic_mmio_read_rao, vgic_mmio_write_wi, 4,
|
|
|
VGIC_ACCESS_32bit),
|
|
|
REGISTER_DESC_WITH_BITS_PER_IRQ_SHARED(GICD_IGROUPR,
|
|
|
- vgic_mmio_read_rao, vgic_mmio_write_wi, NULL, NULL, 1,
|
|
|
+ vgic_mmio_read_group, vgic_mmio_write_group, NULL, NULL, 1,
|
|
|
VGIC_ACCESS_32bit),
|
|
|
REGISTER_DESC_WITH_BITS_PER_IRQ_SHARED(GICD_ISENABLER,
|
|
|
vgic_mmio_read_enable, vgic_mmio_write_senable, NULL, NULL, 1,
|
|
|
@@ -544,7 +551,7 @@ static const struct vgic_register_region vgic_v3_rdbase_registers[] = {
|
|
|
|
|
|
static const struct vgic_register_region vgic_v3_sgibase_registers[] = {
|
|
|
REGISTER_DESC_WITH_LENGTH(GICR_IGROUPR0,
|
|
|
- vgic_mmio_read_rao, vgic_mmio_write_wi, 4,
|
|
|
+ vgic_mmio_read_group, vgic_mmio_write_group, 4,
|
|
|
VGIC_ACCESS_32bit),
|
|
|
REGISTER_DESC_WITH_LENGTH(GICR_ISENABLER0,
|
|
|
vgic_mmio_read_enable, vgic_mmio_write_senable, 4,
|