mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/arm: vgic: Correctly calculate GICD_TYPER.ITLinesNumber
The formula of GICD_TYPER.ITLinesNumber is 32(N + 1). As the number of SPIs suppported by the domain may not be a multiple of 32, we have to round up the number before using it. At the same time remove the mask GICD_TYPE_LINES which is pointless. Signed-off-by: Julien Grall <julien.grall@linaro.org> Acked-by: Ian Campbell <ian.campbell@citrix.com>
This commit is contained in:
1 parent
7f88bfeeea
commit
e7153f3775
2 files changed
+2
-2
No files matched your search
@@ -55,7 +55,7 @@ static int vgic_v2_distr_mmio_read(struct vcpu *v, mmio_info_t *info)
|
||||
/* No secure world support for guests. */
|
||||
vgic_lock(v);
|
||||
*r = ( ((v->domain->max_vcpus - 1) << GICD_TYPE_CPUS_SHIFT) )
|
||||
|( ((v->domain->arch.vgic.nr_spis / 32)) & GICD_TYPE_LINES );
|
||||
| DIV_ROUND_UP(v->domain->arch.vgic.nr_spis, 32);
|
||||
vgic_unlock(v);
|
||||
return 1;
|
||||
case GICD_IIDR:
|
||||
|
||||
@@ -700,7 +700,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mmio_info_t *info)
|
||||
if ( dabt.size != DABT_WORD ) goto bad_width;
|
||||
/* No secure world support for guests. */
|
||||
*r = ((ncpus - 1) << GICD_TYPE_CPUS_SHIFT |
|
||||
((v->domain->arch.vgic.nr_spis / 32) & GICD_TYPE_LINES));
|
||||
DIV_ROUND_UP(v->domain->arch.vgic.nr_spis, 32));
|
||||
|
||||
*r |= (irq_bits - 1) << GICD_TYPE_ID_BITS_SHIFT;
|
||||
|
||||
|
||||