Revert "xen/arm: vgic-v3: Delay the initialization of the domain information"

This reverts commit 703d9d5ec1.  The domain
creation logic has been adjusted to set up d->max_vcpus early enough to be
usable in vgic_v3_domain_init().

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
Andrew Cooper committed 2018-11-15 11:11:30 +00:00
1 parent 344214c968
commit 2a8922cff3
1 file changed
+2 -27
+2 -27
View File
@@ -1573,11 +1573,9 @@ static const struct mmio_handler_ops vgic_distr_mmio_handler = {
.write = vgic_v3_distr_mmio_write,
};
static int vgic_v3_real_domain_init(struct domain *d);
static int vgic_v3_vcpu_init(struct vcpu *v)
{
int i, rc;
int i;
paddr_t rdist_base;
struct vgic_rdist_region *region;
unsigned int last_cpu;
@@ -1585,19 +1583,6 @@ static int vgic_v3_vcpu_init(struct vcpu *v)
/* Convenient alias */
struct domain *d = v->domain;
/*
* This is the earliest place where the number of vCPUs is
* known. This is required to initialize correctly the vGIC v3
* domain structure. We only to do that when vCPU 0 is
* initilialized.
*/
if ( v->vcpu_id == 0 )
{
rc = vgic_v3_real_domain_init(d);
if ( rc )
return rc;
}
/*
* Find the region where the re-distributor lives. For this purpose,
* we look one region ahead as we have only the first CPU in hand.
@@ -1660,7 +1645,7 @@ static inline unsigned int vgic_v3_max_rdist_count(struct domain *d)
GUEST_GICV3_RDIST_REGIONS;
}
static int vgic_v3_real_domain_init(struct domain *d)
static int vgic_v3_domain_init(struct domain *d)
{
struct vgic_rdist_region *rdist_regions;
int rdist_count, i, ret;
@@ -1763,16 +1748,6 @@ static int vgic_v3_real_domain_init(struct domain *d)
return 0;
}
static int vgic_v3_domain_init(struct domain *d)
{
/*
* The domain initialization for vGIC v3 is delayed until the first vCPU
* is created. This because the initialization may require to know the
* number of vCPUs that is not known when creating the domain.
*/
return 0;
}
static void vgic_v3_domain_free(struct domain *d)
{
vgic_v3_its_free_domain(d);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.