We expect mmio read handlers to leave the bits above the access size zeroed. Add an ASSERT to check this aspect of read handler behavior.
Suggested-by: Roger Pau Monné <roger....@citrix.com> Signed-off-by: Stewart Hildebrand <stewart.hildebr...@amd.com> Acked-by: Julien Grall <jgr...@amazon.com> --- There's no need to wait for the rest of the series to commit this patch. v18->v19: * add Julien's A-b * s/GENMASK_ULL/GENMASK/ v17->v18: * no change v16->v17: * new patch See https://lore.kernel.org/xen-devel/bc6660ef-59f1-4514-9792-067d987e3...@xen.org/ Also see 7db7bd0f319f ("arm/vpci: honor access size when returning an error") Also see xen/arch/arm/ioreq.c:handle_ioserv() --- xen/arch/arm/io.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xen/arch/arm/io.c b/xen/arch/arm/io.c index 653428e16c1f..5a4b0e8f25c6 100644 --- a/xen/arch/arm/io.c +++ b/xen/arch/arm/io.c @@ -37,6 +37,8 @@ static enum io_state handle_read(const struct mmio_handler *handler, if ( !handler->ops->read(v, info, &r, handler->priv) ) return IO_ABORT; + ASSERT((r & ~GENMASK((1U << info->dabt.size) * 8 - 1, 0)) == 0); + r = sign_extend(dabt, r); set_user_reg(regs, dabt.reg, r); -- 2.49.0