@@ -1627,6 +1627,10 @@ static int vgic_v3_domain_init(struct domain *d)
d->arch.vgic.rdist_regions[0].first_cpu = 0;
}
+ /*
+ * For a hardware domain, this will iterate over the host ITSes
+ * and maps one virtual ITS per host ITS at the same address.
+ */
ret = vgic_v3_its_init_domain(d);
if ( ret )
return ret;
@@ -115,6 +115,7 @@ struct arch_domain
spinlock_t its_devices_lock; /* Protects the its_devices tree */
struct radix_tree_root pend_lpi_tree; /* Stores struct pending_irq's */
rwlock_t pend_lpi_tree_lock; /* Protects the pend_lpi_tree */
+ struct list_head vits_list; /* List of virtual ITSes */
bool rdists_enabled; /* Is any redistributor enabled? */
bool has_its;
#endif
To prepare for virtual ITS support, add a list head to struct domain's vgic fields to be later able to walk over all instantiated virtual ITSes. Also add a comment explaining what to expect from vgic_v3_its_init_domain(). Signed-off-by: Andre Przywara <andre.przywara@arm.com> --- xen/arch/arm/vgic-v3.c | 4 ++++ xen/include/asm-arm/domain.h | 1 + 2 files changed, 5 insertions(+)