This memory is not correctly aligned and cannot be registered by vDPA and VFIO.
An error is reported for vhost-vdpa case: qemu-kvm: vhost_vdpa_listener_region_add received unaligned region To make it ignored by VFIO and vDPA devices, mark it as RAM_PROTECTED. The RAM_PROTECTED flag has been introduced to skip memory region that looks like RAM but is not accessible via normal mechanims, including DMA. See 56918a126a ("memory: Add RAM_PROTECTED flag to skip IOMMU mappings") Bug: https://bugzilla.redhat.com/show_bug.cgi?id=2141965 cc: peter.mayd...@linaro.org cc: marcandre.lur...@redhat.com cc: eric.au...@redhat.com cc: m...@redhat.com cc: jasow...@redhat.com Signed-off-by: Laurent Vivier <lviv...@redhat.com> --- hw/tpm/tpm_crb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c index ea930da545af..0a93c488f2fa 100644 --- a/hw/tpm/tpm_crb.c +++ b/hw/tpm/tpm_crb.c @@ -296,7 +296,7 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp) memory_region_init_io(&s->mmio, OBJECT(s), &tpm_crb_memory_ops, s, "tpm-crb-mmio", sizeof(s->regs)); - memory_region_init_ram(&s->cmdmem, OBJECT(s), + memory_region_init_ram_protected(&s->cmdmem, OBJECT(s), "tpm-crb-cmd", CRB_CTRL_CMD_SIZE, errp); memory_region_add_subregion(get_system_memory(), -- 2.41.0