mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
arm: vgic: Split vgic_domain_init() functionality into two functions
Separate the code logic that does the registration of vgic_v3/v2 ops to a new function domain_vgic_register(). The intention of this separation is to record the required mmio count in vgic_v3/v2_init() and pass it to function domain_io_init() in a follow-up patch patch. Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org> Reviewed-by: Julien Grall <julien.grall@arm.com> Acked-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
1 parent
f4b9488eaa
commit
ebc8c6cdeb
1 file changed
+21
-12
+21
-12
@@ -90,19 +90,8 @@ static void vgic_rank_init(struct vgic_irq_rank *rank, uint8_t index,
|
||||
rank->vcpu[i] = vcpu;
|
||||
}
|
||||
|
||||
int domain_vgic_init(struct domain *d, unsigned int nr_spis)
|
||||
static int domain_vgic_register(struct domain *d)
|
||||
{
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
d->arch.vgic.ctlr = 0;
|
||||
|
||||
/* Limit the number of virtual SPIs supported to (1020 - 32) = 988 */
|
||||
if ( nr_spis > (1020 - NR_LOCAL_IRQS) )
|
||||
return -EINVAL;
|
||||
|
||||
d->arch.vgic.nr_spis = nr_spis;
|
||||
|
||||
switch ( d->arch.vgic.version )
|
||||
{
|
||||
#ifdef CONFIG_HAS_GICV3
|
||||
@@ -121,6 +110,26 @@ int domain_vgic_init(struct domain *d, unsigned int nr_spis)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int domain_vgic_init(struct domain *d, unsigned int nr_spis)
|
||||
{
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
d->arch.vgic.ctlr = 0;
|
||||
|
||||
/* Limit the number of virtual SPIs supported to (1020 - 32) = 988 */
|
||||
if ( nr_spis > (1020 - NR_LOCAL_IRQS) )
|
||||
return -EINVAL;
|
||||
|
||||
d->arch.vgic.nr_spis = nr_spis;
|
||||
|
||||
ret = domain_vgic_register(d);
|
||||
if ( ret < 0 )
|
||||
return ret;
|
||||
|
||||
spin_lock_init(&d->arch.vgic.lock);
|
||||
|
||||
d->arch.vgic.shared_irqs =
|
||||
|
||||