mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
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:
1 parent
344214c968
commit
2a8922cff3
1 file changed
+2
-27
+2
-27
@@ -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);
|
||||
|
||||