While expanding byte accesses to full words, we forgot to adjust the address as well. This led to unaligned word accesses on writes, followed by hypervisor aborts.
Signed-off-by: Jan Kiszka <[email protected]> --- This didn't affect Linux cells as they are only doing word accesses. hypervisor/arch/arm/gic-common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hypervisor/arch/arm/gic-common.c b/hypervisor/arch/arm/gic-common.c index ff32114..b8dd99a 100644 --- a/hypervisor/arch/arm/gic-common.c +++ b/hypervisor/arch/arm/gic-common.c @@ -176,10 +176,10 @@ static enum mmio_result handle_irq_target(struct mmio_access *mmio, } /* - * The registers are byte-accessible, extend the access to a word if - * necessary. + * The registers are byte-accessible, but we always do word accesses. */ offset = spi % 4; + mmio->address &= ~0x3; mmio->value <<= 8 * offset; mmio->size = 4; spi -= offset; -- 2.1.4 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
