vgic-v3: Ignore writes to ISACTIVER{nE}N when eSPI is not used

Prior to introducing GICv3 eSPI support, writes to these registers were
ignored. Now the behavior is changed and we inject fault to the guests.
According to documentation, eSPI registers are treated as RES0, when
GICD_TYPER.ESPI is 0 (this would be the case when CONFIG_GICV3_ESPI=n or
nr_espis is 0). Restore the previous behavior by checking whether eSPI
is in use or not.

Fixes: 93eecb2c4b ("xen/arm: vgic-v3: add emulation of GICv3.1 eSPI registers")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
Michal Orzel authored and Stefano Stabellini committed 2025-12-04 15:16:38 -08:00
1 parent 2d9908a1d0
commit 351d41e8ae
1 file changed
+9
+9
View File
@@ -884,9 +884,18 @@ static int __vgic_v3_distr_common_mmio_write(const char *name, struct vcpu *v,
"%pv: %s: unhandled word write %#"PRIregister" to ISACTIVER%d\n",
v, name, r, reg - GICD_ISACTIVER);
else
{
#ifdef CONFIG_GICV3_ESPI
if ( !v->domain->arch.vgic.nr_espis )
goto write_ignore;
printk(XENLOG_G_ERR
"%pv: %s: unhandled word write %#"PRIregister" to ISACTIVER%dE\n",
v, name, r, reg - GICD_ISACTIVERnE);
#else
goto write_ignore;
#endif
}
return 0;
case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN):
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.